Statamic Peak

Article

Découverte de la norme GTFS

Je vous présente la norme GTFS, son intérêt et comment l'utiliser dans un projet.

Les données de transport public sont un bien commun disponibles en open-data et se basent sur la norme GTFS. Elles sont malheureusement peu utilisées et mystifiées alors qu’elles sont au final une source d’informations riches et accessibles.

J'ai effectué une présentation sur le sujet dans les cas des Apéros Web Nancy, vous pouvez la retrouver sur slideshare.

La norme GTFS

La norme GTFS est définie par Google et concerne les données relatives à la description d'un réseau de transport en commun. Elle inclut notamment la topologie du réseau (arrêts, lignes, etc.) mais également les horaires de passages des bus. Elle est composée de 6 à 13 fichiers txt (6 requis, 7 optionnels) sous la forme CSV à en-tête. Chacun décrit un élément en particulier du réseau et leur nom est facilement traduisible de l'anglais en français.

Agency

Le fichier agency donne toutes les informations sur les différentes agences en charge d'un réseau. En effet, tous les transports d'une ville ne sont pas forcément gérée par la même agence, ou cela a été présenté différemment aux usagers du réseau. Dans le cas de Metz, il existe par exemple 2 agences dans le fichier, l'une concerne les lignes voyageant peu mais desservant des villages relativement éloignés du centre, tandis que l'autre concerne le reste du réseau.

On y trouve :

  • agency_id : l'identifiant unique de l'agence
  • agency_name : le nom de l'agence
  • agency_url : le site internet de l'agence
  • agency_timezone : le fuseau horaire de l'agence

Avec par exemple :

agency_id : 1
agency_name : LE MET'
agency_url : http://lemet.fr
agency_timezone : Europe/Paris

Routes

Le fichiers routes décrit les lignes proposées par le réseau avec notamment le type de véhicule (bus, métro, tramm, etc).

On y trouve :

  • route_id : l'identifiant unique de la ligne
  • agency_id : l'identifiant de l'agence s'occupant de la ligne
  • route_short_name : le numéro de la ligne
  • route_long_name : le nom complet de la ligne
  • route_type : le type de véhicule de la ligne (3 pour un bus)

Avec par exemple :

route_id : 4
agency_id : 1
route_short_name : 3
route_long_name : MONTIGNY ST PRIVAT - WOIPPY LE PATIS
route_type : 3

Stops

Le fichier stops décrit les arrêts présents sur le réseau avec principalement sa position géographique.

On y trouve :

  • stop_id : l'identifiant unique de l'arrêt
  • stop_name : le nom de l'arrêt
  • stop_lat : la latitude de l'arrêt
  • stop_lon : la longitude de l'arrêt

Avec par exemple :

stop_id : 20054
stop_name : MONTIGNY ST-PRIVAT
stop_lat : +49.084679
stop_lon : +06.154756

Calendar

Le fichier calendar décrit les différentes périodes utilisées par le réseau et entrainant un changement d'horaires des bus. On peut avoir par exemple une période concernant la semaine hors week-end, une période pour le samedi et une autre pour le dimanche et jours fériés.

On y trouve :

  • service_id : l'identifiant unique du service
  • monday : le service est-il actif le lundi ? 1 oui, 0 non
  • tuesday : le service est-il actif le mardi ? 1 oui, 0 non
  • wednesday : le service est-il actif le mercredi ? 1 oui, 0 non
  • thursday : le service est-il actif le jeudi ? 1 oui, 0 non
  • friday : le service est-il actif le vendredi ? 1 oui, 0 non
  • saturday :le service est-il actif le samedi ? 1 oui, 0 non
  • sunday : le service est-il actif le dimanche ? 1 oui, 0 non
  • start_date : date de début du service
  • end_date : date de fin du service

Les dates du fichier respecte le schéma YYYYMMDD.

Avec par exemple :

service_id : 1
monday : 1
tuesday : 1
wednesday : 1 
thursday : 1
friday : 1
saturday : 1
sunday : 1
start_date : 20150831
end_date : 20160701

Trips

Le fichier trips décrit les trajets le long d'une ligne, dans un sens donné.

On y trouve :

  • route_id : l'identifiant de la ligne concernée
  • service_id : l'identifiant du service concerné
  • trip_id : l'identifiant unique du trajet

Les trips servent surtout de lien entre une route et des stop_times.

Avec par exemple :

route_id : 4
service_id : 1
trip_id : 4549175

Stop_times

Le fichiers stop_times décrit l'horaire de passage d'un trajet à un arrêt.

On y trouve :

  • trip_id : l'identifiant du trajet concerné
  • arrival_time : l'heure d'arrivée à l'arrêt
  • departure_time : l'heure de départ depuis l'arrêt
  • stop_id : l'identifiant de l'arrêt concerné
  • stop_sequence : ordre des arrêts le long du trajet

GTFS : une norme adaptable

J'ai présenté ici uniquement les fichiers requis, et les champs requis par fichier mais il existe de nombreuses autres subtilités proposées par la norme. Cependant, bien souvent, les fichiers GTFS sont fournis grâce à un export du logiciel utilisé par les régies de transport public et la disponibilité de tel ou tel fichier dépend de la qualité de l'export et de la licence acquise par le réseau.