Makina Blog

Le blog Makina-corpus

Mise en place d’une passe­relle API entre Geotrek et Cirkwi


Cet article présente le déve­lop­pe­ment de la passe­relle bidi­rec­tion­nelle permet­tant l’échange de données entre Cirkwi et Geotrek, ainsi que la confi­gu­ra­tion néces­saire à sa mise en service sur une instance Geotrek.
Sommaire

Contexte et problé­ma­tique

Dans l’uni­vers des appli­ca­tions dédiées aux acti­vi­tés de plein air, la gestion et le partage des données repré­sentent un enjeu majeur. Cirkwi et Geotrek comptent parmi les solu­tions les plus utili­sées par les profes­sion­nels du tourisme et les gestion­naires d’es­paces natu­rels pour la valo­ri­sa­tion de leurs randon­nées. Cepen­dant, ces deux écosys­tèmes fonc­tionnent géné­ra­le­ment en vase clos, limi­tant ainsi la diffu­sion et l’ex­ploi­ta­tion opti­male des infor­ma­tions.

Présen­ta­tion des plate­formes

Geotrek est une suite d’ap­pli­ca­tions open source dédiée à la gestion et à la valo­ri­sa­tion des sentiers de randon­née. Déve­lop­pée initia­le­ment par les Parcs Natio­naux français et très utili­sée par les Dépar­te­ments, elle permet aux gestion­naires de terri­toires de gérer leurs itiné­raires, d’as­su­rer un suivi terrain et de les promou­voir auprès du public via une inter­face web et mobile.

Cirkwi, quant à elle, est une plate­forme de diffu­sion d’iti­né­raires touris­tiques qui agrège des conte­nus issus de diffé­rents contri­bu­teurs (Fédé­ra­tion française de la randon­née pédestre, autres collec­ti­vi­tés et parti­cu­liers) et les rend acces­sibles via son appli­ca­tion mobile et son site web.

Enjeux d’in­ter­opé­ra­bi­lité entre Geotrek et Cirkwi

Les terri­toires propo­sant des itiné­raires sur ces deux appli­ca­tions font face à plusieurs défis :

  • La dupli­ca­tion des efforts de saisie et de mise à jour des données, parfois réali­sés par diffé­rents acteurs ou insti­tu­tions
  • Des diffé­rences struc­tu­relles et séman­tiques dans le modèle de données de chaque appli­ca­tion, les POIs Cirkwi corres­pon­dant plutôt à des conte­nus touris­tiques dans Geotrek
  • Des formats d’API hété­ro­gènes néces­si­tant des adap­ta­tions tech­niques spéci­fiques : données XML côté Cirkwi, format GeoJ­SON côté Geotrek

Archi­tec­ture de la solu­tion

Vue d’en­semble

La passe­relle déve­lop­pée demande la mise en place d’une archi­tec­ture capable d’in­ter­pré­ter, trans­for­mer et trans­mettre les données entre les deux systèmes. Une première API exis­tait déjà depuis 2015, permet­tant l’ex­port des itiné­raires et points d’in­té­rêts Geotrek vers Cirkwi. Les dernières évolu­tions, permises par la contri­bu­tion du Dépar­te­ment du Pas-de-Calais, apportent un complé­ment en permet­tant l’opé­ra­tion inverse : impor­ter des itiné­raires et points d’in­té­rêt Cirkwi dans Geotrek (pour un Geotrek installé sans la segmen­ta­tion dyna­mique).

Ce complé­ment à la passe­relle déjà exis­tante s’ins­crit dans une dyna­mique d’in­ter­con­nexion élar­gie à tout un écosys­tème de solu­tions touris­tiques, afin de faire en sorte que Geotrek devienne l’unique outil de gestion du terri­toire capable de recueillir et synchro­ni­ser les données histo­riques saisies ailleurs et diffu­ser ses conte­nus vers de nombreuses plate­formes tierces.

Implé­men­ta­tion tech­nique

API Geotrek

L’API Geotrek expose ses données au format XML sur une route dédiée à la récu­pé­ra­tion par Cirkwi, et propose deux endpoints pour accé­der aux diffé­rentes ressources :

  • /api/cirkwi/circuits.xml : liste des itiné­raires de randon­née
  • /api/cirkwi/poi.xml/ : points d’in­té­rêt liés aux itiné­raires

