Aller au contenu

Cartographie : Veremes Map

Pour afficher les entités d’un jeu de données (points, lignes ou polygones) sur un fond de plan et les colorer selon leurs valeurs, choisir le type de graphique Veremes Map, par exemple pour montrer le trafic par région ou les gares par fréquentation.

Veremes Map est conçu pour des données PostgreSQL/PostGIS : c’est avec elles qu’il est compatible avant tout, et qu’il offre toutes ses fonctions, rendu en tuiles compris. Les autres bases de données ne sont prises en charge que de façon limitée (voir Choisir le rendu : tuiles ou GeoJSON).

La carte se crée à partir de n’importe quel jeu de données. Elle dessine une colonne géométrique PostGIS et s’appuie sur une colonne qui identifie les entités, pour les relier aux données (un code de région, un code INSEE). Deux cas se présentent :

  • le jeu de données porte une géométrie : la carte la dessine directement ;
  • il n’en porte pas, comme un jeu de données de ventes : la carte va chercher la géométrie dans un autre jeu de données, une table des départements par exemple, et l’y relie par une colonne commune.

L’éditeur d’une carte Veremes Map sur la table region_trafic : en bas à droite de la carte, la mention Veremes suivie de MVT, le rendu actif

Veremes Map dessine un jeu de données de deux façons. Le choix appartient au jeu de données, pas au graphique : tous ses graphiques ont le même rendu. Le rendu actif s’affiche en bas à droite de la carte, « MVT » ou « GeoJSON ».

  • Tuiles (MVT) : la géométrie reste sur le serveur et arrive en tuiles préparées à l’avance. C’est le rendu des couches volumineuses, jusqu’à plusieurs dizaines de milliers d’entités. Il demande une table d’une base PostGIS, et c’est le rendu par défaut de toute table.
  • GeoJSON : la géométrie revient avec les données du graphique, et le navigateur la dessine. Il ne demande rien de plus, mais reste limité par le Nombre de lignes maximum. Un jeu de données virtuel, défini par une requête SQL, est toujours en GeoJSON : une requête ne se découpe pas en tuiles.

Pour passer une table en GeoJSON, ou la remettre en tuiles : modifier le jeu de données, onglet Avancé, champ Extra, et y régler mode à geojson ou à mvt :

{ "veremes": { "render": { "mode": "geojson" } } }

Hyperset remplit lui-même ce champ à l’ajout du jeu de données : ne changer que la valeur de mode, sans toucher au reste. Le détail de ce champ est donné en fin de page : Les réglages Veremes Map du jeu de données.

Chaque rendu a ses particularités : le regroupement des points, par exemple, n’existe qu’en GeoJSON. Un réglage que le rendu ne lit pas reste visible, grisé, avec la raison en description. Le détail est donné en fin de page : Récapitulatif : ce que permet chaque rendu.

Sur une base autre que PostgreSQL/PostGIS, seul le GeoJSON fonctionne, avec une géométrie convertie en texte (WKT) par un jeu de données virtuel.

De la liste des graphiques à la carte affichée.
  1. Choisir le jeu de données et le type. Ouvrir Graphiques, cliquer sur + Graphique, choisir le jeu de données, quel qu’il soit, puis le type Veremes Map (dans la catégorie Carte, ou en tapant « Veremes » dans la recherche). Valider par Créer un nouveau graphique.
  2. Indiquer où se trouve la géométrie. Dans l’onglet Données, section Données, le champ Jeu de données rappelle le jeu de données du graphique, et Source de la géométrie dit d’où vient la géométrie à dessiner.
    • Si le jeu de données porte une géométrie, la source est ce jeu de données : passer à l’étape suivante.
    • Sinon, un message l’indique : « Ce jeu de données n’a pas de géométrie : choisissez la géométrie à dessiner. » Choisir Un autre jeu de données, puis, dans la liste qui suit, le jeu de données qui porte la géométrie.
  3. Décrire la géométrie.
    • Colonne de la géométrie : la colonne PostGIS, par exemple geom ;
    • Type de géométrie : Point, Ligne ou Polygone, renseigné d’après la colonne ;
    • Identifiant de la géométrie : la colonne qui identifie chaque entité, par exemple code_insee.
  4. Relier les deux jeux de données, seulement si la géométrie vient d’un autre jeu de données.
    • Colonne de jointure : la colonne du jeu de données de départ (Jeu de données) qui correspond à l’identifiant de la géométrie, par exemple id_departement pour code_insee. Elle n’a pas à être unique : les entités qui partagent une valeur se colorent ensemble ;
    • Mesures : la valeur à représenter pour chaque entité, par exemple SUM(montantvente). Une seule mesure, à créer avec le bouton + ;
    • Afficher les entités non correspondantes : à cocher pour dessiner aussi les entités sans valeur dans le jeu de données du graphique.
  5. Limiter le volume, si besoin. Nombre de lignes maximum vaut 10 000 par défaut.
  6. Afficher la carte. Cliquer sur Créer un graphique, puis sur Mettre à jour le graphique après chaque changement. La carte se cadre sur les données.
  7. Enregistrer, comme tout graphique.

