Import / requalification de données externes
Introduction
Pour certains programmes, il est possible d'importer des données externes à GeoNature et de pouvoir les requalifier dans l'application GeoNature-citizen. L'intérêt est que cela permet de profiter d'un encodage déjà existant et qu'une partie des propriétés peuvent être directement importées, sans qu'il soit nécessaire de les mesurer/observer. Par exemple, nous avons importé des données issues du géoportail wallon indiquant les arbres remarquables dans le programme "Arbres" de Biommap. Des propriétés telles que la hauteur de l'arbre et la circonférence ont pu être importées. Nous avons également investigué l'import de données OpenStreetMap (arbres et haies).
A terme, cela permettrait d'améliorer des jeux de données existants, d'une part en ajoutant de nouveaux éléments et d'autre part en mettant à jour ou ajoutant des propriétés manquantes d'un élément existant. Biommap permet aussi de qualifier de manière plus riche ces données, notamment en permettant d'y adjoindre des photographies.
Cet import est possible par un script d'import qui génére des instructions SQL à affecter à la base de données, ou bien via l'interface d'administration. Historiquement, le script d'import a été développé en premier (en 2021), mais actuellement, la méthode via l'interface d'administration est à préferer.
Via l'interface admin
Une page spécifique a été mise en place dans l'interface d'admin (page "Téléversement"). Cette page permet de charger un fichier geojson de sites et de les importer dans la table des sites du programme voulu. Des informations peuvent être importées aussi dans la table des visites.
Pour utiliser cette page, suivre les instructions à l'écran. En particulier:
- il faut disposer d'un fichier geojson valide, et surtout dans le système de projection WGS84 (EPSG:4326).
- il est possible, mais non obligatoire, de spécifier un nom d'utilisateur pour cet import
- il est possible, mais non obligatoire, d'ajouter un rapport de visite pour chaque site importé et d'y stocker des informations présentes dans le fichier geojson, via le bouton "Ajouter une correspondance".
Voici un exemple de cette page remplie, avec 3 champs à ajouter dans un rapport de visite:
Via un script d'import
Fonctionnement du script d'import
La documentation technique pour utiliser le script d'import est écrite dans le dépôt (dossier utils
). Le script d'import est un script Python qui doit tourner dans un environnement virtuel. La commande est:
(venv) python3 geojson2sql.py
Ce script doit être adapté pour chaque source de données externes! Le script prend en entrée un fichier géographique de données externes au format geoJSON en WGS84 (EPSG:4326).
Le script génère des instructions SQL pour alimenter deux tables différentes: la table des sites et la table des visites.
Correspondance entre propriétés
Pour chaque propriété intéressante dans la donnée externe que l'on veut importer dans un programme GeoNature-citizen, il faut obligatoirement 1) que cette propriété existe dans le formulaire d'encodage et 2) réaliser une correspondance (mapping) entre le nom de cette propriété dans la couche externe et le nom de la propriété dans le formulaire d'encodage.
Le script d'importation crée des entrées dans la base de données en ne remplissant pas tous les champs de la table. Seuls les champs obligatoires (non-nullables) et les champs informatifs sont remplis.
Certains champs doivent être obligatoirement remplis, comme:
- les champs
id_program
etid_type
DOIVENT correspondre aux bonnes valeurs ! Le premier champ décidera à quel programme les sites seront rattachés. - le champ
id_site
dans la tablesites
etvisit
- le champ
timestamp_create
dans la tablesites
etvisit
- le champ
geom
dans la tablesites
et contient la géométrie. - le champ
uuid_sinp
dans la tablesites
qui doit être un identifiant unique uuid
D'autres champs non obligatoires mais utiles sont:
- le champ
name
qui donnera le nom de l'élément. - le champ
obs_txt
qui donnera le nom de l'utilisateur.
Certaines valeurs dans le script seront converties automatiquement:
- la valeur "ID" sera convertie en un identifiant unique pour le site qui sera créé en ajoutant 1000000 à l'index de la table geojson.
- La valeur "UUID" sera convertie en une formule qui crée une valeur uuid.
- la valeur "POINT" ou "LINESTRING" sera convertie en une formule PostGIS ST_GeomFromText basée sur les coordonnées du fichier geojson
- la valeur "NOW" sera convertie en une formule qui crée un horodatage (pour les champs timestamp).
Enfin, si les valeurs commencent par properties.
, elles seront mises en correspondance avec une propriété dans le geojson. Par exemple, properties.COMMENTAIR
.
Pour remplir la table des visites, la même fonction est appliquée. Mais il y a une autre convention spéciale qui s'applique pour construire les détails json de la visite : la valeur "JSON" sera convertie en une formule dédiée qui construira l'objet json dans la base de données.
Import des arbres & haies remarquables de Wallonie
La donnée a été téléchargée via la page http://geoportail.wallonie.be/catalogue/d594f5a3-34ac-4cc2-a357-aae5d5263f35.html et convertie au format geoJSON en WGS84 via QGIS.
Pour mémoire, voici la liste des colonnes et la liste des valeurs correspondantes pour la table des sites:
\scriptsize
column_list = ['id_site', 'uuid_sinp', 'id_program', 'name', 'geom', 'timestamp_create', 'id_type', 'obs_txt']
values_list = ['__ID__', '__UUID__', '2', 'properties.SPFR', '__POINT__', '__NOW__', '1', 'géoportail wallon' ]
\normalsize
Voici la liste des colonnes et la liste des valeurs correspondantes pour la table des visites:
\scriptsize
column_list = ['id_site', 'json_data', 'timestamp_create', 'obs_txt']
values_list = ['__ID__', '__JSON__', '__NOW__', 'import']
\normalsize