La passe­relle utilise ces endpoints pour récu­pé­rer les données complètes des itiné­raires, incluant les tracés géogra­phiques, les attri­buts descrip­tifs et les médias asso­ciés. La route propose quelques options de filtrage pour les POIs comme les randon­nées. Voici la docu­men­ta­tion pour impor­ter les conte­nus vers Cirkwi.

Tout terri­toire qui choisi d’uti­li­ser la solu­tion libre et gratuite Geotrek béné­fi­cie auto­ma­tique­ment de cette API permet­tant d’ex­po­ser ses données vers Cirkwi, en ayant la main sur la confi­gu­ra­tion de la passe­relle.

API Cirkwi

L’API Cirkwi est un web service PHP qui néces­site la confi­gu­ra­tion d’un flux, dont l’URL dépen­dra de la confi­gu­ra­tion. Ces web services exposent au format XML :

  • Les circuits et POIs géoré­fé­ren­cés
  • Des méta­don­nées descrip­tives : diffi­culté, durée, déni­velé, étapes…
  • Des médias (prin­ci­pa­le­ment des photos)

Voici la docu­men­ta­tion de l’API des circuits ainsi que la docu­men­ta­tion de l’API des POIs.

Cirkwi propose un forfait d’abon­ne­ment récur­rent pour tout terri­toire qui souhaite obte­nir un flux d’API permet­tant d’ex­por­ter les données vers d’autres outils.

Le parser Cirkwi → Geotrek

Le télé­char­ge­ment des données Cirkwi vers Geotrek repose sur le même système (les parsers) que les passe­relles permet­tant de récu­pé­rer des données depuis Touri­soft, Apidae, ou encore depuis d’autres instances Geotrek. Le parser doit prendre en charge :

  1. Le mapping des champs : mise en corres­pon­dance des attri­buts entre les deux systèmes
  2. La conver­sion des formats géogra­phiques : trans­for­ma­tion des coor­don­nées et des tracés
  3. L’har­mo­ni­sa­tion des taxo­no­mies : aligne­ment des réfé­ren­tiels (diffi­cul­tés, pratiques…)
  4. La récu­pé­ra­tion des médias

Il se décline en réalité en au moins deux parseurs, l’un permet­tant de télé­char­ger les randon­nées et l’autre les POIs Cirkwi sous forme de Conte­nus Touris­tiques. Ceux-ci peuvent se baser sur l’URL d’un seul et unique flux car ils se basent respec­ti­ve­ment sur la présence de balises <circuits> et <pois>. Dans l’éven­tua­lité où le contenu serait publié dans plusieurs langues, il faudrait créer un parser par langue.
Il est néces­saire de confi­gu­rer ces parsers dans <geotrek-admin>/var/conf/parsers.py :

from geotrek.cirkwi.parsers import CirkwiTrekParser, CirkwiTouristicContentParser

class MyCirkwiTrekParser(CirkwiTrekParser):
    # Configuration du flux
    url = "https://ws.cirkwi.com/flux/url_du_flux"
    user = "nomutilisateur"
    password = "lemotdepasse"
    # Titre du parser
    label = "Itinéraires Cirkwi"
    # Pour supprimer les objets qui disparaissent du flux
    delete = True
    # Pour créer automatiquement les nouvelles catégories rencontrées dans le flux
    create = True
    # Nom du fournisseur des objets téléchargés
    provider = "Cirkwi"


class MyCirkwiTouristicContentParser(CirkwiTouristicContentParser):
    # Configuration du flux
    url = "https://ws.cirkwi.com/flux/url_du_flux"
    user = "nomutilisateur"
    password = "lemotdepasse"
    auth = (user, password)
    # Titre du parser
    label = "Contenus Touristiques Cirkwi"
    # Pour supprimer les objets qui disparaissent du flux
    delete = True
    # Pour créer automatiquement les nouvelles catégories rencontrées dans le flux
    create = True
    # Nom du fournisseur des objets téléchargés
    provider = "Cirkwi"

Voir la docu­men­ta­tion sur les parsers pour plus de para­mètres de confi­gu­ra­tion.

