Exemple d'API REST minimale pour une diffusion simple du produit IGN Parcellaire Express.
Seules les parcelles cadastrales sont diffusées pour le moment.
Les outils suivants doivent être installés sur la machine hôte :
Trois containers sont utilisés :
parcellaire-express-importer
: Container en charge du téléchargement des donnnées et de leur import en baseparcellaire-express-postgis
: Base de données PostGISparcellaire-express-api
: API en Go
Il est possible de décommenter le service adminer
dans docker-compose.yml
pour ajouter une interface web d'exploration de la base de données.
- Le fichier
.env
regroupe l'ensemble des valeurs de configuration. On liste ci-dessous les options les plus utiles :- Configuration de l'importer
MAX_PARALLEL_DL
: Nombre de téléchargement d'archives de données simultanés. Fixé à4
par défaut.TEST_IMPORTER
: A passer à1
pour tester l'import de données sur une seule archive départementale.
- Configuration de la base de données
POSTGRES_PASSWORD
: Mot de passe de la base de données. A modifier.
- Configuration de l'API
API_PORT
: Port d'écoute de l'API. Fixé à8010
par défaut.MAX_FEATURE
: Nombre maximal d'objets retournés par l'API. Fixé à1000
par défaut.
- Configuration de l'importer
- Des options de configuration de PostgreSQL sont définies dans le fichier
docker-compose.yml
. Utiliser PGTune pour les adapter aux caractéristiques de la machine hôte.
-
Construction des images
docker-compose build
-
Lancement des containers via docker-compose
docker-compose up -d
-
Import des données en base (opérations longues pouvant être lancées dans un
screen
ou en utilisant l'option-d
dedocker-compose run
)-
Téléchargement des données du produit :
docker-compose run parcellaire-importer python3 /tmp/download-dataset.py
-
Mise en base des données du produit :
docker-compose run parcellaire-importer bash /tmp/import-data.sh
-
- GET
/parcelle/{idu}
: Récupération d'une parcelle à partir de son identifiant - GET
/parcelle?pos={pos}
ou/parcelle?lon={lon}&lat={lat}
: Recherche des parcelles intersectant une position donnée en coordonnées géographiques (WGS84) - GET
/parcelle?bbox={bbox}
ou/parcelle?lon_min={lon}&lat_min={lat}&lon_max={lon}&lat_max={lat}
: Recherche des parcelles intersectant une bounding box donnée en coordonnées géographiques (WGS84)
{idu}
: Identifiant unique de parcelle (ex:01053000BE0095
){lon}
: Longitude (décimal entre -180 et 180){lat}
: Latitude (décimal entre -90 et 90){pos}
: Position géographique composé de 2 coordonnées (lon,lat
){bbox}
: Bounding box composée de 4 coordonnées (lon_min,lat_min,lon_max,lat_max
)
Les résultats sont fournis au format GeoJSON.
- Sans suppression des données importées en base :
docker-compose down
- Avec suppression des données importées en base :
docker-compose down -v
- Paging des résultats
- Ajout de test unitaires
- Eventuel rapprochement avec OGC API Feature
- Gestion des autres classes du produit Parcellaire Express
- Fiabilisation