@alexiskinsella#DevoxxGTFS
INTÉGRER ET EXPLOITER LE FORMAT DE
DONNÉES OUVERT GTFS. FAILS ET SUCCÈS,
CE QUI MARCHE ET CE QU...
@alexiskinsella#DevoxxGTFS
Plan
1. Présentation
2. Intégration
3. Exploitation
Présentation du standard GTFS
@alexiskinsella#DevoxxGTFS
Signification
General Transit Feed Specification
@alexiskinsella#DevoxxGTFS
Normalisation
Normalisé par en 2005
@alexiskinsella#DevoxxGTFS
Définition
Format commun pour les informations d’horaires de
transports publics et données géog...
@alexiskinsella#DevoxxGTFS
Objectifs
Les flux de données GTFS permettent:
1. Aux agences de transport public de publier le...
@alexiskinsella#DevoxxGTFS
Horaires théoriques
La norme GTFS concerne les données théoriques
c’est à dire les horaires pla...
@alexiskinsella#DevoxxGTFS
Le format GTFS
Un jeu de données est composé d’une série de
fichiers textes (au format CSV) ras...
@alexiskinsella#DevoxxGTFS
Horaires temps réel
Le format de données est basé sur protobuf … Oui, c’est :)
La norme GTFS-re...
@alexiskinsella#DevoxxGTFS
Qui ?
Les données GTFS sont fournies par les agences de
transport:
…
@alexiskinsella#DevoxxGTFS
Pourquoi ?
Intérêt citoyen
Mouvance Open Data
Volonté politique (Etalab, …)
@alexiskinsella#DevoxxGTFS
Licences
Elles sont multiples …
• Open Database License (ODbL) v1.0
• SNCF Open Data
• …
Et cer...
@alexiskinsella#DevoxxGTFS
Licences
Droit d’audit
Comme prévu à l’article 15, la Communauté urbaine
de Lyon dispose d’un d...
@alexiskinsella#DevoxxGTFS
Disparité de l’accès aux données
Certains jeux de données sont en accès libre …
D’autres sont a...
@alexiskinsella#DevoxxGTFS
Disparité des jeux de données
Problèmes d’interprétation de la norme
Maturité des jeux de donné...
Un zip dans un zip ?
Intégration de données GTFS
@alexiskinsella#DevoxxGTFS
Facts
Entre 550Mo et 750Mo
Soit entre 11.866.989 et
15.747.594 lignes
@alexiskinsella#DevoxxGTFS
Intégration
Mieux vaut être efficace …
Mais comment intégrer toutes ces lignes ?
@alexiskinsella#DevoxxGTFS
Le temps de l’innocence
+ =
@alexiskinsella#DevoxxGTFS
Le temps de l’innocence
Ok, Google, tu me trouves un script d’import ?
@alexiskinsella#DevoxxGTFS
Avantages
Facile et rapide à mettre en place !
Fonctionne Out of the Box
@alexiskinsella#DevoxxGTFS
Inconvénients
Mais ce n’est pas très rapide tout ça …
@alexiskinsella#DevoxxGTFS
Benchmark simpliste …
Date Node.js MongoDB MongoDB Driver Durée
Juin 2014 0.10.22 2.6.1 1.3.19 ...
@alexiskinsella#DevoxxGTFS
Inconvénients
Ah Oui, Node.js fonctionne sur 1 core …
Dommage ma machine en a 8 !
Ah ! Et mongo...
@alexiskinsella#DevoxxGTFS
Benchmark simpliste …
Au fait, ça donne quoi sur un serveur ?
@alexiskinsella#DevoxxGTFS
Serveur rack 6U ?
@alexiskinsella#DevoxxGTFS
Ou plutôt un Raspberry PI ?
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Sur un VPS 3 Cores, 4Go OVH
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Environs 55 minutes
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Malheureusement, ce n’est pas viable :/
@alexiskinsella#DevoxxGTFS
Benchmark, la suite …
Alors, peut-on faire mieux ?
@alexiskinsella#DevoxxGTFS
Benchmark, la suite
Clusteriser l’import et répartir le travail d’insertion ?
@alexiskinsella#DevoxxGTFS
Benchmark, la suite
Pourquoi pas, mais pas forcement trivial :/
On utilise bien tous les cores ...
Premature optimization
is the root of all evil
@alexiskinsella#DevoxxGTFS
Résultat
Beaucoup de temps perdu …
N’y a-t-il pas plus simple ?
@alexiskinsella#DevoxxGTFS
Benchmark, la suite
Finalement,
le vrai point de contention est l’écriture en base de données
M...
@alexiskinsella#DevoxxGTFS
Alternative …
Alors quelle solution ?
@alexiskinsella#DevoxxGTFS
Alternative …
Sharder MongoDB ?
Pas une solution si on a qu’un seul serveur à
disposition …
@alexiskinsella#DevoxxGTFS
Alternative …
Réfléchissons à nouveau !
@alexiskinsella#DevoxxGTFS
Alternative …
Relationnel, comme les bases de données SQL ?
GTFS -> Export de données relationn...
@alexiskinsella#DevoxxGTFS
Une alternative à MongoDB …
@alexiskinsella#DevoxxGTFS
Des atouts …
• Base de données relationnelle
• Insertion multi cores
• Support géo-spatial fort...
@alexiskinsella#DevoxxGTFS
Des défauts …
• Version 5.7 en Beta
• Support géo-spatial incomplet …
• Création coûteuse des i...
@alexiskinsella#DevoxxGTFS
Contourner les défauts
• Créer les index en fin de traitement
• Un schéma par dataset GTFS
• Ut...
@alexiskinsella#DevoxxGTFS
Une alternative à Node.js …
Remplacer Node.js par Golang
@alexiskinsella#DevoxxGTFS
Des avantages …
• Ultra performant
• Gestion de la concurrence efficace
@alexiskinsella#DevoxxGTFS
Des inconvénients …
• Un IDE plutôt spartiate
• Un driver MySQL encore jeune
@alexiskinsella#DevoxxGTFS
Le résultat ?
Temps de traitement:
9m10s en local
20m15s sur serveur
Index & structures de donn...
Exploitation de données GTFS
@alexiskinsella#DevoxxGTFS
Exploiter les données
Pour en faire quoi ?
@alexiskinsella#DevoxxGTFS
Objectif
Trouver les stations les plus proches d’un point géographique
et afficher les prochain...
@alexiskinsella#DevoxxGTFS
Problème
Chercher toutes les informations en base est très coûteux.
@alexiskinsella#DevoxxGTFS
Problème
Entre 3 secondes et 6 secondes pour une zone dense dans
Paris avec un rayon de 1000 mè...
@alexiskinsella#DevoxxGTFS
Optimisations
Optimiser l’accès aux données ?
Oui, mais comment ?
@alexiskinsella#DevoxxGTFS
Optimisations MySQL
Avec InnoDB, 2 paramètres influent essentiellement les
performances:
• inno...
@alexiskinsella#DevoxxGTFS
Optimisations MySQL
•Travailler la performance des requêtes
•Utiliser des structures de données...
@alexiskinsella#DevoxxGTFS
MySQL - Types des données
Réécrire les fichiers de données GTFS pour changer les clés
« varchar...
@alexiskinsella#DevoxxGTFS
Une solution complémentaire ?
Utiliser un cache ?
@alexiskinsella#DevoxxGTFS
Pour quelles données ?
@alexiskinsella#DevoxxGTFS
La solution ?
Mise en place de Redis en tant que cache mémoire
@alexiskinsella#DevoxxGTFS
Problème
Le serveur utilisé dispose de resources mémoire limitées
@alexiskinsella#DevoxxGTFS
Solution
LevelDB & dérivés
@alexiskinsella#DevoxxGTFS
Solution
SSDB est une base de données en mode client / serveur
compatible avec le protocole Red...
@alexiskinsella#DevoxxGTFS
SSDB - Performance
@alexiskinsella#DevoxxGTFS
Le code
Et le code source alors ?
@alexiskinsella#DevoxxGTFS
Node.js & Express
L’API a été codée initialement avec Node.js & Express
Particulièrement intére...
@alexiskinsella#DevoxxGTFS
Node.js - Inconvénients
Néanmoins, Node.js n’aime pas les traitements coûteux en mémoire et CPU...
@alexiskinsella#DevoxxGTFS
Node.js
Après diverses optimisations, les temps de traitement varient
toujours fortement.
Entre...
@alexiskinsella#DevoxxGTFS
Node.js
Les solutions …
@alexiskinsella#DevoxxGTFS
Node.js
Recoder l’API avec Golang !
@alexiskinsella#DevoxxGTFS
Résultat
Temps de traitement réduits et plus réguliers
entre 550 ms et 770 ms
@alexiskinsella#DevoxxGTFS
Golang - Avantages
Driver MySQL performant
Langage très performant pour la manipulation de donn...
@alexiskinsella#DevoxxGTFS
Golang - Inconvénients
Dans un style très impératif,
il est peu adapté à la manipulation de don...
@YourTwitterHandle@YourTwitterHandle@alexiskinsella#DevoxxGTFS
Q & A
Pour aller plus loin
@alexiskinsella#DevoxxGTFS
Performances & Structures des données
Améliorer les structures de données exploitées.
Par exemp...
@alexiskinsella#DevoxxGTFS
Performances & Structures des données
Supprimer les données inutiles ou en doublon
@alexiskinsella#DevoxxGTFS
Base de données
Explorer les capacités de PostgreSQL vs MySQL
Performance, PostGIS, …
@alexiskinsella#DevoxxGTFS
Fouiller le web
Le web regorge de resources sur le sujet …
GitHub en particulier !
@alexiskinsella#DevoxxGTFS
Quelques sources de données …
•Data.gouv.fr: https://www.data.gouv.fr/fr/search/?q=gtfs
•GTFS D...
@alexiskinsella#DevoxxGTFS
Xebia France
http://blog.xebia.fr/
@alexiskinsella#DevoxxGTFS
Resources
• Open data stickers:
http://upload.wikimedia.org/wikipedia/commons/c/cc/Open_Da
ta_s...
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne m...
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne m...
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne m...
Prochain SlideShare
Chargement dans…5
×

Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !

528 vues

Publié le

Initié par un Googler en 2005, le format de données GTFS est supporté par une majorité des régies de transports en commun au travers le monde. Activement supporté par Google, il est à la base de nombreux outils utilisés au quotidien par les voyageurs du monde entier. Malgré tout ce format de données n'est pas exempt de défauts, et pose de nombreuses problématiques. Venez découvrir les spécificités de ce format de données, mais également les challenges à relever pour l'intégrer et l'exploiter. Les fails à éviter, ainsi qu'un retour d'expérience basé sur plusieurs tentatives d'architectures.

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
528
Sur SlideShare
0
Issues des intégrations
0
Intégrations
27
Actions
Partages
0
Téléchargements
8
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Le sigle GTFS signifie General Transit Feed Specification.
  • Le format de données GTFS a été normalisé par Google en 2005.
  • Chaque fichier modèle un aspect particulier des informations du transporteur:

    stops, routes, trips, et autres données de planification
  • Différentes licences régissent l’utilisation des données GTFS. Elle varient d’un transporteur à l’autre et peuvent être spécifiques à certains transporteurs (SNCF, RATP, …).

    On ne le dit pas assez, mais c’est important de lire le contenu des licences. Elles réservent parfois des surprises.

    Pour accéder aux données GTFS du Grand Lyon, disponibles depuis février de cette année, il est nécessaire de s’inscrire puis de signer une licence : La licence engagée… Elle est très particulière car elle impose à son consommateur un droit de regard sur l’usage qu’en est fait des données, et pour garantir cela son producteur s’arroge le droit par la signature de la licence, un droit d’audit de votre système … Pensez en ce que vous voulez, mais je ne suis pas prêt à ouvrir l’accès de mes serveurs en l’échange de l’accès à des données d’intérêt public.
  • Notamment au niveau de la gestion des calendriers et exceptions aux calendriers
  • Permet d’exploiter tous les cores d’une machine
  • Support des dates perfectible
  • Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. Fails et succès, ce qui marche et ce qui ne marche pas !

    1. 1. @alexiskinsella#DevoxxGTFS INTÉGRER ET EXPLOITER LE FORMAT DE DONNÉES OUVERT GTFS. FAILS ET SUCCÈS, CE QUI MARCHE ET CE QUI NE MARCHE PAS ! @alexiskinsella Xebia, http://blog.xebia.fr Alexis Kinsella
    2. 2. @alexiskinsella#DevoxxGTFS Plan 1. Présentation 2. Intégration 3. Exploitation
    3. 3. Présentation du standard GTFS
    4. 4. @alexiskinsella#DevoxxGTFS Signification General Transit Feed Specification
    5. 5. @alexiskinsella#DevoxxGTFS Normalisation Normalisé par en 2005
    6. 6. @alexiskinsella#DevoxxGTFS Définition Format commun pour les informations d’horaires de transports publics et données géographiques associées.
    7. 7. @alexiskinsella#DevoxxGTFS Objectifs Les flux de données GTFS permettent: 1. Aux agences de transport public de publier leur données. 2. Aux développeurs d’écrire des applications qui les consomment.
    8. 8. @alexiskinsella#DevoxxGTFS Horaires théoriques La norme GTFS concerne les données théoriques c’est à dire les horaires planifiés.
    9. 9. @alexiskinsella#DevoxxGTFS Le format GTFS Un jeu de données est composé d’une série de fichiers textes (au format CSV) rassemblés au sein d’un fichier zip.
    10. 10. @alexiskinsella#DevoxxGTFS Horaires temps réel Le format de données est basé sur protobuf … Oui, c’est :) La norme GTFS-realtime complète la norme GTFS. Elle vient amender les données théoriques par des données temps réel. Le format de données est basé sur protobuf … Oui, c’est Google :)
    11. 11. @alexiskinsella#DevoxxGTFS Qui ? Les données GTFS sont fournies par les agences de transport: …
    12. 12. @alexiskinsella#DevoxxGTFS Pourquoi ? Intérêt citoyen Mouvance Open Data Volonté politique (Etalab, …)
    13. 13. @alexiskinsella#DevoxxGTFS Licences Elles sont multiples … • Open Database License (ODbL) v1.0 • SNCF Open Data • … Et certaines réservent des surprises !
    14. 14. @alexiskinsella#DevoxxGTFS Licences Droit d’audit Comme prévu à l’article 15, la Communauté urbaine de Lyon dispose d’un droit d’audit sur le système d’information du Licencié. « Oups ! »
    15. 15. @alexiskinsella#DevoxxGTFS Disparité de l’accès aux données Certains jeux de données sont en accès libre … D’autres sont accessibles après inscription et authentification :/ Pour d’autres, il faut déjà les trouver !
    16. 16. @alexiskinsella#DevoxxGTFS Disparité des jeux de données Problèmes d’interprétation de la norme Maturité des jeux de données assez inégale Données sous forme de zip … Parfois même un zip dans un zip …
    17. 17. Un zip dans un zip ?
    18. 18. Intégration de données GTFS
    19. 19. @alexiskinsella#DevoxxGTFS Facts Entre 550Mo et 750Mo Soit entre 11.866.989 et 15.747.594 lignes
    20. 20. @alexiskinsella#DevoxxGTFS Intégration Mieux vaut être efficace … Mais comment intégrer toutes ces lignes ?
    21. 21. @alexiskinsella#DevoxxGTFS Le temps de l’innocence + =
    22. 22. @alexiskinsella#DevoxxGTFS Le temps de l’innocence Ok, Google, tu me trouves un script d’import ?
    23. 23. @alexiskinsella#DevoxxGTFS Avantages Facile et rapide à mettre en place ! Fonctionne Out of the Box
    24. 24. @alexiskinsella#DevoxxGTFS Inconvénients Mais ce n’est pas très rapide tout ça …
    25. 25. @alexiskinsella#DevoxxGTFS Benchmark simpliste … Date Node.js MongoDB MongoDB Driver Durée Juin 2014 0.10.22 2.6.1 1.3.19 22m41s
    26. 26. @alexiskinsella#DevoxxGTFS Inconvénients Ah Oui, Node.js fonctionne sur 1 core … Dommage ma machine en a 8 ! Ah ! Et mongo n’utilise qu’1 seul core pour écrire !
    27. 27. @alexiskinsella#DevoxxGTFS Benchmark simpliste … Au fait, ça donne quoi sur un serveur ?
    28. 28. @alexiskinsella#DevoxxGTFS Serveur rack 6U ?
    29. 29. @alexiskinsella#DevoxxGTFS Ou plutôt un Raspberry PI ?
    30. 30. @alexiskinsella#DevoxxGTFS Benchmark, la suite … Sur un VPS 3 Cores, 4Go OVH
    31. 31. @alexiskinsella#DevoxxGTFS Benchmark, la suite … Environs 55 minutes
    32. 32. @alexiskinsella#DevoxxGTFS Benchmark, la suite … Malheureusement, ce n’est pas viable :/
    33. 33. @alexiskinsella#DevoxxGTFS Benchmark, la suite … Alors, peut-on faire mieux ?
    34. 34. @alexiskinsella#DevoxxGTFS Benchmark, la suite Clusteriser l’import et répartir le travail d’insertion ?
    35. 35. @alexiskinsella#DevoxxGTFS Benchmark, la suite Pourquoi pas, mais pas forcement trivial :/ On utilise bien tous les cores mais l’amélioration de performance n’est pas vraiment au rendez-vous … ou
    36. 36. Premature optimization is the root of all evil
    37. 37. @alexiskinsella#DevoxxGTFS Résultat Beaucoup de temps perdu … N’y a-t-il pas plus simple ?
    38. 38. @alexiskinsella#DevoxxGTFS Benchmark, la suite Finalement, le vrai point de contention est l’écriture en base de données MongoDB occupe le core d’écriture à 100%
    39. 39. @alexiskinsella#DevoxxGTFS Alternative … Alors quelle solution ?
    40. 40. @alexiskinsella#DevoxxGTFS Alternative … Sharder MongoDB ? Pas une solution si on a qu’un seul serveur à disposition …
    41. 41. @alexiskinsella#DevoxxGTFS Alternative … Réfléchissons à nouveau !
    42. 42. @alexiskinsella#DevoxxGTFS Alternative … Relationnel, comme les bases de données SQL ? GTFS -> Export de données relationnelles …
    43. 43. @alexiskinsella#DevoxxGTFS Une alternative à MongoDB …
    44. 44. @alexiskinsella#DevoxxGTFS Des atouts … • Base de données relationnelle • Insertion multi cores • Support géo-spatial fortement amélioré avec InnoDB en 5.7 • Très bonnes performances
    45. 45. @alexiskinsella#DevoxxGTFS Des défauts … • Version 5.7 en Beta • Support géo-spatial incomplet … • Création coûteuse des index
    46. 46. @alexiskinsella#DevoxxGTFS Contourner les défauts • Créer les index en fin de traitement • Un schéma par dataset GTFS • Utiliser la fonctionnalité: LOAD DATA INFILE !
    47. 47. @alexiskinsella#DevoxxGTFS Une alternative à Node.js … Remplacer Node.js par Golang
    48. 48. @alexiskinsella#DevoxxGTFS Des avantages … • Ultra performant • Gestion de la concurrence efficace
    49. 49. @alexiskinsella#DevoxxGTFS Des inconvénients … • Un IDE plutôt spartiate • Un driver MySQL encore jeune
    50. 50. @alexiskinsella#DevoxxGTFS Le résultat ? Temps de traitement: 9m10s en local 20m15s sur serveur Index & structures de données complémentaires compris …
    51. 51. Exploitation de données GTFS
    52. 52. @alexiskinsella#DevoxxGTFS Exploiter les données Pour en faire quoi ?
    53. 53. @alexiskinsella#DevoxxGTFS Objectif Trouver les stations les plus proches d’un point géographique et afficher les prochains horaires de passage
    54. 54. @alexiskinsella#DevoxxGTFS Problème Chercher toutes les informations en base est très coûteux.
    55. 55. @alexiskinsella#DevoxxGTFS Problème Entre 3 secondes et 6 secondes pour une zone dense dans Paris avec un rayon de 1000 mètres
    56. 56. @alexiskinsella#DevoxxGTFS Optimisations Optimiser l’accès aux données ? Oui, mais comment ?
    57. 57. @alexiskinsella#DevoxxGTFS Optimisations MySQL Avec InnoDB, 2 paramètres influent essentiellement les performances: • innodb_buffer_pool_size = 6442450944 • max_connections = 512
    58. 58. @alexiskinsella#DevoxxGTFS Optimisations MySQL •Travailler la performance des requêtes •Utiliser des structures de données spécialisées •Dénormaliser •Mais surtout …
    59. 59. @alexiskinsella#DevoxxGTFS MySQL - Types des données Réécrire les fichiers de données GTFS pour changer les clés « varchar » ou « char » en clés de type « int »
    60. 60. @alexiskinsella#DevoxxGTFS Une solution complémentaire ? Utiliser un cache ?
    61. 61. @alexiskinsella#DevoxxGTFS Pour quelles données ?
    62. 62. @alexiskinsella#DevoxxGTFS La solution ? Mise en place de Redis en tant que cache mémoire
    63. 63. @alexiskinsella#DevoxxGTFS Problème Le serveur utilisé dispose de resources mémoire limitées
    64. 64. @alexiskinsella#DevoxxGTFS Solution LevelDB & dérivés
    65. 65. @alexiskinsella#DevoxxGTFS Solution SSDB est une base de données en mode client / serveur compatible avec le protocole Redis ! Replicable & load balançable Avec un jeux d’instructions compatibles !
    66. 66. @alexiskinsella#DevoxxGTFS SSDB - Performance
    67. 67. @alexiskinsella#DevoxxGTFS Le code Et le code source alors ?
    68. 68. @alexiskinsella#DevoxxGTFS Node.js & Express L’API a été codée initialement avec Node.js & Express Particulièrement intéressant pour la construction d’API avec Express …
    69. 69. @alexiskinsella#DevoxxGTFS Node.js - Inconvénients Néanmoins, Node.js n’aime pas les traitements coûteux en mémoire et CPU … Par ailleurs, les différents drivers MySQL apparaissent peu performants
    70. 70. @alexiskinsella#DevoxxGTFS Node.js Après diverses optimisations, les temps de traitement varient toujours fortement. Entre 780 ms et 1450 ms, ils restent long et coûteux
    71. 71. @alexiskinsella#DevoxxGTFS Node.js Les solutions …
    72. 72. @alexiskinsella#DevoxxGTFS Node.js Recoder l’API avec Golang !
    73. 73. @alexiskinsella#DevoxxGTFS Résultat Temps de traitement réduits et plus réguliers entre 550 ms et 770 ms
    74. 74. @alexiskinsella#DevoxxGTFS Golang - Avantages Driver MySQL performant Langage très performant pour la manipulation de données
    75. 75. @alexiskinsella#DevoxxGTFS Golang - Inconvénients Dans un style très impératif, il est peu adapté à la manipulation de données
    76. 76. @YourTwitterHandle@YourTwitterHandle@alexiskinsella#DevoxxGTFS Q & A
    77. 77. Pour aller plus loin
    78. 78. @alexiskinsella#DevoxxGTFS Performances & Structures des données Améliorer les structures de données exploitées. Par exemple: Utiliser une taille fixe des structures de données en base, pour cela il faut calculer la taille nécessaire à la création des tables
    79. 79. @alexiskinsella#DevoxxGTFS Performances & Structures des données Supprimer les données inutiles ou en doublon
    80. 80. @alexiskinsella#DevoxxGTFS Base de données Explorer les capacités de PostgreSQL vs MySQL Performance, PostGIS, …
    81. 81. @alexiskinsella#DevoxxGTFS Fouiller le web Le web regorge de resources sur le sujet … GitHub en particulier !
    82. 82. @alexiskinsella#DevoxxGTFS Quelques sources de données … •Data.gouv.fr: https://www.data.gouv.fr/fr/search/?q=gtfs •GTFS Data Exchange : http://www.gtfs-data-exchange.com/agencies •Navitia.io : http://navitia.io/datasets •The Transit App: http://thetransitapp.com/wishlist
    83. 83. @alexiskinsella#DevoxxGTFS Xebia France http://blog.xebia.fr/
    84. 84. @alexiskinsella#DevoxxGTFS Resources • Open data stickers: http://upload.wikimedia.org/wikipedia/commons/c/cc/Open_Da ta_stickers.jpg • Images de la série South Park, des films Inception & Austin Powers • http://en.wikipedia.org/wiki/Rage_comic • http://www.iconarchive.com/show/flat-file-type-icons-by- pelfusion/zip-icon.html • Benchmark du site ssdb.io • Quelques sources inconnues, désolé …

    ×