Une fois les parsers créés, il faut ensuite lancer la synchro­ni­sa­tion. Elle peut être program­mée de manière quoti­dienne via un cron :

0 3 * * * root /usr/sbin/geotrek import -v 2  MyCirkwiTrekParser
0 3 * * * root /usr/sbin/geotrek import -v 2   MyCirkwiTouristicContentParser

Il est aussi possible de lancer la synchro­ni­sa­tion manuel­le­ment via le menu “Imports” de Geotrek.

Évolu­tions futures

La gestion des Tags Cirkwi (utili­sés pour spéci­fier et filtrer la donnée dans Cirkwi) n’a pas encore été prise en charge, ainsi que la récu­pé­ra­tion de multi­mé­dias autres que des images. Au vu de la richesse des modèles de données et des parti­cu­la­ri­tés de confi­gu­ra­tion sur chaque terri­toire/instance, quelques ajus­te­ments ponc­tuels peuvent s’avé­rer néces­saires. Heureu­se­ment, la modu­la­rité des parsers permet de s’adap­ter à diffé­rentes situa­tions en quelques lignes de confi­gu­ra­tion sur chaque parser. Toute évolu­tion suffi­sam­ment géné­ra­liste pour­rait être inté­grée au cœur du code de Geotrek lors de déve­lop­pe­ments futurs.

Vers un stan­dard de repré­sen­ta­tion des données ?

Une autre approche qui serait à privi­lé­gier serait de rendre Cirkwi compa­tible avec le schéma natio­nal des itiné­raires de randon­nées.

Pour plus de faci­lité dans les échanges, nous encou­ra­geons toutes les plate­formes qui gèrent des conte­nus d’iti­né­raires à implé­men­ter leurs API en respec­tant ce stan­dard. Pour le moment celui-ci n’est pas supporté par Cirkwi mais Geotrek est déjà capable d’in­té­grer des données qui respectent ce stan­dard et pourra donc bascu­ler faci­le­ment vers un méca­nisme plus géné­rique et ouvert lorsque Cirkwi sera prêt.

Conclu­sion

La passe­relle bidi­rec­tion­nelle entre Cirkwi et Geotrek repré­sente une avan­cée signi­fi­ca­tive dans l’éco­sys­tème des appli­ca­tions de randon­née. En permet­tant l’in­ter­opé­ra­bi­lité entre ces deux plate­formes majeures, elle répond à un besoin crucial des gestion­naires de terri­toires et enri­chit l’ex­pé­rience des randon­neurs. Les pratiques de déve­lop­pe­ment open-source permettent à de nombreux acteurs et collec­ti­vi­tés de béné­fi­cier de ces fonc­tion­na­li­tés, tout en gardant la main sur la person­na­li­sa­tion de leur passe­relle et donc sur le rendu final.

Formations associées

Formations Geotrek

Formation Utilisation de Geotrek

Toulouse Nous contacter

Voir la Formation Utilisation de Geotrek

Formations Geotrek

Formation Administration et personnalisation de Geotrek

Toulouse Nous contacter pour des dates

Voir la Formation Administration et personnalisation de Geotrek

Actualités en lien

RODolPh : un écho média­tique révé­la­teur d’un enjeu natio­nal

14/05/2025

Depuis son lance­ment, RODolPh suscite un vif inté­rêt auprès des collec­ti­vi­tés et des médias spécia­li­sés. Décou­vrez les retom­bées presse liées à la plate­forme pour opti­mi­ser la gestion de la Rede­vance d’Oc­cu­pa­tion du Domaine Public.
Voir l'article
Image
Encart application rodolph gestion rodp collectivités

Geotrek, 11 ans d’une communauté grandissante

15/11/2023

Cet article présente l'organisation communautaire du logiciel libre Geotrek et met en avant quelques ingrédients, qui selon nous, permettent de fédérer et donc de participer à la réussite d'un logiciel libre.
Voir l'article
Image
Geotrek

Le projet Agrégateur : fusionner des bases de données Geotrek

08/06/2023

Le partage et la diffusion des données font partie des problématiques historiques au cœur du projet Geotrek.
Voir l'article
Image
Agrégateur Geotrek

Inscription à la newsletter

Nous vous avons convaincus