Aller au contenu

ODK pour la collecte de données géo dans PostGIS (⅓)#

📆 Date de publication initiale : 08 juin 2021

Mots-clés : ODK | PostgreSQL | PostGIS | Android

ODK PostGIS

Cette série de 3 articles vise à présenter Open Data Kit, qui est une solution de recueil de données sur téléphone Android, utilisée par le Conservatoire d'Espaces Naturels d'Occitanie, pour la collecte de données spatialisées de biodiversité, et leur intégration à une base de données PostGIS.

Ce premier article, introductif, présente le projet ODK, ses outils ainsi que les possibilités cartographiques.
Le second détaillera les possibilités de création de formulaire à travers l'exemple détaillé du formulaire généraliste du Conservatoire d'Espaces Naturels d'Occitanie.
Le dernier sera consacré à la récupération des données collectées dans une base de données PostGIS.

2ème partie : Création d'un formulaire ODK

Commenter cet article

Introduction à Open Data Kit#

Historique#

Projet initié en 2008 par Yaw Anokwa, l'actuel CEO de GetODK, ODK (Open Data Kit) est un ensemble d'outils open source pour la collecte de données sur téléphone, fonctionnant en mode déconnecté et dans des environnements contraints en terme de ressource et de connectivité.

ODK permet de réaliser des formulaires identiques à ce que vous feriez sur papier pour noter du texte et des nombres. Il permet aussi d’y ajouter des captures de son, d’images, de vidéo, de QR Code ou code-barre et d’interagir avec des applications externes et des capteurs, au milieu de nulle part, sans connexion. A tous ces types de données s’ajoutent les données géographiques (coordonnées GPS, points, lignes et polygones).
Les données collectées au sein des formulaires sont envoyées au serveur (ODK Central) dés lors qu’une connexion (GSM, WIFI) est disponible, parfois plusieurs semaines ou mois après le début de la campagne de terrain.

Exemples de cas d'utilisation significatifs#

Voici quelques exemples emblématiques d'utilisation Open Data Kit qui font office de référence :

  • Le ministère de l'agriculture nigérian a organisé la cartographie de 2 millions de fermes par 70 000 collecteurs, qui vont de ferme en ferme pour mesurer la ressource herbagère disponible et quantifier les intrants nécessaires au maintien de la fertilité des terres, afin d'assurer la disponibilité locale de nourriture pendant la pandémie.

  • ODK a été utilisé au Honduras, par 85 000 enseignants, pendant la pandémie afin d'évaluer la progression "académique" des étudiants pendant la période d'enseignement à distance avec ODK.

  • ODK est utilisé par des acteurs majeurs de l'aide humanitaire et de l'aide au développement tels que la Fédération Internationale de la Croix Rouge ou l'UNICEF (cas du suivi de la campagne de vaccination contre la rougeole et la polyomyélite en Ouganda).

  • L'Organisation Mondiale de la Santé l'utilise pour suivre l'évolution des maladies et faire du "contact tracking" pendant les épidémies

  • ODK fait partie de la boite à outils d'HotOSM

  • des structures bien plus "petites" comme les Conservatoires d'Espaces Naturels (CEN) utilisent la solution pour collecter des données relatives à la conservation de la nature.

Du côté des anecdotes chiffrées :

  • En 2020 ODK a été utilisé dans tous les pays du monde excepté au Groenland et en Corée du Nord !
  • ODK Collect a été téléchargé plus d'un million de fois sur le playstore de google.

Gouvernance et communauté#

logo Open Data Kit (ODK)

Du côté de la gouvernance, GetODK, la société qui développe ODK, est une équipe composée de 9 personnes qui s'appuie sur un comité technique, appelé TAB (Technical Advisory Board) impliquant des utilisateurs de toute la planète et de différents domaines. Ce TAB se réunit tous les 15 jours de manière très transparente.

team ODK