La suite, couleurs, infobulle, fond de plan et cadrage, se règle de la même façon dans les deux cas.

Quand la géométrie vient d’un autre jeu de données, un filtre de tableau de bord posé sur le jeu de données de départ n’agit pas d’office sur la carte : dans la portée de ce filtre, cocher la carte.

L’onglet Données rempli (colonne geom, type Polygone, identifiant code) et la carte des régions de France affichée d’une couleur uniforme sur un fond OpenStreetMap

Colorer les régions selon le nombre de voyageurs.

Dans l’onglet Personnaliser, section Classification et symbologie, le Mode de classification décide de la couleur de chaque entité :

Mode Colonne utilisée Résultat
Classe unique aucune une seule couleur pour toutes les entités
Catégories une colonne quelconque une couleur par valeur (type de ligne, région)
Valeurs numériques une colonne numérique ou une mesure une couleur par intervalle de valeurs

En Valeurs numériques :

  • Champ classifié : la colonne ou la mesure à représenter. Les colonnes non numériques sont signalées « (non-numerique) » dans la liste. Quand la géométrie vient d’un autre jeu de données, la liste propose aussi la mesure choisie pour relier les deux jeux de données, par exemple SUM(montantvente).
  • Bornes : Calculées par Hyperset, ou Définies par vous, intervalle par intervalle.
  • Méthode (bornes calculées) : Jenks (Ruptures naturelles), Intervalles égaux ou Quantiles (effectifs égaux), avec le Nombre de classes souhaité.
  • Échelle : Linéaire, ou Logarithmique quand quelques valeurs écrasent toutes les autres.
  • Rampe : la gamme de couleurs, qu’Inverser la rampe retourne.

En Catégories, le bouton Classer ajoute d’un coup toutes les valeurs de la colonne.

Dans les deux modes, deux classes s’ajoutent d’elles-mêmes à celles que vous réglez : Sans valeur, pour les entités dont le champ classé est vide, et Autres, pour ce qu’aucune classe ne couvre (une catégorie non listée, ou un texte parmi des nombres). Elles se règlent comme les autres classes.

La liste Classes reprend chaque classe : sa pastille ouvre son style (couleur, contour…), son libellé se modifie, et l’œil la masque de la carte comme de la légende. La légende de la carte suit la liste.

Si la légende affiche « Aucune valeur classifiable » juste après le choix d’une nouvelle colonne, cliquer sur Mettre à jour le graphique : la carte n’a pas encore chargé ses valeurs.

Sous la liste, le dernier réglage fait varier la taille des entités : Fixe, Par classe ou Proportionnel à la valeur du champ classifié. Il s’appelle Taille pour des points, Hauteur pour des polygones (relief en 3D), Largeur pour des lignes. Ce réglage donne par exemple des cercles proportionnels au trafic d’une gare.

Afficher une infobulle au survol des régions.

Section Infobulle : cocher Infobulle, puis ne garder dans Colonnes de l’infobulle que celles qui parlent au lecteur (toutes les colonnes y sont au départ). L’infobulle s’affiche au survol d’une entité ; couleurs, bordure et largeurs se règlent dans la même section.

Chaque ligne de l’infobulle porte le nom d’affichage que le jeu de données donne à la colonne, et à défaut son nom technique : pour lire « Voyageurs 2024 » plutôt que voyageurs_2024, renseigner le libellé de la colonne dans le jeu de données.

La section Étiquettes affiche en plus, sur la carte même, la valeur d’une colonne (Champ étiquette) pour chaque entité.

La carte des régions colorée en cinq classes, du violet au jaune de la rampe Viridis, selon le nombre de voyageurs en 2024, avec le panneau Classification et symbologie ouvert et l’infobulle d’Occitanie au survol

Regrouper les gares proches, puis zoomer.

Sur une couche de points en GeoJSON, le regroupement réunit les points proches en un seul cercle qui affiche leur nombre, et les sépare en zoomant. Pour l’activer, passer le champ Affichage de l’onglet Personnaliser à Regrouper en clusters : la section Regroupement apparaît alors, avec deux réglages, pris en compte au clic sur Mettre à jour le graphique :

  • Rayon de regroupement (px) : la distance, de 10 à 200 pixels, en dessous de laquelle des points se regroupent ;
  • Zoom maximal de regroupement : le niveau de zoom, de 1 à 18, au-delà duquel les points s’affichent tous séparément.

Le regroupement n’existe pas en tuiles, et il est grisé en mode Valeurs numériques : un groupe n’a pas de valeur unique à classer. Tant qu’il est actif, la taille des entités et la mise en évidence de la sélection sont sans effet.

Passer le fond de plan à OpenTopoMap.

Section Carte :

  • Fond de plan : OpenStreetMap par défaut, d’autres fonds standard comme OpenTopoMap, ou Aucun (None) pour ne garder que vos entités. Les fonds de plan propres à votre instance, déclarés dans Hyperset Manager, s’ajoutent à cette liste. Procédure : Fonds de plan.
  • Opacité du fond de plan : pour l’estomper derrière des couleurs vives.
  • Afficher les coordonnées de la souris et Afficher la barre d’échelle : deux repères à cocher.

