Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mborne/postgis-integration

[EXPERIMENTATION] Helper scripts to load several datasets into postgis (naturalearth, adminexpress, route500...)
https://github.com/mborne/postgis-integration

Last synced: 3 months ago
JSON representation

[EXPERIMENTATION] Helper scripts to load several datasets into postgis (naturalearth, adminexpress, route500...)

Awesome Lists containing this project

README

        

# postgis-integration

**!!! Warning : Personal and experimental project to explore opendata resources, not ready for production !!!**

## Description

> This repository contains helpers to integrate data in postgis and dataset integration scripts mainly focused on open datasets about France.

Ce dépôt contient :

* Des [utilitaires permettant d'écrire facilement des scripts d'intégration](helper) (appel à ogr2ogr, psql, etc.)
* Des [scripts d'intégration de données ouvertes dans postgis](datasets)

## Jeux de données

**ATTENTION** : Reportez-vous aux descriptions des jeux de données pour connaître les conditions d'utilisation et licences exactes (voir `homepage` dans les fichiers `config.json` pour obtenir plus d'information)

| Nom | Description |
| --------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [adminexpress](./datasets/adminexpress/config.json) | Région, département, commune, etc. (IGN) |
| [cadastre](./datasets/cadastre/config.json) | Commune, section, feuille, parcelle, bâtiment (DGFIP retravaillé par ETALAB) |
| [naturalearth](./datasets/naturalearth/config.json) | Jeux de données de couverture mondiale (Pays, ports, lacs, batymétrie, etc.) |
| [route500](./datasets/route500/config.json) | Réseau routier à petite échelle |

## Usage

### Installation des composants systèmes

| Nom | Description |
| ------- | ------------------------------------------------------------------------------ |
| nodejs | Script JS côté serveur |
| unzip | Extraction archive .zip |
| 7z | Extraction archive .7z (p7zip-full sur debian/ubuntu) |
| tar | Extraction archive .tar.gz, .tar.bz2 |
| ogr2ogr | Lecture des formats geojson, shapefile, CSV, etc. (gdal-bin sur debian/ubuntu) |
| psql | Chargement de données SQL (postgresql-client debian/ubuntu) |
| pg_dump | Génération d'export des données (postgresql-client debian/ubuntu) |

### Installation de l'utilitaire

```bash
git clone https://github.com/mborne/postgis-integration
cd postgis-integration
npm install
```

### Paramètres

Les scripts s'appuient sur des variables d'environnements :

| Variable | Description | Valeur par défaut | Obligatoire |
| ---------- | ------------------------- | -------------------------- | :---------: |
| PGHOST | Nom du serveur | localhost | NON |
| PGDATABASE | Nom de la base de données | `$USER` | NON |
| PGUSER | Utilisateur | `$USER` | NON |
| PGPASSWORD | Mot de passe utilisateur | Aucune | NON |
| DATA_DIR | Dossier de travail | `postgis-integration/data` | NON |

### Création de la base de données

```bash
createdb gis
psql -d gis -c "CREATE EXTENSION postgis"
```

### Import de jeux de données

```bash
PGDATABASE=gis bin/import.js adminexpress
#...
```

## Utilisation sous docker

```bash
docker build -t postgis-integration .
# avec docker-devbox/postgis et la configuration par défaut
docker run --rm -ti \
--net=devbox -e DEBUG=* -e PGHOST=postgis -e PGDATABASE=gis \
-e PGUSER=postgres -e PGPASSWORD=ChangeIt \
postgis-integration node bin/import.js adminexpress
```

## Conventions

### Organisation des fichiers

Pour chaque jeu de données, on retrouve les fichiers suivant :

| Fichier | Description |
| ---------------------------------- | --------------------------------------------- |
| datasets/{datasetName} | Dossier du jeu de données |
| datasets/{datasetName}/import.js | Script d'import du jeu de données |
| datasets/{datasetName}/config.json | Configuration du jeu de données (métadonnées) |

Le fichier `config.json` fournit les informations suivantes :

| Nom | Description | Exemple |
| ----------- | ------------------------------------------- | ------------------------------------------------------------------------------- |
| name | Identifiant du jeu de données | ban |
| description | Description du jeu de données en une phrase | Base Adresse Nationale |
| homepage | Page de présentation du jeu de données | https://www.data.gouv.fr/fr/datasets/ban-base-adresse-nationale/ |
| url | URL de téléchargement du jeu de données | https://adresse.data.gouv.fr/data/BAN_licence_gratuite_repartage_{CODE_DEP}.zip |
| version | Version du jeu de données | latest |

Remarque :

* `version=latest` traduit la possibilité pour le script de récupérer la dernière version du jeu de données
* l'URL peut contenir des paramètres évalués au niveau du script d'intégration (ex : `{CODE_DEP}`)

## License

[MIT](LICENSE)