Makina Blog
Mise en place d’une passerelle API entre Geotrek et Cirkwi
Contexte et problématique
Dans l’univers des applications dédiées aux activités de plein air, la gestion et le partage des données représentent un enjeu majeur. Cirkwi et Geotrek comptent parmi les solutions les plus utilisées par les professionnels du tourisme et les gestionnaires d’espaces naturels pour la valorisation de leurs randonnées. Cependant, ces deux écosystèmes fonctionnent généralement en vase clos, limitant ainsi la diffusion et l’exploitation optimale des informations.
Présentation des plateformes
Geotrek est une suite d’applications open source dédiée à la gestion et à la valorisation des sentiers de randonnée. Développée initialement par les Parcs Nationaux français et très utilisée par les Départements, elle permet aux gestionnaires de territoires de gérer leurs itinéraires, d’assurer un suivi terrain et de les promouvoir auprès du public via une interface web et mobile.
Cirkwi, quant à elle, est une plateforme de diffusion d’itinéraires touristiques qui agrège des contenus issus de différents contributeurs (Fédération française de la randonnée pédestre, autres collectivités et particuliers) et les rend accessibles via son application mobile et son site web.
Enjeux d’interopérabilité entre Geotrek et Cirkwi
Les territoires proposant des itinéraires sur ces deux applications font face à plusieurs défis :
- La duplication des efforts de saisie et de mise à jour des données, parfois réalisés par différents acteurs ou institutions
- Des différences structurelles et sémantiques dans le modèle de données de chaque application, les POIs Cirkwi correspondant plutôt à des contenus touristiques dans Geotrek
- Des formats d’API hétérogènes nécessitant des adaptations techniques spécifiques : données XML côté Cirkwi, format GeoJSON côté Geotrek
Architecture de la solution
Vue d’ensemble
La passerelle développée demande la mise en place d’une architecture capable d’interpréter, transformer et transmettre les données entre les deux systèmes. Une première API existait déjà depuis 2015, permettant l’export des itinéraires et points d’intérêts Geotrek vers Cirkwi. Les dernières évolutions, permises par la contribution du Département du Pas-de-Calais, apportent un complément en permettant l’opération inverse : importer des itinéraires et points d’intérêt Cirkwi dans Geotrek (pour un Geotrek installé sans la segmentation dynamique).
Ce complément à la passerelle déjà existante s’inscrit dans une dynamique d’interconnexion élargie à tout un écosystème de solutions touristiques, afin de faire en sorte que Geotrek devienne l’unique outil de gestion du territoire capable de recueillir et synchroniser les données historiques saisies ailleurs et diffuser ses contenus vers de nombreuses plateformes tierces.
Implémentation technique
API Geotrek
L’API Geotrek expose ses données au format XML sur une route dédiée à la récupération par Cirkwi, et propose deux endpoints pour accéder aux différentes ressources :
/api/cirkwi/circuits.xml
: liste des itinéraires de randonnée/api/cirkwi/poi.xml/
: points d’intérêt liés aux itinéraires
La passerelle utilise ces endpoints pour récupérer les données complètes des itinéraires, incluant les tracés géographiques, les attributs descriptifs et les médias associés. La route propose quelques options de filtrage pour les POIs comme les randonnées. Voici la documentation pour importer les contenus vers Cirkwi.
Tout territoire qui choisi d’utiliser la solution libre et gratuite Geotrek bénéficie automatiquement de cette API permettant d’exposer ses données vers Cirkwi, en ayant la main sur la configuration de la passerelle.
API Cirkwi
L’API Cirkwi est un web service PHP qui nécessite la configuration d’un flux, dont l’URL dépendra de la configuration. Ces web services exposent au format XML :
- Les circuits et POIs géoréférencés
- Des métadonnées descriptives : difficulté, durée, dénivelé, étapes…
- Des médias (principalement des photos)
Voici la documentation de l’API des circuits ainsi que la documentation de l’API des POIs.
Cirkwi propose un forfait d’abonnement récurrent pour tout territoire qui souhaite obtenir un flux d’API permettant d’exporter les données vers d’autres outils.
Le parser Cirkwi → Geotrek
Le téléchargement des données Cirkwi vers Geotrek repose sur le même système (les parsers) que les passerelles permettant de récupérer des données depuis Tourisoft, Apidae, ou encore depuis d’autres instances Geotrek. Le parser doit prendre en charge :
- Le mapping des champs : mise en correspondance des attributs entre les deux systèmes
- La conversion des formats géographiques : transformation des coordonnées et des tracés
- L’harmonisation des taxonomies : alignement des référentiels (difficultés, pratiques…)
- La récupération des médias
Il se décline en réalité en au moins deux parseurs, l’un permettant de télécharger les randonnées et l’autre les POIs Cirkwi sous forme de Contenus Touristiques. Ceux-ci peuvent se baser sur l’URL d’un seul et unique flux car ils se basent respectivement sur la présence de balises <circuits>
et <pois>
. Dans l’éventualité où le contenu serait publié dans plusieurs langues, il faudrait créer un parser par langue.
Il est nécessaire de configurer 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 documentation sur les parsers pour plus de paramètres de configuration.
Une fois les parsers créés, il faut ensuite lancer la synchronisation. Elle peut être programmée de manière quotidienne 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 synchronisation manuellement via le menu “Imports” de Geotrek.
Évolutions futures
La gestion des Tags Cirkwi (utilisés pour spécifier et filtrer la donnée dans Cirkwi) n’a pas encore été prise en charge, ainsi que la récupération de multimédias autres que des images. Au vu de la richesse des modèles de données et des particularités de configuration sur chaque territoire/instance, quelques ajustements ponctuels peuvent s’avérer nécessaires. Heureusement, la modularité des parsers permet de s’adapter à différentes situations en quelques lignes de configuration sur chaque parser. Toute évolution suffisamment généraliste pourrait être intégrée au cœur du code de Geotrek lors de développements futurs.
Vers un standard de représentation des données ?
Une autre approche qui serait à privilégier serait de rendre Cirkwi compatible avec le schéma national des itinéraires de randonnées.
Pour plus de facilité dans les échanges, nous encourageons toutes les plateformes qui gèrent des contenus d’itinéraires à implémenter leurs API en respectant ce standard. Pour le moment celui-ci n’est pas supporté par Cirkwi mais Geotrek est déjà capable d’intégrer des données qui respectent ce standard et pourra donc basculer facilement vers un mécanisme plus générique et ouvert lorsque Cirkwi sera prêt.
Conclusion
La passerelle bidirectionnelle entre Cirkwi et Geotrek représente une avancée significative dans l’écosystème des applications de randonnée. En permettant l’interopérabilité entre ces deux plateformes majeures, elle répond à un besoin crucial des gestionnaires de territoires et enrichit l’expérience des randonneurs. Les pratiques de développement open-source permettent à de nombreux acteurs et collectivités de bénéficier de ces fonctionnalités, tout en gardant la main sur la personnalisation de leur passerelle et donc sur le rendu final.
Formations associées
Formations Geotrek
Formation Utilisation de Geotrek
Toulouse Nous contacter
Voir la Formation Utilisation de GeotrekFormations Geotrek
Formation Administration et personnalisation de Geotrek
Toulouse Nous contacter pour des dates
Voir la Formation Administration et personnalisation de GeotrekActualités en lien
RODolPh : un écho médiatique révélateur d’un enjeu national
Territoires
14/05/2025

Geotrek, 11 ans d’une communauté grandissante
Logiciel libre
15/11/2023

Le projet Agrégateur : fusionner des bases de données Geotrek
Logiciel libre
08/06/2023
