La cartographie est un de mes petits plaisirs, et pas seulement parce que j’ai travaillé dedans pendant plus de quatre ans. On peut faire beaucoup en utilisant une carte pour présenter des données, et bien au delà du simple « voici où se trouve le siège de la société ».
Ne serait-ce que de préciser les moyens de se rendre au fameux siège. Proposer les itinéraires voiture, les temps de transports moyens, où bien les stations de métro à proximité.
C’est justement ce qu’il nous est arrivé lors d’un projet à destination des employés du siège d’un groupe français dans la grande distribution : afficher les prochains horaires des bus et RER passant à proximité.
Trouver la donnée : un petit parcours du combattant
Trouver la donnée n’est pas impossible. Trouver une donnée fiable et à jour est plus compliqué. Les horaires de bus sont souvent variables d’une année sur l’autre, et s’il est facile de prendre le dépliant dans le bus, la saisie manuelle de chaque mise à jour peut être assez rébarbative.
Au delà du papier, beaucoup de réseaux de transport se sont mis à l’Open Data. C’est ainsi que la SNCF et la RATP proposent données et services au format numérique.
A titre d’exemple, les données Open Data de la RATP proposent l’accès aux coordonnées géographiques de l’ensemble de leurs stations, des données relatives à la qualité de l’air, au trafic dans les gares ou aux accès à personnes à mobilité réduite, mais aussi la liste des toilettes publiques dans le réseau RATP (!).
Quand à la SNCF, elle propose une API en « open service » pour accéder à pas mal de données que je vous suggère d’explorer.
Un service dédié aux horaires et aux itinéraires
Au delà de ces données accessibles, un acteur français du transport en commun a décidé d’aller plus loin en fournissant carrément son moteur de calcul d’itinéraires au grand public, en plus de rendre disponible son code en open source.
Canal TP, l’entreprise en question, fourni déjà son moteur à quelques uns de ses clients : la SNCF, le STIF ou encore Mappy. Et vu qu’elle utilise les données Open Data des transporteurs, c’est ça de moins à faire chez nous.
L’API est fournie sur le site navitia.io. Elle nécessite la création d’un token pour être utilisée et tout le code (et la documentation) est disponible sur Github.
Quelques exemples d’appels dans le cadre du projet
Attention, ils nécessitent un token pour que le résultat soit visible. Je vous conseille de créer un compte et d’utiliser Postman pour effectuer vos tests.
Liste des lignes (bus, métro…) passant à moins de 500 mètres du 47 rue de Charonne à Paris
https://api.navitia.io/v1/coverage/fr-idf/coords/2.37768;48.85334/lines?distance=500
Liste des arrêts à proximité de la même adresse
https://api.navitia.io/v1/coverage/fr-idf/coords/2.37768;48.85334/stop_areas?distance=500
Prochains départs du métro 8 à l’arrêt Ledru-Rollin
https://api.navitia.io/v1/coverage/fr-idf/lines/line:RTP:1197658/stop_areas/stop_area:RTP:SA:CTP3343787/departures?from_datetime=20150724T170000
Ce que je noterai, c’est la difficulté à trouver les identifiants d’une ligne ou d’une station. Je suis parti de ce qui passe à proximité d’une adresse, mais je n’ai pas trouvé un moyen plus simple.
Toujours plus loin, plus fort, plus vite
Mais l’API ne fournit pas que ça. Vous pouvez aller beaucoup plus loin :
- Afficher les tracés des lignes sur la carte (l’API fourni un geojson représentant la ligne)
- Afficher les itinéraires entre un domicile et un lieu de travail en transports en commun
- Afficher sur la carte tous les arrêts d’une ville, et croiser ces données avec d’autres choses (comme la fameuse présence des toilettes fournies par la RATP)
Bref, les données sont là, il ne reste plus qu’à en faire quelque chose.