Une discussion, autour d'une bière, avec un acolyte néophyte
Moi : T'as vu, le STIF ouvre ses données ?!
Lui : ah
Moi : Ben c'est cool, on va enfin avoir des bonnes données transport en
opendata sur toute l'île-de-France !
Lui : ah, ouais, ça a l'air cool ... (Bois) Mais attend, on n'a pas déjà
eu cette conversation il y a trois ans ?
Moi : ah non, ça c'était quand la RATP ouvrait ses données.
Lui : Ah. C'est pas pareil ?
Moi : Ah ben non, noob !
Lui : c'est quoi le STIF au fait ?
Moi : le STIF, Syndicat des Transports d'Île-de-France, c'est notre
autorité organisatrice de transports. C'est le STIF qui organise tout le
transports public, définit l'offre et la qualité de service attendue de
la part des transporteurs, gère la modernisation du réseau, fixe les
tarifs, ...
Lui : Ah bon, c'est pas la RATP qui décide des tarifs ?! Je suis sûre
d'avoir déjà lu ou entendu "la RATP augmente le prix du pass navigo"
Moi : Et oui ! Mais c'est oublier qu'il n'y a pas que le RATP en
Île-de-France ! C'est grâce au STIF qu'on peut traverser toute la région
d'un bout à l'autre avec le même titre de transport, qu'on pourra
acheter aussi bien à une borne RATP, à un guichet Transilien ou dans un
bus de banlieue
Lui : Ok, mais la RATP, c'est quand même le principal transporteur, ils
ont les métro, tous les bus dans Paris, et tous les bus qui vont en
banlieue comme chez moi ... ... ça fait vraiment une différence d'avoir
les données du STIF en plus de celles de la RATP ?
Moi : En terme d'horaires et de passagers transportés, c'est clair. Mais
pas en terme d'arrêts desservis et de kilomètres parcourus. Les arrêts
RATP, ça fait moins de 30% des arrêts d'Île-de-France !
Lui : ah bon, mais c'est qui les autres ? Transilien, ça ne fait pas
tant d'arrêts que ça ?
Moi : OPTILE, ça te dit quelque chose ?
Lui : j'ai déjà entendu ça quelque part en effet...
Moi : c'est écrit sur les titres de transport notamment. C'est
l'Organisation Professionnelle des Transports d'Île-de-France. C'est un
groupement de tous les autres "petits" transporteurs de bus de banlieue,
et y en a plus d'une centaine ! Par exemple, à Boissy-Saint-Léger, on a
des bus SITUS, STRAV et SETRA.
Lui : ah ouais, donc ça fait quand même pas de données en plus du coup.
Et tu vas faire quoi ?
Moi : Plein de choses ! Je vais commencer par améliorer mon appli
Firefox OS qui affiche les horaires de bus et permet de les consulter
sans connexion, pour
y ajouter les bus qui passent à Boissy !
Lui : Ouais. Sans vouloir te vexer, j'ai pas l'impression que ça va pas
changer la face du monde, l'ouverture des données du STIF ... moi par
exemple, je ne me sens pas du tout concerné.
Moi : Eh bien tu devrais ! L'opendata, c'est pas juste une histoire de
développeur qui mangent de la pizza pendant un week-end et font une
appli avec un gros coup de pub puis qu'ils arrêtent de maintenir deux
mois après ... Il y a un vrai concept politique : rappelle-toi qu'au
STIF, il y a des élus, c'est-à-dire des gens qui te représentent ! Et
aussi que l'essentiel du financement du transport public dans la région,
il est assuré par les collectivités régionales, donc un peu par nos
impôts ! La mise à disposition de données brutes, c'est la transparence,
c'est "citoyen, regarde ce qu'on fait en ton nom" !
Lui : Ah bon, faut que j'aille regarder les données du STIF maintenant
?
Moi : T'es pas obligé, mais tu peux, et c'est ça qui est important.
C'est un peu comme le logiciel libre, c'est pas parce que tu peux
télécharger le code source que tu vas le faire, que tu vas l'auditer ou
que tu vas en faire ta propre version, la vendre et devenir riche, mais
tu peux le faire ! Enfin tu peux essayer ... Si tu étais un journaliste
par exemple, tu pourrais te servir de ces données pour contre-vérifier
les informations communiquées.
Lui : Ouais, m'enfin bon, si les journalistes me disent que c'est la
RATP qui décide des prix, ils vont surement pas aller télécharger les
données du STIF pour vérifier quoi que ce soit ...
Moi : mouais, bon, c'est qu'un exemple. Tu peux aussi les croiser avec
d'autres jeux de données en opendata pour faire des analyses originales
ou inventer des nouveaux services innovants.
Lui : comme ton appli pour Firefox OS ?
Moi : je le mettrais pas dans la catégorie des services innovants, mais
bon, c'est l'idée ! Mais tu devrais quand même aller jeter un coup
d'oeil, il n'y aura pas que les données horaires sur la
plateforme, tu trouveras
peut-être quelque chose qui t'intéresse ;)
Je me suis enfin décidée à publier ma deuxième application
FirefoxOS.
Elle a une mission très simple : sauvegarder et restituer les horaires
théoriques de passage de bus à un arrêt.
Son fonctionnement est simple : en deux étapes
l'initialisation (quand j'ai une connexion internet)
- je choisis mon arrêt.
- je sélectionne la ligne et la direction
- je vois alors les horaires, et je peux les enregistrer
l'utilisation (quand je suis en déplacement, potentiellement sans
connexion internet)
- je vois la liste de mes fiches horaires enregistrées
- je sélectionne celle que je veux, et je consulte les horaires
Cette application utilise les données opendata d'Île-de-France, grâce à
l'API navitia.io
Si vous voulez l'utiliser ailleurs, faites-moi signe : si votre région
est couverte par navitia.io, je peux vous en déployer une version avec
les horaires qui vous intéressent.
Cette application a été initiée pendant un hackathon chez Mozilla Paris
en novembre 2014, puis peufinée par mes soins avec plus ou moins
d'assiduité et de motivation pendant plusieurs mois.
C'est bien sûr open-source si vous voulez contribuer au code ou
remonter des bugs. Si
vous voulez supporter le coût de développement (énorme !) de l'appli,
j'accepte les
Flattries
(et les bières, toujours).
Le but initial était de pouvoir avoir toujours sur moi les horaires de
mon bus de banlieue peu fréquent, pour adapter mon itinéraire en
connaissance de cause, et ce même si ça ne capte pas ...
Dans la pratique, j'ai déménagé depuis et ne prends plus ce bus de
banlieue, et ses horaires ne sont toujours pas en opendata, donc
j'aurais une utilisation assez limitée de l'application.
EDIT : le STIF a ouvert les données transport théoriques de toute
l'Île-de-France donc ... l'appli fonctionne à présent sur les bus de
banlieue !
J'espère que d'autres en auront l'usage ou sauront s'en inspirer pour
d'autres utilisations.
Vous l'aurez compris, mon TOC (trouble obsessionnel cartographique) du
moment, c'est les arrêts de bus !
Et en travaillant sur le projet KartoKartier,
avec mes collègues, dans le cadre du concours
Cartoviz, je me suis rendue compte
qu'il y avait une belle marge de manoeuvre pour améliorer la qualité des
données OSM pour les arrêts de bus : j'en parlais
ici.
C'est ainsi que je me suis mise en tête de faire un script qui se
nourrit de l'opendata RATP via l'API navitia.io,
pour enrichir les données OSM en ajoutant, pour commencer, les noms des
arrêts manquants.
Ce script est disponible sur
github,
et librement réutilisable.
Que fait ce script ?
Tout d’abord, il récupère la liste de tous les arrêts de bus, situé dans
la ville de Paris (par exemple), qui n’ont pas de nom renseigné.
J'ai commencé par l'utiliser sur des villes plus proches de la mienne,
voici quelques métriques :
- nombre d’arrêts sans nom à Paris : 267
- nombre d’arrêts sans nom à Boissy-Saint-Léger : 21
- nombre d’arrêts sans nom à Sucy-en-Brie : 38
- nombre d’arrêts sans nom à Créteil : 25
- nombre d’arrêts sans nom à Bonneuil-sur-Marne : 3
Ensuite, pour chacun de ces arrêts, j’appelle navitia.io (une API pour
les transports en commun, développée par Kisio Digital (anciennement Canal TP),
et qui s'alimente, entre autres, des données opendata RATP) et je lui
demande de me retourner les points d’arrêts à proximité des coordonnées
du point OSM.
Les données opendata de la RATP, qui sont utilisées dans navitia.io ont
une géolocalisation peu précise, donc en faisant varier la distance
d’accroche, on obtient des résultats plus ou moins pertinents :
Métriques sur Paris :
- Nombre d’arrêts OSM ayant un arrêt RATP à moins de 100 mètres : 249
- Nombre d’arrêts OSM ayant un arrêt RATP à moins de 50 mètres : 221
- Nombre d’arrêts OSM ayant un arrêt RATP à moins de 20 mètres : 145
- Nombre d’arrêts OSM ayant un arrêt RATP à moins de 10 mètres : 74
- Sur ces arrêts, j’ai choisi, dans un premier temps, de ne conserver que
- ceux qui ont un unique arrêt RATP (ou plusieurs arrêts avec le même nom)
- ce sont les plus faciles à intégrer.
Pour ceux-là, je crée un fichier JOSM avec le nom pré-rempli.
Il n’y a plus alors qu’à ouvrir le fichier dans JOSM, à charger les
données existantes autour du point, à vérifier que les infos sont
cohérentes, puis à envoyer la modification dans OSM.
exemple de retour du script
Ci-dessus, le retour du script sur Boissy-St-Léger : il n'y a un seul
arrêt RATP (l'arrêt noctilien que j'ai cartographié dans un article précédent), et il a déjà un
nom !
Dans la pratique, l’intégration :
J’ai choisi d’y aller itérativement, et de commencer par les moins
ambigus, donc ceux ayant un arrêt RATP très proche. J'ai aussi choisi de
commencer par ceux proches de chez moi, pour pouvoir faire une
vérification sur le terrain en cas de doute.
Les premiers arrêts que j'ai intégrés étaient parfaits : c'est le cas
typique
- où navitia a trouvé une correspondance entre mon arrêt sans nom et
les données opendata
- où il n'y a que deux arrêts de bus dans tout le quartier, placé
chacun d'un côté de la route (le sens aller et le sens retour)
- le second arrêt a déjà un nom, et c'est le même que celui trouvé par
navitia
- éventuellement, mon arrêt a un tag name:RATP rempli, et concordant
(mais il a peut-être été aussi généré par un script, je ne sais pas
si c'est vraiment une mesure de fiabilité)
Là, on peut intégrer les yeux fermés :)
Malheureusement, c'est loin de représenter la majorité des cas ...
À vrai dire, j'ai même trouvé une bonne poignée d'exemples carrément
invalides (c'est le cas de le dire) : par exemple, cet arrêt
Il est situé à 16 mètres d’un arrêt de bus que l’opendata RATP appelle
Invalides.
Mais, dans les données déjà présentes sur OSM, il est indiqué que c’est
un arrêt desservi par les cars Air France.
En conséquence, navitia, alimenté par des données opendata RATP et SNCF
(et pas Air France) n’est pas une source fiable pour me fournir le nom
de l’arret.
Ça ne veut pas dire que l'arrêt ne s'appelle pas Invalides, mais à moins
d'aller voir sur place, je ne peux pas en être certaine ...
On l'oublie souvent, mais il n'y a pas que la RATP comme opérateur de
transport, même à Paris !
J’ai même découvert des opérateurs de transport que je ne connaissais
pas :
Enfin, il ya aussi des exceptions géographiques étranges : je pense par
exemple aux arrêts de bus autour de Porte Dorée : on trouve deux arrêts,
chacun d'un côté de la route, et il y en a un des deux qui ne s'appelle
pas Porte Dorée !
Bref, on aurait pu croire qu’on pouvait tout importer automatiquement,
mais en creusant un peu, on se rend compte que souvent, il y a des
petites subtilités et qu’une vérification humaine est effectivement
nécessaire. On comprend ainsi beaucoup mieux les réticences de la
communauté OSM face aux imports massif de données d’autres sources
(c'est d'ailleurs pour ça qu'on parle ici d'intégration, et non
d'import).
État des lieux :
En bref ... aujourd'hui, j'ai intégré tous les arrêts RATP des villes
proches de chez moi (Boissy, Sucy, Bonneil, Créteil). Mais
malheureusement, ils ne représentent pas la majorité des arrêts de bus
de ces villes, qui sont massivement desservies par d'autres compagnies,
dont les données de transport ne sont pas en opendata, et donc pas dans
navitia.io !
Sur Paris, il m'en reste aujourd'hui moins de 100 !
Et après ?
Les possibilités sont multiples : par exemple, l'intégration dans Osmose
pourrait permettre à d'autres contributeurs de vérifier avant d'envoyer
les modifications dans OSM (comme ce qui est fait pour les données
opendata des écoles par exemple).
Il serait intéressant également de regarder les rejets de mon script,
comme les arrêts OSM ayant plusieurs arrêts opendata (avec un nom
différent) à proximité : sur ceux-là, une vérification sur le terrain
s'impose pour choisir entre les possibilités.
Ensuite, pourquoi pas réfléchir à l'intégration des lignes de bus RATP à
partir de navitia.io !
De plus, OSM est un projet international, et navitia aussi, donc le
modèle pourrait s'exporter sans soucis ...
Mais j'attends surtout l’opendata des données transports sur toute
l’Île-de-France, pour compléter les villes près de chez moi !
EDIT 2015 : c'est fait, les données de toute l'Île-de-France sont librement accessibles
EDIT 2017 : mise à jour de quelques liens cassés