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 ou distanciel A la demande

Voir la Formation Utilisation de Geotrek

Formations Geotrek

Formation Administration et personnalisation de Geotrek

Toulouse ou distanciel A la demande

Voir la Formation Administration et personnalisation de Geotrek

Actualités en lien

Geotrek et OpenS­treet­Map : Mise en place d’une passe­relle pour une connais­sance du terri­toire enri­chie

08/09/2025

Dans l’uni­vers des logi­ciels open-source, les plus belles inno­va­tions naissent souvent de la rencontre entre des commu­nau­tés qui partagent les mêmes valeurs. Aujour­d’hui, nous célé­brons une avan­cée majeure pour Geotrek : la créa­tion d’une passe­relle avec OpenS­treet­Map (OSM), la plus grande base de données carto­gra­phique colla­bo­ra­tive au monde. Plus qu’une simple fonc­tion­na­lité, ce projet est le fruit d’un travail d’in­gé­nie­rie et de recherche appro­fondi.
Voir l'article
Image
Logo d'illustration pour la passerelle entre OSM et Geotrek

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