Aller au contenu

2023 – Formation R geoflow #1


Le réseau SIST a organisé en janvier 2023 une formation / webinaire sur le workflow d’orchestration R geoflow animée par Wilfried Heintz (UMR Dynafor).

geoflow est un outil permettant la publication de données et de métadonnées dans un géocatalogue (GeoNetwork), un serveur cartographique (GeoServer) et/ou un entrepôt de données (dataverse).

Programme

  • 9h30 – 10h : Geoflow : kesako et nouveautés
  • 10h – 12h / pause midi / 13h30 – 14h30 : TP création de fiches de métadonnées de plusieurs datasets, exécution du workflow de catalogage et de publication via R studio (et R shiny) puis visualisation dans le géocatalogue GeoNetwork (et GeoServer et dataverse)
  • 14h30 – 14h50 Contribuer à geoflow
  • 15h – 16h Échanges, retours d’expérience et perspectives

Support et vidéos

Vidéos : Voir les vidéos de la formation geoflow

Support de formation

Notes

Topo introductif sur R geoflow

  • Défis : automatiser les flux de gestion de données, interconnecter, reproduire
  • Permettre aux gestionnaires de données de prendre en main de manière autonome leur gestion de données
  • Choix de R comme langage de programmation car un des langages les plus utilisés dans les communautés scientifiques
  • geoflow = librairie codée en R https://github.com/r-geoflow/geoflow qui orchestre différents packages
  • Composante géographique: co-développement avec l’application web cartographique OpenFairViewer : https://github.com/eblondel/OpenFairViewer
  • Coeur de geoflow basé sur modèle de métadonnées pivot s’appuyant sur la norme Dublin core avec source unique de métadonnées structurée en 3 blocs : contacts (annuaire de personnes), entité = métadonnées principales des jeux de données, dictionnaire des données (référentiels et vocabulaires) : Voir schéma « Vue schématique d’un flux geoflow avec données en entrée à gauche et les sorties possibles à droite »
  • Pour alimenter GeoNetwork, 2 possibilités : avec l’API GN (librairie geonapi) ou avec le flux standard CSW (librairie ows4R). Sachant qu’on peut rencontrer des soucis avec l’API GN au changement de versions (ex : GN3 => GN4) .. et donc qu’est ce que vous préconisez à utiliser ?

Tableau des métadonnées des contacts

  • ne pas renommer les noms des colonnes
  • identifier: adresse email de la ou les personnes (la même que dans colonne email). orcid peut être ajouté aussi car il existe une clé « orcid »
  • le reste est simple à remplir

La doc sur le tableau de contacts : https://github.com/r-geoflow/geoflow/blob/master/doc/metadata_contacts.md

Tableau de métadonnées des jeux de données

  • choix du séparateur entre clé1:valeurA,valeurB et clé2:valeurC dans une cellule est par défaut _ + retour charriot : on peut le changer dans shiny ou directement dans le json (idem pour le tableau de contact)
  • Identifier

La doc sur le tableau de métadonnées des jeux de données : https://github.com/r-geoflow/geoflow/blob/master/doc/metadata.md

  • SpatialCoverage: outil très utile pour générer un WKT https://arthur-e.github.io/Wicket/sandbox-gmaps3.html
  • Relation : S’il n’y a pas de geoserver dans le workflow, il faut fournir une vignette (URL) et la renseigner dans la colonne Relation du tableau de métadonnées entities. Q : est-il possible que geoflow upload automatiquement un fichier png qui aurait été déposé dans l’espace nextcloud ?
  • Rights : licence, etc. Attention : certains mappers de dataverse posent soucis. Ex: CCBY pas reconnu, et n’apparaît pas dans la métadonnée, même si on l’a bien renseigné dans la table des métadonnées : Provenance (généalogie), statement:décrire la méthodologie…, Data
  • Format (nouveau) : des distributions du jeu de données selon une norme [https://www.iana.org/assignments/media-types/media-types.xhtml] . On indique le type MIME, qui permet d’indiquer à une machine ce qu’il doit attendre (et à un PC quel application démarrer pour ouvrir le fichier)

Démo de l’orchestration du flux de données

  • Création du fichier de configuration json (étape facultative puisque le Shiny permet de créer ce json via l’interface)
  • Connexion à l’interface R Shiny appli geoflow UI
  • List of configurations : tableau des fichiers de configuration qui sont dans votre dossier MyDrive/geoflow/
  • Sur un fichier de configuration : soit on peut l’éditer via l’interface, soit on peut directement l’exécuter
  • Profile : faut donner un nom au workflow identifier
  • Metadata : ajouter via le Handler ocs l’URL vers le tableau csv de métadonnées dans votre répertoire MyDrive/geoflow, sinon y’a d’autres options (voir menu déroulant). idem pour le tableau de métadonnées des contacts. A minima 1 source de contacts et 1 source Entities
  • softwares : en input ou output (le plus souvent en output), de plusieurs types : geonetwork, geoserver, google drive, dataverse, etc. Ici pour le TP en entrée c’est l’OSC-cloud qui pointe vers le dossier MyDrive/geoflow avec les données et métadonnées en entrée. Puis geonetwork, geoserver, zenodo bac à sable en sortie. 
  • Actions : mettre true ou false à chaque action
  • Possibilité de voir une prévisualisation du CSV des entities (jeux de données) avec une coloration vert si ok, jaune si WARNING et rouge si la colonne n’est pas bien écrite

Rq : OnlyOffice a tendance a rajouté des lignes dans le CSV, ce qui pose souci problème et fait bugger l’exécution de geoflow. En enlevant la ligne surnuméraire, ça fonctionne 🙂

Fonctionnalités récentes

  • amélioration de l’interface Shiny :
    • pour créer ou charger et exécuter le(s) fichier(s) de configuration json
    • authentification via le cloud (pas obligatoire mais utilisée ici en TP, et utile si utilisation sur un shiny partagé)
    • module de contrôle des sources
    • tableau de bord de suivi de l’exécution
  • publication de données raster

Synthèse des questions / réponses

Q : Est-il possible de faire un point sur l’installation de Geoflow-Shiny via Docker durant la journée ? (afin d’avoir un accès sans authentification) https://github.com/r-geoflow/geoflow-shiny

==> Vu dans l’après midi

Q : je suis intéressée pour voir un exemple avec un tableau dictionnaire de données 🙂

==> OK on en prend note, je verrai avec Wilfried si on peut le voir cette aprem ou dans le cadre de la 2ème formation qu’on organisera plus tard

Q: c’est quoi un format pivot ?

==> un format pivot est, si je simplifie, un format structuré de données (entêtes de colonnes figées et standardisées autant que possible) en entrée ici de geoflow. Et « pivot » car on peut ensuite le mapper(=aligner) sur d’autres formats de métadonnées, par exemple vers ISO19139 ou EML

Q: inquiétude : ça marchera avec geonetwork4 et geonetwork3 ??

==> oui 🙂

Q : est-ce que ça marche avec GeoSource ? vu que GeoSource a fusionné avec Geonetwork .. 

=> pas testé mais devrait marcher !

Q: est-ce que les métadonnées publiées par geoflow peuvent être validées ? considérées comme valides dans GeoNetwork ?

==> oui, il y a une validation INSPIRE possible notamment

Q: Quel lien avec Data Terra ?

==> pas encore de lien, suivi de ce qu’ils font 

Q : est-ce qu’un docker avec R-shiny + geoflow-rshiny déjà disponible ? je pense avoir trouvé : https://github.com/r-geoflow/geoflow-shiny/blob/main/doc/user_manual.md#installation_docker. il manque la commande de lancement du docker dans la documentation → ouverture d’un ticket github

Q : comment tu gères les logins pour publier sur l’IDG par exemple?

==> Sur l’IDG Inrae, il suffit d’avoir un compte activé (avec ldap).

Q : que se passe-t-il quand on veut mettre à jour une métadonnée/couche ? Geoflow sait que la métadonnée/couche existe déjà ? 

==> oui  c’est géré si tu complètes bien le csv des métadonnées en mettant le DOI de la fiche existante pour dataverse + l’ID de la fiche pour les autres logiciels

Q: est-il possible publier une couche dans GeoServer en précisant un style ?

==> oui la fonctionnalité existe dans la colonne data (clé SLD)

Q : est-il possible de se connecter à plusieurs geoserver ?

==> oui il est possible de mettre plusieurs geonetwork dans un même json (via shiny ou non )

==> pour geoserver, ça fait une erreur, voir avec Emmanuel

Q : quand publication sur geonetwork + geoserver, la couche et la métadonnée sont-elles liées ?

==> oui

Q : du coup, comment choisir l’ordre des software : geoserver puis geonetwork ?

==> on ajoute les softwares même dans le désordre et geoflow va ordonner correctement l

Q : Comme l’INRAE est prêt à nous partager l’appli geoflow depuis son serveur Shiny, est-il envisageable que les institutions, comme le CNRS ne pourrait-il pas participer financièrement à ces besoins de calcul ? une vraie mutualisation et économie d’échelle. Comment mobiliser nos instances ?

==> Excellente question, on ne peut que faire remonter notre demande commune à nos décideurs 🙂

Q : Peut-on choisir un autre système d’authentification (par exemple : un gitlab) ? Le problème de laisser l’authentification via nextcloud, c’est que l’ensemble des personnes qui ont un accès à ce nextcloud pourront lancer les workflows. 

==> Pour l’instant il n’y a que Nextcloud. Et pas de risque, puisque les fichiers sont sur MyDrive/geoflow, qui est personnel.

Q : est-ce que geoflow peut générer un UUID automatique pour la colonne identifier du tableau metadata ?

==> oui c’est possible de le configurer dans l’action geonapi-publish-19139. Il y a une option UUID

Q : est-il possible de déposer des fichiers vecteurs/rasters sur geoserver situé sur docker et ses volumes avec geoflow. (Nous avons Géorchestra sur docker (geonetwork + geoserver))

==> Il n’y a pas de raison que ça ne fonctionne pas avec une version dockerisée. Nous avons fait des tests sur notre version kubernetes

Q : est-ce que c’est dans la colonne topic (métadonnées) qu’on peut spécifier la notion de catégorie qui existe dans GN ?

==> oui via la colonne topic, mais ça manque dans la doc ! idem pour place[] –> poster une issue dans github !