add img

nobohan 2022-09-19 14:35:37 +02:00
parent 1d02cbecde
commit dccb158829

@ -2,14 +2,14 @@
## Introduction ## 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](http://geoportail.wallonie.be/catalogue/d594f5a3-34ac-4cc2-a357-aae5d5263f35.html) 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). 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](http://geoportail.wallonie.be/catalogue/d594f5a3-34ac-4cc2-a357-aae5d5263f35.html) 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. 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. 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 ## 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. 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: Pour utiliser cette page, suivre les instructions à l'écran. En particulier:
@ -19,56 +19,56 @@ Pour utiliser cette page, suivre les instructions à l'écran. En particulier:
Voici un exemple de cette page remplie, avec 3 champs à ajouter dans un rapport de visite: Voici un exemple de cette page remplie, avec 3 champs à ajouter dans un rapport de visite:
![Exemple de téléversement](img/form_biommap_upload.png)
## Via un script d'import ## Via un script d'import
### Fonctionnement du 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: 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:
```bash ```bash
(venv) python3 geojson2sql.py (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). 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. 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 ### 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. 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. 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: Certains champs doivent être obligatoirement remplis, comme:
- les champs `id_program` et `id_type` DOIVENT correspondre aux bonnes valeurs ! Le premier champ décidera à quel programme les sites seront rattachés. - les champs `id_program` et `id_type` DOIVENT correspondre aux bonnes valeurs ! Le premier champ décidera à quel programme les sites seront rattachés.
- le champ `id_site` dans la table `sites` et `visit` - le champ `id_site` dans la table `sites` et `visit`
- le champ `timestamp_create` dans la table `sites` et `visit` - le champ `timestamp_create` dans la table `sites` et `visit`
- le champ `geom` dans la table `sites` et contient la géométrie. - le champ `geom` dans la table `sites` et contient la géométrie.
- le champ `uuid_sinp` dans la table `sites` qui doit être un identifiant unique uuid - le champ `uuid_sinp` dans la table `sites` qui doit être un identifiant unique uuid
D'autres champs non obligatoires mais utiles sont: D'autres champs non obligatoires mais utiles sont:
- le champ `name` qui donnera le nom de l'élément. - le champ `name` qui donnera le nom de l'élément.
- le champ `obs_txt` qui donnera le nom de l'utilisateur. - le champ `obs_txt` qui donnera le nom de l'utilisateur.
Certaines valeurs dans le script seront converties automatiquement: 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 "__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 "__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 "__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). - 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`. 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. 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 ### 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. 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: Pour mémoire, voici la liste des colonnes et la liste des valeurs correspondantes pour la table des sites: