TP GeoCMS

logo_sist_2022.png
by-nc-sa-small.png Ce support est dérivé de https://sist.pages.in2p3.fr/anf18-geocms/ et mis à disposition sous licence Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International. Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-sa/4.0/.

Présentation

geoCMS est un visualiseur de données géo-référencées développé dans le cadre de l’infrastructure de données scientifiques indigeo (UMR LETG CNRS / OSU IUEM / ZABrI)

Il propose des fonctionnalités de découverte et de visualisation de données géographiques notamment spatio-temporelles. Il permet d’enrichir l’interrogation de ces données au moyen de templates et offre la possibilité de sauvegarder et de partager des contextes cartographiques.

Démonstration sur indigeo

Installation

Configurer la machine virtuelle

La machine virtuelle sist22-atelier-lubuntu est basée sur une distribution lubuntu 20.04.4 LTS.
Elle dispose des services geoserver 2.20.4, geonetwork 3.12.3 et managechart installés dans des containers docker ainsi que de l’application geocms installée à partir d’un script interactif.

Les redirections de ports suivantes ont déjà été configurées pour pouvoir communiquer avec votre machine virtuelle :

Nom Port hôte port invité
ssh localhost:3022 22
geocms localhost:80 80
managechart localhost:81 81
geoserver localhost:8180 8180
geonetwork localhost:8280 8280

Si elles n’existent pas, les configurer manuellement dans Configuration/Réseau/Avancé

Physiologie de geocms

                                                 ┌──────────────┐
                                                 │ poste client │
                                           ┌────►│              │◄─────────────┐
                                           │     └──────────────┘              │
                                           │              ▲                    │
                                           ▼              │                    │
                                  ┌────────────────┐      ▼                    ▼
                            ┌────►│     nginx      │   ┌──────────────┐  ┌─────────────┐
                            │  ┌─►│front web server│   │ geonetworkS  │  │  geoserverS │
/app                        │  │  └────────────────┘   │   meta data  │  │ w*s service │
├── rails                   │  │                       └──────────────┘  └─────────────┘
│   └── geocms              │  │       ┌───────────────────┐       ▲          ▲      ▲
│       ├── app             │  │       │┌───────────────────┐      │          │      │
│       ├── public ◄────────┘  │       ││┌───────────────────┐     │          │      │
│       │   ├── assets         │       └││ unicorn rails app │◄────┘          │      │
│       │   └── uploads        │        └│        geocms     │◄───────────────┘      │
│       └── tmp                │         └───────────────────┘                       │
│           ├── pids           │           ▲   ▲  ▲     ┌─────────────────┐          │
│           └── sockets        ▼           │   │  │     │    Postgresql   │          │
│               └── unicorn─socket◄────────┘   │  └────►│ local or remote │          │
└── node                                       │        └─────────────────┘          │
    └── screenshot─as─a─service                │                  ▲                  │
                                               │                  │                  │
                                               ▼                  ▼                  │
                                  ┌────────────────┐    ┌─────────────────────┐      │
                                  │  redis server  │◄──►│       sidekiq       │      │
                                  │ DB & msg broker│    │ (ruby delayed jobs) │      │
                                  └────────────────┘    └─────────────────────┘      │
         ┌──────────────────────┐                                  ▲                 │
         │ screenshot─service   │                                  │                 │
         │   (web screenshot)   │◄─────────────────────────────────┘                 │
         └──────────────────────┘                                                    │
                       ▲                ┌─────────────────────────────┐              │
                       │                │   phantom js                │◄─────────────┘
                       └───────────────►│ /usr/local/bin/phantomjsssl │
                                        └─────────────────────────────┘

Crédits : Christophe Martin, Laboratoire Géosciences Océan

La page de rapport générée à l’issue de l’installation contient des détails sur les différentes briques logicielles de l’application et la nature de leurs interactions.

Script d’installation automatique

L’application geoCMS s’installe à l’aide d’un script gentiment fourni par Christophe Martin <christophe.martin@univ-brest.fr> Laboratoire Geo-Ocean, Plouzané,

Installation

L’application geoCMS a déjà été installée sur la machine virtuelle, merci de ne pas executer le script et de passer directement à l’étape Fin de l’installation, nous verrons en fin de TP comment il fonctionne.

Décompresser le fichier et l’exécuter en tant que root :

sudo -s
gunzip install-geocms.gz
bash install-geocms

Ce script est interactif ! se laisser guider…

Pour une configuration parfaite, indiquer les informations suivantes pour les questions :

  • Zone DNS de ce système : localdomain
  • Nom réseau non qualifié de ce système : localhost
  • Plus tard à la question :

    Supprimer cette instance de rvm et réinstaller ? (o/n) :
    

    répondre « n »

    application geocms déjà présente. Réinstaller ? (o/n) : n
    

    répondre « n »

Fin de l’installation

Vérifiez que les services ont bien démarré et inspectez le rapport indiqué dans l’URL à la fin de l’installation.

Configuration générale (admin)

Suivez le lien vers le backend http://localhost/backend et connectez vous avec l’utilisateur administrateur admin et le mot de passe admin

Présentation du backend

Le backend est composé de 4 onglets :

  • CONFIGURATION : réglage des préférences de l’instance, gestion des instances et des utilisateurs
  • SOURCES : gestion et configuration des sources de données (flux WMS)
  • PROJETS : gestion des contextes cartographiques et des dossiers projets
  • COUCHES : gestion des catégories et de leur organisation (arborescence), gestion et configuration des couches d’informations

Préférences

Dans l’onglet CONFIGURATION, la page Préférences permet de configurer les paramètres de l’instance.
GC_pref.png

  • Longitude/Latitude/Zoom de la vue cartographique par défaut
  • Crs : projection de l’instance (saisir : EPSG:3857)
  • Host : adresse du serveur hôte de l’application (saisir : localhost)
  • Prefix uri : point de montage de l’application (laisser vide)
  • Geovisu url : url d’un visualiseur tiers supportant le standard WMC (Web Map Context) exemple sur http://portail.indigeo.fr (laisser vide)
  • Screenshot url : url du serveur de screenshot pour les vignettes (http://localhost:3000)
  • Nom de l’instance : nom affiché sur le bandeau
  • Instance privée : force l’authentification pour l’accès au frontend
  • Logo de l’instance : logo affiché sur le bandeau

Pour valider les modifications, cliquer sur Mise à jour

Instances

geoCMS permet de générer autant d’instances que nécessaire. Chaque instance est totalement indépendante des autres; c’est à dire qu’elle possède ses propres catégories, couches, sources, projets, utilisateurs. Un utilisateur peut cependant avoir des droits sur plusieurs instances.

Ajouter une nouvelle instance.

GC_instance.png
  • Nom de l’instance (modifiable par la suite)
  • Sous Domaine : prefixe par lequel l’instance sera accessible (par exemple : http://bacasable.indigeo.fr, http://portail.indigeo.fr Attention ce prefixe n’est PAS MODIFIABLE, le choisir judicieusement)
  • Instance privée : force l’authentification pour l’accès au frontend
  • Utilisateur : la création d’une instance nécessite obligatoirement la création d’un utilisateur administrateur de l’instance

    GC_instance2.png

L’instance créée est accessible à l’adresse http://{{domain}}.localhost.localdomain/

L’accès à une instance nécessitant une configuration du serveur web, elle n’est accessible dans le cadre de ce TP, que depuis la VM (invité), pas depuis la machine hôte

Se connecter au backend de l’instance avec l’utilisateur précédemment créé.
Pour ajouter des utilisateurs d’autres instances « Choisir un collaborateur » puis Ajouter

GC_instance3.png

Pour la suite du TP, se deconnecter de l’instance et retourner dans la configuration de l’instance d’origine : http://localhost/backend

Utilisateurs

Cette page permet d’administrer les utilisateurs de l’application.
On distingue 4 type de rôles dans geoCMS : Administrateur, Administrateur de l’instance, Administrateur des données, Utilisateur.

Un utilisateur peut avoir plusieurs rôles, le tableau 1 montre les permissions de chacun des rôles sur tous les objets manipulables.

Tableau 1 : Permissions des rôles sur les objets
  User Instance Préf. Sources Couches Projets backend Projets frontend
non connecté*              
non connecté²             RO 1
user             RW 2
admin_data       RW RW RW RW 2
admin_instance RW 3   RW 3       RW 2
admin RW RW RW       RW 2
  • RO : Lecture seule (Read Only)
  • RW : Lecture et écriture (Read Write)
  • 1 : projets public uniquement
  • 2 : sur ses propres projets uniquement
  • 3 : sur l’instance uniquement
  • * : pour une instance privée
  • ² : pour une instance publique

Créer un utilisateur de l’application

Créer un compte et le configurer avec les paramètres suivants.
GC_user2.png

  • Identifiant : user
  • Email : user@ateliersist.fr
  • Mot de passe : user
  • Rôle : Utilisateur

Créer un administrateur de données

Créer un compte et le configurer avec les paramètres suivants.

  • Identifiant : admin_data
  • Email : admin_data@ateliersist.fr
  • Mot de passe : admin_data
  • Rôle : Administrateur des données

Configuration d’une instance (admin_instance)

Se déconnecter puis se connecter au backend http://localhost/backend/ avec l’utilisateur administrateur d’instance admin_instance

Création d’une arborescence du catalogue (catégories)

Depuis l’onglet COUCHES, Ajouter une catégorie mère puis lui donner un nom.

GC_category.png

Vous pouvez immédiatement Créer une sous-catégorie ou revenir à l’accueil en cliquant sur la maison ou sur l’onglet COUCHES.

GC_category2.png

Créer l’arborescence suivante

  • Activités humaines
    • Activités maritimes
    • Occupation du sol
  • Imagerie
    • Imagerie aérienne
  • Hydrographie

Vous pouvez modifier l’ordre des catégories avec les flèches ainsi qu’ajouter/modifier/supprimer des catégories avec les boutons correspondants.

GC_category3.png

Ajouter des sources de données

Depuis l’onglet SOURCES, Créer une nouvelle source de données puis remplir les champs obligatoires:

  • Nom : nom choisi pour identifier la source (apparaitra dans le frontend en tant que source pour chacune des couches)
  • Wms : url du flux WMS, en général sans le « ? » ni les paramètres SERVICE, VERSION, REQUEST (ex : http://localhost:8081/geoserver/sist/wms)
  • Ogc : url de l’interface web du serveur de données ou du site web de la source (apparaitra dans le frontend en tant que lien hypertexte pour la source) (ex : http://localhost:8081/geoserver)
  • Source externe : choix de l’origine de la source (interne ou externe). La seule différence est de permettre, pour les sources interne, le téléchargement des données via une requête WFS depuis la couches dans le frontend. Décocher la case pour définir votre source en source interne

Les champs optionnels :

  • Il est possible de forcer la version du service WMS (1.1.0 ou 1.3.0)
  • Synchronisation : synchronise la source avec la catégorie sélectionnée (voir rubrique Importer des couches)

Les champs suivants ne sont pas implémentés actuellement :

  • Wfs, Csw et Rest

GC_source.png
Puis Créer

Importer des couches dans des catégories

  • Cocher la ou les couche(s) à importer,
  • Sélectionner le type d’import parmis :

    • automatic : teste si la donnée est raster puis construit une requête WCS pour le téléchargement, sinon bascule en vector
    • vector : pour les données vecteur uniquement, pas de test la requête WFS sera contruite à la volée, plus rapide.
    • Sélectionner la ou les catégorie(s) de destination (maintenir la touche Ctrl pour sélectionner plusieurs catégories si nécessaire).

il est en effet possible d’affecter une couche à plusieurs catégories. Elle ne sera importée qu’une seule fois mais apparaitra dans différentes catégories.

GC_import.png

Puis Importer
« L’import des couches (nom) initié à HH:MM:SS a réussi » s’affiche en vert en haut et en bas de la page.

Importer les 3 couches de la source dans les catégories idoines.

Fonctionnalité de synchronisation

Ajouter une source vers l’espace de travail ecla du geoserver local

Puis Créer

Par défaut la tâche de synchronisation est programmée toutes les nuits à 4h via crontab. Merci de régler votre reveil, le TP se poursuivra à 4h du mat’ ;-).
Pour le bon déroulement de la suite du TP merci d’importer manuellement les couches de la source ecla vers la catégorie Hydrographie.

Vous pouvez maintenant vous rendre dans le frontend puis retrouver les couches précédemment importées dans le catalogue.

  • Ouvrir le catalogue en cliquant sur le bouton puis naviguer dans l’arborescence jusqu’à la couche recherchée.
  • Sélectionner la couche en cliquant dessus (la case doit être cochée et la couche grisée) puis Valider ou fermer le catalogue avec la croix X
    GC_catalogue.png
  • Dans l’onglet Couches centrer sur la couche avec le bouton cible puis ouvrir les outils avec la roue dentée bleue.
  • Vérifier le lien vers les métadonnées et le téléchargement
    GC_layer.png
  • L’onglet Légende affiche la légende de la couche.

Configurer une couche

geoCMS permet de configurer les couches importées afin d’optimiser leur affichage et interrogation.

Titre, description et url metadata

Retour dans le backend. Depuis l’onglet COUCHES, ouvrir la catégorie « Occupation du sol » puis éditer la couche « Occupation du sol à Ouessant en 2008 »

  • Titre : Titre de la couche (importé depuis le champ Titre de la source) -> Modifiable
  • Nom et Source de données : références à la couche et à sa source -> NE PAS modifier…
  • URL des métadonnées : Url vers la fiche de métadonnée (importé depuis le champ Liens vers les métadonnées de type TC/211 de la source)
  • Description : Description succincte de la couche (importé depuis le champ Résumé de la source)

Zoom max, Service tuilé et Tuile unique

En visualisant la couche « Ortho Image méandre rivière Vx Habitant lieu dit Crash Zone » depuis le frontend on remarque qu’elle met du temps à s’afficher et que l’on ne peut pas zoomer suffisamment pour en apprécier sa haute résolution.

Retour dans le backend. Depuis l’onglet COUCHES, ouvrir la catégorie « Imagerie aérienne » puis éditer la couche « Ortho Image méandre rivière Vx Habitant lieu dit  »Crash Zone«  2013 »

  • Définir le Zoom max à 23 : permet de zoomer jusqu’au niveau 23 lorsque cette couche est affichée
  • Cocher la case Service tuilé : force l’interrogation des tuiles (générées par GeoWebCache par exemple)
    GC_maxzoom_tiled.png

Puis Mettre à jour

Certaines modifications ne sont pas visibles immédiatement dû au cache du navigateur, pour éviter ce désagrément ouvrez une fenêtre de navigation privée (CTRL+MAJ+P dan Firefox).

Se rendre dans le frontend, afficher la couche puis apprécier les modifications.
GC_maxzoom_tiled2.png

La case Tuile unique permet de forcer le chargement de la couche en une unique tuile (plus long mais utile pour résoudre des problèmes d’affichage liés aux styles SLD)

Interrogeable

Certaines couches n’ont pas toujours d’intérêt à être interrogées (fonds de plan, ortho).

Par exemple, depuis le frontend, afficher les couches « Lacs DCE » puis « Températures de surface » depuis la catégorie « Hydrographie ».
Zoomer sur la couche « Températures de surface ».
Remarquer qu’un clique dans l’emprise du lac propose le choix de la couche à interroger.

GC_queryable.png

Dans cet exemple, nous ne souhaitons pas proposer l’interrogation de la couche de température mais uniquement celle du lac afin de pouvoir afficher plus tard un contenu associé (graphique)
Retour dans le backend. Depuis l’onglet COUCHES, Rechercher Températures depuis le champ de recherche puis éditer la couche « Températures de surface ».
Constater que certains champs ne sont pas modifiables. En effet cette couche étant synchronisée, toute modification de champs provenant du service WMS serait écrasée à la prochaine synchronisation.
Retourner dans l’édition de la source ecla pour désactiver la synchronisation puis rechercher à nouveau la couche « Températures de surface » pour l’éditer.

  • Décocher la case Interrogeable puis Mettre à jour
    GC_queryable2.png

Se rendre dans le frontend, afficher les couches puis apprécier les modifications.

GC_queryable3.png

Type d’import et URL de téléchargement

Il est possible de définir une URL de téléchargement personnalisée (vers un FTP par exemple) lorsque la donnée est trop volumineuse pour être servie par un webservice WFS/WCS.
à noter que dans le cas d’un raster (type d’import « automatic ») cette URL est déjà remplie avec une requête WCS
GC_url_download.png

Template de visualisation pour l’info-bulle

Il est possible de personnaliser le contenu et la forme des informations de l’info-bulle déclenchée à l’interrogation d’une couche.
Editer la couche « Présence/Absence quotidienne des activités maritimes encadrées en rade de Brest en 2009 ».

  • Dans le champ template

Saisir du texte, le mettre en forme, utiliser les valeurs des attributs de la couche avec la notation {{attribut}}
Ex :
Type d’activité : {{ACT}}
Source : {{SOURCE}}
Commentaire : {{UST_COMM}}
Date: {{DATE_}}

GC_template.png

Le bouton « catalogue » permet de lister les attributs de la couche et de les insérer.
GC_template1.png

Se rendre dans le frontend, afficher les couches puis apprécier les modifications
GC_template2.png

Données spatio-temporelle

La couche « Présence/Absence quotidienne des activités maritimes encadrées en rade de Brest en 2009 » présente la particularité d’être spatio-temporelle.
geoCMS interprète automatiquement cette capacité en générant un slider permettant de naviguer dans la dimension temporelle de la couche. Un symbole d’horloge est également ajouté devant le titre de la couche afin de l’identifier dans le catalogue.

Utilisation (user)

Se déconnecter puis se connecter avec l’utilisateur user créé précédemment sur le backend

Rechercher/Visualiser

Lorsqu’il y a beaucoup de couches il peut être fastidieux de parcourir le catalogue pour les trouver. Le moteur de recherche permet d’interroger rapidement le catalogue.

  • Dans le champ de recherche saisir « Ouessant » puis entrée, « Brest » puis entrée…

Créer une carte

Depuis le menu Projets en haut à droite, accéder à la page des projets puis créer un + Nouveau projet

  • Ajouter toutes les couches de la catégorie Hydrographie puis zoomer sur la couche Températures de surface
    GC_projet.png
  • Modifier l’ordre des couches en les sélectionnant par leur poignée à gauche puis en les déplaçant
  • Modifier l’opacité des couches à partir de leur outils
  • Décocher les couches qui ne doivent pas être affichées par défaut
    GC_projet2.png

Depuis l’onglet Carte basculer sur le sous-onglet Configuration

  • Nom : Saisir un titre pour la carte
  • Description : Saisir une description de la carte
  • Dossier : Choisir le dossier user
  • Récupérer les coordonnées et le niveau de zoom de la carte en cliquant sur la marque bleue
    GC_projet3.png

Puis Sauvegarder

Retourner dans le menu Projets puis dans le dossier user et retrouver la carte sauvegardée.

Réutilisation de la carte

La carte ainsi créée est partageable et réutilisable.
pour récupérer les liens de partage et de réutilisation web, cliquer sur Editer puis sur l’onglet « Carte »

  • Lien direct : url de partage sans accès au catalogue et avec onglets cachés par défaut. Possibilité d’afficher par défaut l’onglet de son choix (projet /share#project couches : /share#layers ou légende : /share#legend)
  • HTML : code permettant d’intégrer la carte dans un site web, un blog, une publication en ligne. Les fonctionnalités de choix de l’onglet sont conservée en modifiant l’URL de l’attribut src= de la balise iframe.

Gestion des projets (admin_data)

Se déconnecter puis se connecter avec l’utilisateur admin_data créé précédemment.

créer et administrer des dossier projets

Depuis le backend, se rendre sur l’onglet PROJETS puis Ajouter un répertoire

  • Nom : Nom du répertoire
  • Public : Un répertoire public est visible par tous (non connecté également)
GC_repertoire.png
  • Ouvrir le répertoire user puis éditer la carte précédemment créée.
  • Choisir le Dossier précédemment créé
GC_repertoire2.png

puis Mettre à jour

Ouvrir une fenêtre de navigation privée avec le navigateur puis se rendre sur l’instance : http://localhost puis dans le menu Projets pour constater les modifications.

Définir une carte par défaut (carte d’accueil)

Il est possible de définir une carte d’accueil de l’instance qui sera chargée par défaut à l’ouverture.

Revenir dans la fenêtre connectée avec l’utilisateur admin_data

  • cocher la case Par défaut puis Mettre à jour
GC_defaut.png

Enfin se déconnecter puis apprécier le rendu final de votre travail ;-)