Le sélecteur Fond de plan ouvert sur OpenTopoMap, Aucun (None) et OpenStreetMap, et la même carte des régions posée sur le relief d’OpenTopoMap

Enregistrer l’étendue de la carte à l’ouverture.

Dans l’onglet Données, section Vue, l’Étendue au chargement vaut Ajustée aux données (la carte se cadre sur les entités affichées) ou Étendue enregistrée : déplacer et zoomer la carte, puis cliquer sur Enregistrer l’étendue courante. Suivre la sélection recadre la carte quand la sélection change.

Filtrage croisé : piloter le tableau de bord depuis la carte

Section intitulée « Filtrage croisé : piloter le tableau de bord depuis la carte »
Le filtrage croisé, du réglage au clic sur la carte.

La section filtrage croisé (Cross-filtering) de l’onglet Données fait d’un clic sur une entité de la carte un filtre appliqué aux autres graphiques du tableau de bord : choisir dans Colonne du Cross-filter la colonne qui sert de filtre. Un nouveau clic sur la même entité annule le filtre.

Deux réglages complètent le filtre émis :

  • Émettre comme : envoyer la valeur sous le nom d’une colonne d’un autre jeu de données ;
  • Émettre également : ajouter d’autres colonnes au filtre.

Les réglages d’une carte (classification, style, étiquettes, jointure, cross-filter) appartiennent au graphique. Ceux qui suivent appartiennent au jeu de données, et valent pour tous ses graphiques. Ils se trouvent dans le champ Extra du jeu de données (modifier le jeu de données, onglet Avancé), sous la clé veremes. Hyperset les remplit à l’ajout du jeu de données, puis à chaque enregistrement.

Exemple, pour une table de polygones rendue en tuiles :

{
"veremes": {
"render": { "mode": "mvt" },
"geo": { "feature_id": "id", "geom_column": "geom", "geom_type": "polygon" },
"tiles": { "min_zoom": 0, "max_zoom": 22 },
"cache": { "enabled": true, "updated_at_column": "updated_at", "clear": false }
}
}

Le champ ne se modifie que pour choisir le rendu, corriger ce qu’Hyperset a détecté ou régler l’affichage en tuiles. Chaque bloc a son rôle :

  • render : le rendu.
    • mode : mvt pour les tuiles, geojson pour le GeoJSON. Vide ou absent, une table est rendue en tuiles. Sans effet sur un jeu de données virtuel, toujours en GeoJSON.
  • geo : la géométrie, détectée à l’ajout du jeu de données.
    • geom_column : la colonne de la géométrie, geom si elle existe, sinon la première colonne géométrique. C’est celle que la carte propose par défaut.
    • geom_type : point, line ou polygon. Vide si la colonne mélange plusieurs familles de géométries, ou si son type n’est pas pris en charge.
    • feature_id : la colonne qui identifie chaque entité, en général la clé primaire. C’est la valeur par défaut de l’Identifiant de la géométrie des cartes. À renseigner à la main quand la table n’a pas de clé simple, et pour un jeu de données virtuel.
  • tiles : l’affichage en tuiles.
    • min_zoom et max_zoom : les niveaux de zoom entre lesquels la couche s’affiche, 0 et 22 par défaut.
    • levels : les paliers de simplification de la géométrie selon le zoom. À laisser tels quels, sauf indication de Veremes.
  • cache : les tuiles préparées à l’avance.
    • enabled : true par défaut. À false, les tuiles se calculent à chaque affichage : la couche reste visible, mais plus lente.
    • updated_at_column : la colonne de date de mise à jour de la table, updated_at par défaut. Les tuiles se rafraîchissent quand elle change : l’application qui alimente la table doit la mettre à jour à chaque modification d’une ligne.
    • clear : à passer à true, puis enregistrer le jeu de données, pour reconstruire toutes les tuiles, par exemple pour une table sans colonne de date. Il revient seul à false.
  • info : ce qu’Hyperset a détecté (identifiant, type de géométrie, index spatial) et l’état des tuiles, ok, building pendant leur construction ou error avec un message. À lire quand une carte ne s’affiche pas, sans le modifier.
  • internal : réservé à Hyperset, à ne pas modifier.
Réglage ou cas Tuiles (MVT) GeoJSON
Volume plusieurs dizaines de milliers d’entités limité par le Nombre de lignes maximum
Jeu de données virtuel (requête SQL) non oui, toujours
Base autre que PostgreSQL/PostGIS non oui, géométrie en texte (WKT)
Regroupement des points non oui, points seulement
Afficher les entités hors résultat oui non
Tirets différents par classe non oui
Icône différente par classe non oui
Taille d’une icône par classe non oui
Colonne calculée en étiquette non oui
Classification, infobulle, étiquettes, filtrage croisé, jointure oui oui