Le forum est le principal lieu d'échange entre utilisateurs et développeurs. Il compte 14 000 inscrits !
La communauté est assez exemplaire en ce sens qu'il y a beaucoup d'interactions entre utilisateurs qui y échangent conseils et bonnes pratiques. Le forum fait remonter les besoins des utilisateurs et les échanges sont riches avec les développeurs, toujours curieux de l'utilisation faite des outils.

C'est un lieu de discussion mondial, où il n'est pas rare d'échanger avec des utilisateurs de tous les continents en une journée. La bienveillance et l'entraide qui y règnent facilitent les échanges entre membres de tous niveaux et font de ce forum un "endroit" chaleureux !


Contexte d'utilisation au CEN Occitanie#

Le SI du CEN#

Cen Occitanie

Les conservatoires d'espaces naturels sont des structures associatives composées d'équipe pluri-disciplinaires (Ecologie, Botanique, Faunistique, Phytosociologie, Agriculture, Gestion administrative et financière, Informatique et Systèmes d'information). L'action des Cen se décline selon 5 axes : Connaître, Protéger, Gérer, Valoriser, Accompagner. La connaissance est la base de notre action.

Elle requiert des compétences techniques de reconnaissances des espèces et des habitats et des compétences dans la mise en œuvre d'outils de collecte, de consolidation et d'analyse des données collectées.

Notre SI se développe depuis 2007 autour d'une base de données PostgreSQL/PostGIS. Il s'est enrichi au fur et à mesure que nous y avons intégré des outils supportant PostgreSQL, qui est donc bien le cœur et la colonne vertébrale de notre SI :

Choix et intégration d'ODK#

En 2015, après que la solution nous avait été présentée par le CEN Rhône-Alpes, nous avons entrepris de mettre en place un formulaire de saisie mobile, correspondant aux données collectées dans notre appli web métier (SiCen).

Quelques arguments de poids nous ont convaincus d'utiliser ODK :

  • la possibilité de générer des formulaires très facilement, sans développement
  • l'utilisation par ODK de PostgreSQL comme base de données.
  • les zones dans lesquelles nous intervenons ne sont pas toujours bien connectées. L'outil utilisé devait donc permettre de travailler sans connexion et fournir un système de stockage stable et fiable.
  • il devait également être aussi facile à utiliser que possible et devait permettre une saisie contrôlée (vocabulaires contraints et données typées).

L'intégration de la solution à notre SI s'est faite naturellement. Les possibilités de PostgreSQL (triggers, FDW) ont assuré l'interaction entre le serveur Aggregate d'ODK et les autres outils et bases de données en place.

Depuis c'est la plateforme de reporting web Redash qui complète le SI.

La place d'ODK aujourd'hui#

ODK est devenu l'outil principal de collecte de données de terrain au sein du CEN Languedoc-Roussillon et prend le même chemin à l'échelle de l'Occitanie.

Les utilisateurs d'ODK chez nous sont initialement des naturalistes, spécialistes de diverses disciplines (botanique, faunistique, phytosociologie).

La saison de terrain est dense, les journées longues et le temps à consacrer à la saisie des données collectées est contraint. ODK nous a permis d'économiser ce temps de saisie (environ 4 jours/expert/an) pour en passer plus sur le terrain, ou à l'analyse de données et à la rédaction de documents.

Le SI actuel du CEN Occitanie peut-être schématisé ainsi :

Schéma SI CEN Occitanie

Nous utilisons actuellement une quinzaine de formulaires ODK pour :


Les outils de la "suite" ODK#

Les outils de la suite ODK sont sollicités en différents points du Système d'information géographiques (SIG) du Cen. Le serveur nommé Central est au centre du système. Collect (sur les téléphones) et Enketo sur Firefox proposent les interfaces de collecte de données.

place d'odk dans le SIG du Conservatoire d'espaces naturels

Collect#

C'est l'outil déployé sur les terminaux Android, qui sert les formulaires, permet de les remplir et envoie les données collectées au serveur.

Central#

C'est le serveur qui remplace désormais Aggregate. Il assure la gestion et la diffusion des formulaires, des utilisateurs, des droits de ces derniers et la collecte des "soumissions" (données envoyées par Collect).

ODK Central : page d'accueil Page d'un projet dans ODK Central

Documentation ODK Central

Enketo#

Central embarque Enketo de sorte que les formulaires réalisés sont désormais aussi utilisables en ligne à travers un navigateur et en mode déconnecté. A noter que depuis la version 1.2 publiée en mai 2021, l’édition des données envoyées au serveur est possible à travers cet outil (à des fins de correction ou révision).

Enketo : formulaire d'enquête sur les usagers d'ODK

Tableur / XLSForm#

ODK utilise un sous-ensemble de la norme XForms du W3C pour créer des formulaires (voir ici la documentation relative à ODK XForms).

Une norme intermédiaire nommée XLSForm permet de décrire très simplement le formulaire dans un tableur, selon un formalisme simple. C'est avec notre tableur (Calc, Excel, AirTable, NocoDB...) préféré que nous allons décrire notre formulaire dans ce formalisme.

XLSForm est utilisé par de nombreuses solutions (Enketo, Kobotoolbox, ONA). La plus connue des géomaticiens sera peut-être la plateforme Survey123 d'ESRI.

XLS Form est détaillé plus bas

XLSForm Online#

C'est un outil en ligne, qui permet de transformer le fichier xlsform en xml à charger sur le téléphone. Il n'est pas utile si vous utilisez Central, car ce dernier accepte directement le fichier xls.

Ouvrir XLSForm Online

ODK Build#

C'est l'éditeur WYSIWYG de formulaires. Nous ne le présenterons pas dans la série d'article, car nous avons toujours créé nos formulaires avec xlsform.

Documentation ODK Build

Briefcase#

Il permet de pousser des formulaires sur le serveur, d'y récupérer les données et médias "soumis" et aussi de récupérer les données et médias directement depuis votre téléphone, et donc d'utiliser la solution sans avoir déployé Central.

Documentation Briefcase

ODK Briefcase : récupération des données depuis Collect ODK Briefcase : récupération des données depuis Central

ODK Briefcase : paramétrage de l'export des données récupérées

Les outils communautaires#

Voici deux outils qui ne sont pas développés par l'équipe d'ODK, mais par des membres de la communauté, que nous commençons seulement à utiliser au CEN. C'est pour ces deux raisons qu'ils apparaissent en transparence sur le schéma.

QReal Time#

logo QGIS

L'extension QRealTime pour QGIS, développée par Shiva Reddy Koti et Prabhakar Alok Verma, permet d’afficher directement les données collectées dans QGIS depuis Central et aussi de créer des formulaires vierges à partir d'une couche. Elle est disponible directement depuis le gestionnaire d'extensions de QGIS.

QReal Time

ruODK#

logo R

ruODK est un client R pour l'API d'ODK Central, developpé par un membre du TAB (Florian Mayer), qui permet de mobiliser directement les données collectées dans R. Il est utilisé depuis peu dans la structure dans le cadre d'un travail de recherche mené sur les vieilles forêts.


XLSForm#

logo Excel

Un fichier XLSForm est un tableur enregistré au format XLS ou XLSX, respectant le standard XLSForm.

Il est composé d'au moins deux feuilles de calculs obligatoires :

  • survey : décrit le formulaire
  • choices : contient les listes de valeurs utilisées par les widgets de type "select"
  • settings (optionnelle)

Les colonnes utilisables dans chacune des feuilles sont normalisées, toutes ne sont pas obligatoires et vous pouvez ajouter des colonnes "personnelles" qui seront ignorées par l'application.

La feuille de calcul "survey"#

C'est dans cette feuille que sera décrite la logique du formulaire. Chaque question ou élément de structure (groupe de question, répétition) est typé (colonne type : quel widget sera utilisé pour afficher la question ? ) et nommé (colonne name) et étiquetté (colonne label). Ces trois colonnes sont obligatoires.

XLS-Form : feuille de calcul survey

Les listes de choix peuvent être filtrées (colonne choice_filter)

L'apparence des widgets et des groupes de questions peut être précisée (colonne appearance) et son affichage conditionné (colonne relevant)

Des contraintes peuvent être associées à chaque question (colonne constraint). En cas de violation des contraintes, un message peut-être affiché (colonne constraint_message)

Enfin, chaque question peut afficher une astuce (colonne hint)

Les formulaires peuvent être affichés dans plusieurs langues et internationalisés.

Les types de questions qui peuvent être utilisés dans le formulaires sont décrits ici : https://docs.getodk.org/form-question-types/.
Dans cet article, nous détaillons plus bas les widgets cartographiques. Nous verrons plusieurs exemples de widgets dans le second volet de cette série sur ODK.

La feuille de calcul "choices"#

Les listes de choix sont nommées (colonne list_name) et contiennent pour chaque élément de la liste une valeur (colonne name) et une étiquette (colonne label). Ces trois colonnes sont obligatoires dans La feuille de calcul choices.

XLS-Form : feuille de calcul choices

Des colonnes personnelles peuvent être ajoutées et ainsi être utilisées comme critère dans la colonne choice _filter de la feuille survey. C'est par exemple dans une colonne "groupe" que je préciserai pour l'élément "têtard" la valeur "batracien" afin de ne pas proposer cette valeur à la saisie pour une observation d'oiseau.

La feuille de calcul "settings"#

Elle contient la version du formulaire ainsi que le nom que l'on souhaite donner à chacune des instances envoyées au serveur. Ce nom peut intégrer des variables issues du formulaire.

XLS-Form : feuille de calcul settings

Focus sur les widgets géographiques#

icône globe

Plusieurs interfaces (widgets) cartographiques de saisie vont nous être proposées par ODK. Toutes reposent sur l'utilisation d'un fond de carte et d'une librairie géographique. Pour simplifier la chose à l'utilisateur, le distinguo n'est plus fait à ce sujet dans les réglages de l'application.
L'utilisateur doit simplement choisir le fond de carte à utiliser, et, quand ce dernier propose plusieurs "styles" (satellite, terrain...) choisir celui qui convient.

Choix du fond de carte Choix du style du fond de carte

Ce fond de carte pourra être surchargé par un fond "maison" en (fichier .mbtiles) généré avec QGIS par exemple. Les tuiles vecteurs peuvent être utilisées aussi mais seulement avec le fond de carte Mapbox, et elle ne sont pour l'instant pas "stylées".

Les points et les sommets des lignes et des polygones sont décrits par 4 valeurs séparées par un espace : latitude longitude altitude précision

Une valeur par défaut peut être renseignée. Un point (latitude longitude altitude precision ) ou une série de points séparés par un point-virgule.

Geopoint#

Par défaut le Geopoint enregistre la postion du GPS sans l'afficher sur une carte. La précision minimale requise pour enregistrer le point peut être précisée. Elle est par défaut de 5m.

Dés que la précision du signal sera inférieure à la tolérance précisée dans le formulaire (5m par défaut), le point sera enregistré. L'utilisateur peut à tout moment outrepasser cette contrainte en enregistrant manuellement le "PointGéo". Dans l'exemple ci-dessous, une précision minimale de 10 était requise.

Recherche de point GPS Propriétés du point enregistré

Localisation GPS affichée sur une carte#

Si une apparence (colonne appearance) maps est mentionnée alors le point calculé sera montré sur une carte à l'utilisateur, qui pourra recapturer le point s'il ne convient pas.

L'emplacement du GPS est matérialisé par une croix bleue autour de laquelle un disque transparent représente la précision du GPS. Si cela convient, on peut enregistrer le point. Il sera matérialisé par un petit cercle rouge.

Localisation entrée par l'utilisateur, carte centrée sur le GPS#

Geopoint with placement map

Si une apparence (colonne appearance) placement_maps est mentionnée alors l'utilisateur pourra cliquer le point sur la carte ou enregistrer l'emplacement courant, matérialisé comme précédemment.

Une valeur par défaut peut-être spécifiée. La carte s'ouvrira sur cette valeur. Ici de quoi afficher l'emplacement du siège Montpelliérain du CEN Occitanie : 3.8934834 43.6089782 0 0.

Geotrace#

Il s'agit d'une série de points, au moins deux, formant une ligne, le premier et le dernier points étant différents.

3 modes d'enregistrement sont possibles et proposés au lancement de la "Geotrace" :

  • la saisie manuelle en cliquant (tapotant) chacun des points sur la carte
  • l'enregistrement manuel des points constituant la ligne. La localisation du GPS apparaît sur la carte, l'utilisateur peut à tout moment enregistrer la position courante
  • l'enregistrement automatique des points au fil du déplacement de l'utilisateur, avec précision du pas de temps et de la précision requise pour enregistrer le sommet (par exemple ci-dessous 1 point toutes les 20 secondes avec une précision minimale requise de 10 mètres). La précision minimale du GPS requise pour créer le point peut-être spécifiée.

ODK Geotrace/Geoshape : options disponibles pour la création de sommets ODK Geotrace/Geoshape : saisie en tapotant sur la carte ODK Geotrace/Geoshape : enregistrement manuel des points GPS ODK Geotrace/Geoshape : enregistrement automatique de la trace

Geoshape#

Geoshape (polygone) est similaire à la #geotrace si ce n'est que le dernier point de la série est identique au premier. Les modes de saisie proposés à l'utilisateur sont les mêmes.

Bearing#

Bearing (boussole) est une apparence pour un champ décimal, qui enregistre l'azimuth, l'angle entre la direction du téléphone et le Nord, de 0 à 360°. Nous ne l'avons jamais utilisé.

OpenMapKit#

OpenMapKit permet de poser des questions sur des objets OpenStreetMap dans un formulaire ODK. Voir la documentation d'OpenMapKit pour plus d'information. Nous ne l'avons jamais utilisé.


A suivre#

  • La mise en oeuvre d'ODK avec la présentation détaillée de notre formulaire "généraliste"
  • La récupération des données collectées dans notre base de données PostGIS

Lire la deuxième partie


Quelques ressources en ligne#


Auteur#

Mathieu Bossaert#

Portrait Mathieu Bossaert

Aprés des études de biologie, d'écologie et d'informatique, j'ai intégré le CEN en 2003 pour y occuper le poste de gestionnaire de bases de données et suis devenu "géomaticien" par extension.

J'y suis désormais co-responsable de la "Geomateam" qui compte 5 personnes, pas toutes à temps plein sur la thématique, au sein d'une équipe "Occitane" de 80 salariés, répartis sur 14 sites.

PostgreSQL est le pillier strucurant de notre SI depuis 2006. Les besoins de la structure ont évolués avec elle et chacun d'eux a trouvé une solution robuste dans le monde du libre et les communautés des différents outils, à travers georezo notament, n'ont jamais été avares de conseils. J'ai intégré il y a quelques années l'équipe de GeoRezo et j'y assure la fonction de trésorier.

Enfin je contribue dans la mesure de mes compétences et de ma disponibilité aux forums techniques dédiés (principalement celui d'ODK)

Vous pouvez me contacter pour échanger sur le sujet via twitter et linkedin.


Dernière mise à jour: 22 juin 2021
Créé: 2 juin 2021
Contributions à cette page : Julien Moura (37.8%), Florian Boret (0.79%), Mathieu Bossaert (60.63%), pre-commit-ci[bot] (0.79%)

Ce contenu est sous licence Creative Commons BY-NC-SA 4.0 International


Commentaires

Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.
Retour en haut de la page