Réaliser une carte interactive avec GoGoCarto et Grist

Bonjour à toustes,

Celles et ceux d’entre vous qui ont assisté au club utilisateurs Grist du 25 novembre se rappellent peut-être de la présentation qu’ont fait mes collègues d’Open Source Politics d’une carte interactive que nous avons réalisée pour l’association A+ c’est mieux !. Cette carte s’appuie notamment sur Grist, et nous allons détailler ici comment construire votre propre carte sur le même principe.

Prérequis

Nous avons besoin d’utiliser trois outils de concert : Grist pour les données géographiques, GoGoCarto pour la carte, et n8n qui fera le lien entre les deux. Le tableau Grist doit contenir au moins une latitude et une longitude pour chaque lieu à cartographier (le géocodage et l’obtention de ces coordonnées ne font pas l’objet de ce tutoriel).

Créer le workflow n8n

Téléchargez ce fichier JSON pour ensuite l’importer dans n8n et initialiser le workflow.

Voici à quoi il doit ressembler :

Tout d’abord, un webhook fait office de point d’entrée de la donnée. C’est là que se trouve l’URL que vous devrez renseigner dans GoGoCarto pour faire dialoguer ces outils entre eux (cf. étapes suivantes) :

  • HTTP Method = GET
  • Authentication = None
  • Respond = When Last Node Finishes (le webhook renverra automatiquement la donnée produite par le dernier nœud exécuté)
  • Response Data = First Entry JSON
  • Cliquez sur « Add Option » et ajoutez Response Content-Type = application/json

L’étape suivante du workflow est un nœud Action in a app > Grist dans lequel vous allez préciser le tableau qui contient les données à cartographier :

  • Pour créer les identifiants (credentials) nécessaires à la connexion, renseignez la clé API disponible dans les paramètres de votre compte Grist
  • Operation = Get Many rows
  • vous devez renseigner le docID du document Grist contenant le tableau (disponible via Grist dans la page « Paramètres », section « API ») et le Table ID du tableau (page « Données source »)
  • Activez l’interrupteur « Return All »
  • Vous pouvez ajouter un filtre sur une colonne pour ne récupérer qu’une partie des données du tableau, comme vous le feriez dans Grist. Vous pourrez ainsi filtrer les données sur une colonne de validation (à créer au préalable dans le tableau Grist) et vous assurer que les données non validées ne transitent pas vers GoGoCarto.

Le nœud suivant est de type Data Transformation > Edit Fields : c’est la couche de normalisation. Grâce à lui, chaque colonne provenant de Grist sera renommée, typée, et éventuellement convertie (texte, booléen, liste, coordonnées, etc.) pour correspondre exactement à la structure attendue par GoGoCarto. Paramétrez ce nœud en fonction du modèle de données que vous voulez définir.

Le nœud final est Data Transformation > Aggregate, qui regroupe toutes les lignes transformées en un seul tableau, lequel est envoyé à GoGoCarto par le webhook :

  • Aggregate = All Item Data (Into a Single List)
  • Put Output in Field = Data
  • Include = All Fields

Connecter GoGoCarto au n8n

Dans le volet d’administration, ouvrez la page « Import Dynamique »

  • Dans l’onglet « Général », précisez bien " Type de la source = API JSON" ainsi que l’adresse du webhook (cf. étapes précédentes) dans « URL de l’API JSON »
  • Sur ce même onglet, vérifiez la fréquence de mise à jour des données

Une fois ces réglages sauvegardés, vous n’avez plus rien à faire : GoGoCarto enverra automatiquement la requête GET via n8n pour remplir votre carte avec les données de votre Grist.

5 « J'aime »

Beau travail @ailepet :fire: !

1 « J'aime »