Données GTFS des transport en commun
publié le , mis à jourObjectif : afficher les informations des transports en commun sur toute la France dans cette interface carto généraliste.
- Afficher les infos des horaires du réseau de bus
- #163
- #164
Dans cette issue on va se concentrer sur 1).
Donc : quand je veux prendre le bus, j'ai pas envie de sortir l'appli "star" ou "bibus" ou je ne sais quel nom original. Aussi, star dépend de google play services.
J'ai envie de sortir mon appli de carto, cliquer sur l'arrêt de bus, et voir les horaires.
C'était pas si compliqué :)
- en beta seulement pour la Bretagne pour l'instant, mais l'extension n'est pas compliquée
- seulement pour les arrêts de bus ayant sur OpenStreetMap un identifiant
Prochaines étapes :
- explorer la Bretagne pour voir où ça marche pas. J'ai testé Rennes, Brest, Saint-Malo
- tester les nouvelles régions qui publient des jeux de données agrégés sur transport.data.gouv.fr ; voir si ça prend 5 minutes, 5 heures ou 5 jours
- intégrer tous les arrêts de bus, même ceux sans id sur OSM, via l'API expérimentale transport.data.gouv.fr
- 🐛 il me semble qu'il y a des pb pour afficher la bonne direction des bus... ça peut être trompeur
- automatiser l'opération
/fetchsur mon serveur pour qu'il aille récupérer régulièrement le GTFS Korrigo à jour. Cron job ? L'API transport.data nous dit quand faire le prochain fetch ?
Architecture
J'ai cherché une API nationale open source qui me donne arrêt de bus -> horaires et infos sur les lignes. Pas trouvé. J'ai pas envie de dépendre de Navitia qui vient d'annoncer la fermeture de son code, ça sent pas bon du tout.
Alors j'ai fait un petit serveur qui sert les données GTFS, déployé sur scalingo. Je vous laisse y aller pour mieux le comprendre.
En termes d'UI, c'est assez simple : au clic sur un arrêt de bus, on va chercher les informations correspondant à l'identifiant de l'arrêt de bus quand il existe. En sachant que le format de l'id est assez casse gueule. On tâtonnera.
Mon objectif personnel est de développer la partie transport sur le périmètre Bretagne. Ce sera déjà pas mal. Mais j'encourage ceux qui vivent ailleurs à se lancer ! N'hésitez pas à poser des questions ici.
GhostSalut @laem c'est un superbe boulot,
Je viens de tester le rendu des transport en commun sur Narbonne. Bien que référencé dans la liste des réseaux pris en compte rien ne s'affiche et le réseau de bus n'est pas proposé. Si je dezoom, j'ai effectivement aux réseaux de type chemin de fer
laem
Merci !
Bien que référencé dans la liste des réseaux pris en compte rien ne s'affiche et le réseau de bus n'est pas proposé.
Quelle liste ?
GhostJe parle de la liste suivante : https://cartes.app/transport-en-commun Je retrouve bien le réseau du grand Narbonne mais rien ne s'affiche
J'ai documenté mon travail que tu peut retrouver ici : https://wiki.openstreetmap.org/wiki/Narbonne/Transports_en_commun
laem
Ah mais non, la page n'est pas claire, mais seul les réseaux en lien sont intégrés.
LySioS
Je me greffe ici pour marquer l'avancement de l'intégration des données TEC de transport.data.gouv.fr.
Avancement :
-
Auvergne-Rhône-Alpes
-
Bourgogne-Franche-Comté
-
Bretagne
-
Centre-Val de Loire
-
Corse (des réseaux interurbains sont a priori en doublons sur data.gouv, j'en ai choisi qu'un pour chaque partie de la Corse)
-
Grand Est
-
Hauts-de-France
-
Île-de-France
-
Normandie
-
Nouvelle-Aquitaine
-
Occitanie (sauf Perpignan qui a 2 gtfs pour 1 slug)
-
Pays de la Loire
-
Provence-Alpes-Côte d’Azur
-
Guadeloupe
-
Martinique
-
Guyane
-
La Réunion
-
Mayotte
@laem
- Je me demandais si on mettait pas le slug de Perpi pour voir si motis arrive à digérer les 2 gtfs ?
- Concernant la Bretagne, je ne vois pas de ligne dans le fichier input.yaml mais les réseaux s'affichent, il y a un traitement spécial pour ta région ?
- quand on clique sur un arrêt de bus présent dans OSM, cartes.app affiche les données gtfs correspondantes, comment se fait le mapping ? Ça me sera utile pour savoir pk certains arrêts de bus ne marchent pas si ça arrive.
-
laem
Je me demandais si on mettait pas le slug de Perpi pour voir si motis arrive à digérer les 2 gtfs ?
Non je pense que c'est buildConfig.ts dans cartes/serveur qui flanchera, c'est pas prévu encore.
Concernant la Bretagne, je ne vois pas de ligne dans le fichier input.yaml mais les réseaux s'affichent, il y a un traitement spécial pour ta région ?
C'est un aggrégat régional par Breizhgo. Malheureusement, de piètre qualité, il perd STAR parfois. À terme je pense qu'intégrer de tels aggrégats gérés par une région avec si peu de volonté et de compétences numériques n'a aucun intérêt sauf quand il contient des réseaux que transport.data.gouv.fr n'a pas en autonome. À l'inverse en suisse, il suffit d'intégrer un seul GTFS et tout marche...
C'est un enjeu important d'observer le comportement de Motis et de notre serveur GTFS quand on ajoute deux agences en doublon. Si elles ont le même agencyId et les mêmes tripId & co, ça doit bien se passer, l'une est ignorée. Sinon, ça pourrait faire plein de lignes en doublon, un gros bordel.
CF https://codeberg.org/cartes/serveur/issues/42
quand on clique sur un arrêt de bus présent dans OSM, cartes.app affiche les données gtfs correspondantes, comment se fait le mapping ? Ça me sera utile pour savoir pk certains arrêts de bus ne marchent pas si ça arrive.
Proximité géographique, grâce à une petite API qu'on a mise en place.
Exemple à Brest https://serveur.cartes.app/gtfs/geoStops/48.3827868/-4.4923544/50
LySioS
@laem wrote in https://codeberg.org/cartes/web/issues/162#issuecomment-7645060:
C'est un aggrégat régional par Breizhgo. Malheureusement, de piètre qualité,
Tu veux que je regarde tous les GTFS de la région pour les insérer 1 par 1 au lieu de cet agrégat, ou tu as peur que ça apporte plus de maintenance que de fiabilité ?
laem
Tu veux que je regarde tous les GTFS de la région pour les insérer 1 par 1 au lieu de cet agrégat, ou tu as peur que ça apporte plus de maintenance que de fiabilité ?
Malgré les critiques que je fais sur l’agrégat Breizhgo, je ne sais pas ce que ça coûte de refaire le boulot. Donc oui, dans les deux cas c'est compliqué, il faut passer du temps à analyser la chose et tester.