Le but est d'automatiser la recherche de circuits de randonnées accessibles en train (région Occitanie pour l'instant) pour les gens qui n'ont pas de voiture (moi par exemple).
Comme la plupart des systèmes de transport public, le réseau TER LIO-Occitanie (et celui tout le territoire français en fait) utilise le format GTFS
pour le décrire. Les données GTFS
sont rendues publiques sur le site de la région. Parmis les fichiers nécéssaires pour calculer des trajets, il faut :
calendar.txt
calendar_dates.txt
routes.txt
stop_times.txt
stops.txt
trips.txt
Le programme liste tout les trajets possibles et les trie par ordre décroissant d'arrivée à la randonnée (au plus tôt on arrive, mieux c'est).
- On parcourt les données
GTFS
afin de calculer tout les itinéraires en train depuis une gare de départ à un jour donné 1 - Pour chaque gare à laquelle on arrive avant une heure limite (par exemple 10h ; pas besoin de s'encombrer des gares où on arrive à 18h), on analyse toutes les données disponibles publiquement (data.gouv.fr) et en webscrappant IGNrando2
- On filtre les résultats, par exemple "à moins de 2km à pied de la gare" car la plupart des randonnées se trouvent à plusieurs km d'une ville
- On fait une requête météo pour avoir la météo parce que c'est sympa de savoir
- On arrange le tout dans
stdout
(et/ou export HTML) avec les liens des topos, la distance, l'heure à laquelle la randonnée peut commencer, la météo etc, etc...
- Mac OS: ouais (avec clang)
- Linux: ouais (avec gcc)
- Windows: non (ouais avec WSL2)
J'utilise une seule translation unit donc il suffit de faire:
gcc rail2rando.c -o rail2rando
./rail2rando
- Multithreader le scraping
- Exporter en
.html
J'avais commencé à prototyper l'étape (1) dans le script shell lio.sh
avec des requêtes curl
sur le serveur plan.lio-occitanie.fr mais c'était lent et j'étais pas au courant pour le GTFS
, on peut tout faire en local !