Description rapide
General Transit Feed Specification (GTFS) est un format d’échange numérique lancé par Google pour les horaires des transports publics de voyageurs et les informations géographiques associées, telles que la localisation des arrêts. Désormais, l’organisation MobiliyData (https://mobilitydata.org/). Il existe différentes variantes de GTFS. Pour notre jeu de données avec les horaires, nous utilisons GTFS Static (GTFS-S; également connu sous le nom de GTFS Schedule).
Un fichier GTFS-Static contient l’ensemble des transports publics suisses d’une année d’horaire des transports publics (365 jours à partir de la mi-décembre). Contrairement à GTFS Realtime (GTFS-RT), GTFS Static ne fournit que des données statiques et non des données en temps réel. (Année d’horaire sur tp-info.ch/fr)
Accès aux données
- https://data.opentransportdata.swiss/de/dataset/timetable-2025-gtfs2020 – Horaire de l’année d’horaire actuelle (2025)
- https://data.opentransportdata.swiss/dataset/timetable-draft-gtfs – Projet d’horaire
Description métier
GTFS Static est fourni au moyen d’une série de fichiers texte au format ZIP. Les informations contenues sont extraites du fichier HDRF sous-jacent (https://opentransportdata.swiss/cookbook/timetable-cookbook/hafas-rohdaten-format-hrdf/). GTFS peut représenter la plupart mais pas la totalité des informations issues des HRDF. Ces informations sont fournies par les différentes entreprises de transport. Chaque fichier fournit des informations sur un aspect précis des informations sur le transit, comme les arrêts (stops.txt), les lignes (routes.txt), les trajets (trips.txt), les entreprises de transport (agency.txt) et d’autres données pertinentes pour l’horaire. Certaines indications sont nécessaires pour fournir des données GTFS valides, d’autres sont facultatives et fournissent des informations complémentaires utiles (p. ex. modifications de l’horaire certains jours fériés = calendar_dates.txt).
En raison de la généralisation du format, il existe sur GitHub de nombreux outils pour gérer les données GTFS collectées par MobilityData, connus sous le nom de transit génial. En outre, opentransportdata.swiss met à disposition des outils spécifiques pour les données suisses Tools and More (dans la section «Pour l’utilisation des données d’horaire et en temps réel GTFS»).
Le graphique ci-dessous montre les liens entre les différents fichiers contenus dans GTFS, qui ne sont pas tous pris en compte pour les transports publics suisses à l’heure actuelle:
Outre le GTFS-S, les formats GTFS suivants sont disponibles sur opentransportdata.swiss:
- GTFS Realtime (GTFS–RT) avec données en temps réel (p. ex. retards)
- Alertes de service GTFS en temps réel (GTFS-SA) avec les données de l’événement (p. ex. interdiction d’un arrêt pour cause d’accident)
- GTFS Flex pour les transports à la demande (extension du GTFS-S)
Description technique
Structure des données
Chaque fichier est composé de séries de textes et de chiffres séparées par des virgules avec des champs qui, ensemble, fournissent les informations recherchées. La première ligne contient les noms des colonnes, comme c’est le cas pour les fichiers CSV. Les différents champs dans les différents fichiers sont expliqués en détail sur le site officiel du standard GTFS: https://gtfs.org/documentation/schedule/reference/
Les fichiers suivants sont actuellement disponibles dans notre jeu de données:
- agency.txt
- calendar.txt
- calendar_dates.txt
- feed_info.txt
- routes.txt
- stop_times.txt
- stops.txt
- transfers.txt
- trips.txt
Une vue d’ensemble des différents fichiers est présentée ci-dessous. Pour plus de détails, veuillez consulter le Profil GTFS suisse.
agency.txt
Le fichier agency.txt répertorie toutes les entreprises de transport présentes dans le jeu de données. Pour des raisons techniques, il est toujours renvoyé à la même URL et au même numéro de téléphone; ils ne sont valables que pour l’entreprise de transport CFF.
Exemple:
agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone
"11","Schweizerische Bundesbahnen SBB","http://www.sbb.ch/","Europe/Berlin","DE","0848 44 66 88"
"65","THURBO","http://www.sbb.ch/","Europe/Berlin","DE","0848 44 66 88"
"823","Basler Verkehrsbetriebe","http://www.sbb.ch/","Europe/Berlin","DE","0848 44 66 88"
"37","Baselland Transport","http://www.sbb.ch/","Europe/Berlin","DE","0848 44 66 88"
"827","Städtische Verkehrsbetriebe Bern","http://www.sbb.ch/","Europe/Berlin","DE","0848 44 66 88"
"78","Sihltal-Zürich-Uetliberg-Bahn","http://www.sbb.ch/","Europe/Berlin","DE","0848 44 66 88"
"88","Regionalverkehr Bern-Solothurn","http://www.sbb.ch/","Europe/Berlin","DE","0848 44 66 88"
calendar.txt
Le fichier calendar.txt définit pour chaque «service_id» les jours de la semaine pendant lesquels ce «service_id» circule normalement (p. ex. lu-ve). start_date et end_date correspondent à toute la période d’horaire allant d’un changement d’horaire au prochain changement d’horaire (décembre à décembre). «1» signifie que le service_id circule le jour en question, 0 signifie qu’il ne circule pas.
Un «service_id» et un «route_id» précisent dans le fichier «trips.txt» les jours où un trajet spécifique circule.
Exemple:
service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date
"TA","1","1","1","1","1","1","1","20251214","20261212"
"TA+00000","1","1","1","1","1","1","1","20251214","20261212"
"TA+00100","1","1","1","1","1","0","0","20251214","20261212"
"TA+01000","0","0","0","0","0","0","1","20251214","20261212"
"TA+01100","0","0","1","0","1","0","0","20251214","20261212"
"TA+02000","1","1","1","1","1","0","0","20251214","20261212"
"TA+02100","0","0","0","0","1","0","0","20251214","20261212"
calendar_dates.txt
Le fichier calendar_dates.txt définit les écarts/exceptions par rapport au modèle hebdomadaire selon calendar.txt. Il s’agit souvent de jours fériés, mais il peut également y avoir d’autres raisons, comme des chantiers prévus ou de grands événements.
service_id,date,exception_type
"TA+00000","20260213","2"
"TA+00000","20260214","2"
"TA+00000","20260215","2"
"TA+00000","20260216","2"
"TA+00000","20260217","2"
"TA+00000","20260218","2"
feed_info.txt
Le fichier feed_info.txt contient des métadonnées sur le jeu de données. La colonne «feed_version» indique la version du jeu de données GTFS qui peut être référencée par les flux GTFS en temps réel.
Exemple:
feed_publisher_name,feed_publisher_url,feed_lang,feed_start_date,feed_end_date,feed_version
"SBB","http://www.sbb.ch/","DE","20251214","20261212","20250529"
routes.txt
Le fichier routes.txt contient les informations sur les lignes.
La colonne route_id est structurée comme suit: <Betriebszweig>-<Liniennummer>-<Projektkurzbezeichnung>-<Linienversionsnummer>; le numéro de ligne comporte souvent une extension par un tiret supplémentaire, p. ex. «-Y». Le contenu des différentes parties de la route_id est toutefois en grande partie spécifique au système qui génère les données GTFS et ne peut pas être affiché aux voyageurs. Les désignations de lignes pertinentes pour les voyageurs figurent dans la colonne route_short_name.
Exemple (lignes de RER «S10» de différents exploitants aux lignes 2 à 4):
route_id,agency_id,route_short_name,route_long_name,route_desc,route_type
"91-10-A-j26-1","78","S10","","S","109"
"91-10-B-j26-1","11","S10","","S","109"
"91-10-C-j26-1","65","S10","","S","109"
"91-29-j26-1","11","S29","","S","109"
"91-29-Y-j26-1","11","IC","","IC","102"
"91-46-j26-1","82","IR46","","IR","103"
"91-48-j26-1","11","RE48","","RE","106"
Les colonnes route_desc et route_type contiennent les moyens de transport indiqués dans le tableau ci-dessous. Notre jeu de données utilise des valeurs de ces liste largement diffusée de route_type par rapport à la Liste selon le standard (qui ne connaît que dix valeurs pour route_type):
| route_desc | DE | FR | IT | EN | route_type |
|---|---|---|---|---|---|
| ASC | Aufzug | Ascenseur | Ascensore | Lift / Elevator | 1303 |
| B | Bus | Autobus | Autobus | Bus | 700 |
| BP | PanoramaBus | Bus panoramique | PanoramaBus | Panorama Bus | 710 |
| BUS | Bus | Autobus | Autobus | Bus | 700 |
| CAR | Fernbus national | Bus longue distance national | Autobus nazionale a lunga percorrenza | National long-distance bus | 202 |
| CAX | Fernbus international | Bus grandes lignes international | Autobus a lunga percorrenza internazionale | International long-distance bus | 201 |
| EB | Eilbus | Bus express | Autobus espresso | Semi fast bus | 702 |
| EXB | Expressbus | Expressbus | Expressbus | Express bus | 702 |
| ICB | InterCity-Bus | Bus InterCity | Autobus InterCity | InterCity Bus | 202 |
| BN | Nacht-Bus | Bus de nuit | Bus notturno | Night Bus | 705 |
| RUB | Rufbus | Bus sur appel | Bus a chiamata | On-demand Bus | 715 |
| TX | Taxi | Taxi | Tassì | Taxi | 1500 |
| SL | Sesselbahn | Télésiège | Seggiovia | Chairlift | 1300 |
| CC | Zahnradbahn | Chemin de fer à crémaillère | Ferrovia a cremagliera | Rack-railroad / Cog Railway | 116 |
| GB | Gondelbahn | Télécabine | Ovovia | Gondola lift | 1300 |
| LB | Luftseilbahn | Téléphérique | Funivia | Cableway / Aerial Ropeway | 1300 |
| PB | Pendelbahn | Téléphérique à mouvement de va-et-vient | Funivia a movimento va e vieni | Aerial Tramway | 1300 |
| M | Metro | Métro | Metropolitana | Underground / Metro | 401 |
| FUN | Standseilbahn | Funiculaire | Funicolare | Funicular | 1400 |
| BAT | Schiff | Bateau | Battello | Ship / Boat | 1000 |
| BAV | Dampfschiff | Bateau à vapeur | Battello a vapore | Steam ship / boat | 1000 |
| FAE | Fähre | Traversier / Ferry | Nave traghetto | Ferry | 1000 |
| KAT | Katamaran | Catamaran | Catamarano | Katamaran | 1000 |
| T | Tram | Tram | Tram | Tram | 900 |
| TN | Nachttram | Tram de nuit | Tram notturno | Night Tram | 900 |
| AIR | Flugzeug | Avion | Velivolo | Airplane | 1100 |
| UUU | Unbekannte Art | Espèce inconnue | Specie sconosciuta | Unknown mode | 1700 |
| AG | Agenturzug | Train de l’agence | Treno d’agenzia | Agency Train | 117 |
| ARZ | Autoreisezug | Train d’autos accompagnées | Treno auto accompagnate | Car-carrying Train | 104 |
| AT | Autotunnelzug | Train-autos Tunnel | Treno per il trasporto di auto in galleria | Auto Tunnel Train | 104 |
| ATZ | Autotunnelzug | Train-autos Tunnel | Treno per il trasporto di auto in galleria | Auto Tunnel Train | 104 |
| E | Eilzug | Train accéléré | Treno espresso | Semi fast / non-stop Train | 103 |
| EC | EuroCity | EuroCity | EuroCity | EuroCity | 102 |
| EN | EuroNight | EuroNight | EuroNight | EuroNight | 105 |
| ES | Eurostar Italia | Eurostar Italia | Eurostar Italia | Eurostar Italia | 101 |
| EST | Eurostar | Eurostar | Eurostar | Eurostar | 101 |
| EXT | Extrazug | Train spécial | Treno speciale | Special Event Train | 117 |
| IC | InterCity | InterCity | InterCity | InterCity | 102 |
| ICE | InterCityExpress | InterCity-Express | InterCityExpress | InterCityExpress | 102 |
| IR | InterRegio | InterRegio | InterRegio | InterRegio | 103 |
| NJ | NightJet | NightJet | Nightjet | NightJet | 105 |
| P | Zug ohne Gewähr | Train non garanti | Treno senza garanzia | Train without Guarantee | 100 |
| PE | PanoramaExpress | PanoramaExpress | PanoramaExpress | PanoramaExpress | 107 |
| R | Regio | Train régional | Regio | Regio | 106 |
| RB | Regionalbahn | Réseau régional | Ferrovia regionale | Regional train | 106 |
| RE | RegioExpress | RegioExpress | RegioExpress | RegioExpress | 106 |
| RJ | Railjet | Railjet | Railjet | Railjet | 102 |
| RJX | Railjet Xpress | Railjet Xpress | Railjet Xpress | Railjet Xpress | 102 |
| S | S-Bahn | RER | Rete celere regionale | Urban Train | 109 |
| SN | Nacht-S-Bahn | RER de nuit | S-Bahn (rete celere regionale) notturna | Night-urban Train | 109 |
| TER | Train Express Regional | Train Express régional | Treno espresso regionale | Train Express Regional | 106 |
| TGV | Train à grande vitesse | Train à grande vitesse | Train à grande vitesse | Train à grande vitesse | 101 |
| ZUG | Zugskategorie unbekannt | Catégorie de train inconnue | Categoria del treno sconosciuta | Train Category Unknown | 100 |
stop_times.txt
Le fichier stop_times.txt définit les heures de départ et d’arrivée à tous les arrêts pour chaque trajet; il s’agit normalement, de loin, du fichier le plus volumineux d’une livraison GTFS-S (si le fichier shapes.txt est fourni, le fichier peut être encore plus volumineux).
Exemple (un parcours complet, de Zurich Triemli à Zurich gare centrale):
trip_id,arrival_time,departure_time,stop_id,stop_sequence,pickup_type,drop_off_type
"1.TA.91-10-A-j26-1.1.H","18:27:00","18:27:00","8503054:0:1","1","0","0"
"1.TA.91-10-A-j26-1.1.H","18:28:00","18:28:00","8503053:0:1","2","0","0"
"1.TA.91-10-A-j26-1.1.H","18:29:00","18:29:00","8503052:0:1","3","0","0"
"1.TA.91-10-A-j26-1.1.H","18:32:00","18:32:00","8503051:0:1","4","0","0"
"1.TA.91-10-A-j26-1.1.H","18:35:00","18:35:00","8503090:0:1","5","0","0"
"1.TA.91-10-A-j26-1.1.H","18:37:00","18:37:00","8503000:0:22","6","0","0"
stops.txt
Le fichier stops.txt contient tous les arrêts et, le cas échéant, la bordure d’arrêt exacte ou la voie avec d’éventuelles indications de secteur. Depuis juin 2025, la colonne «platform_code» est également affichée. Elle contient la voie ou la bordure d’arrêt du bus ou du tram. Depuis octobre 2025, le Swiss Location ID (SLOID) est également affiché dans la colonne «original_stop_id», le cas échéant.
Exemple:
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station,platform_code,original_stop_id
"1100723","Inzlingen, Zoll","47.58557417","7.67283424","","Parent1100723","","ch:1:sloid:1100723"
"1200730:0:A","Feldkirch, Bahnhof","47.24149699","9.60366412","","Parent1200730","A",""
"8505094:0:A","Schwyz, Bahnhof","47.02672889","8.63216309","","Parent8505094","A","ch:1:sloid:5094:0:462011"
"8507000:0:49","Bern","46.94822398","7.43333440","","Parent8507000","49","ch:1:sloid:7000:55:49"
"8509068:0:2CD","Klosters Platz","46.86939496","9.88073151","","Parent8509068","2CD","ch:1:sloid:9068:0:207133"
transfers.txt
Le fichier transfers.txt définit des règles de correspondance. Les arrêts concernés (from_stop_id et to_stop_id) et le temps nécessaire à la correspondance (min_transfer_time) sont indiqués avec la valeur transfer_type=2 (correspondance «normale» avec temps minimal selon min_transfer_time).
L’option transfer_type=4 est définie pour toutes les liaisons transversales comportant des coupures. transfer_type = 4 signifie, selon le standard GTFS, que les voyageurs ne doivent pas changer de train. C’est le cas p. ex. pour les trains à destinations multiples qui se séparent et changent ainsi le trip_id, mais que les voyageurs peuvent rester assis. Cela peut être signalé par un symbole correspondant.
En outre, depuis octobre 2025, des correspondances sont garanties avec transfer_type=1, ce qui signifie que le prochain moyen de transport attend les voyageuses et voyageurs en correspondance. La colonne min_transfer_time reste vide dans ce cas.
Sur instruction de la centrale, il peut toutefois arriver que le véhicule partant n’attend pas malgré tout.
En Suisse, le temps de correspondance par défaut pour un arrêt est fixé à deux minutes. Cela n’est pas visible dans le fichier GTFS lui-même, mais doit être pris en compte pour le routage.
Exemple:
from_stop_id,to_stop_id,from_route_id,to_route_id,from_trip_id,to_trip_id,transfer_type,min_transfer_time
"8501120:0:1","8501120:0:3","","","","","2","300"
"8501120:0:1","8501120:0:4","","","","","2","300"
"8501120:0:1","8501120:0:4A-D","","","","","2","300"
"8501120:0:1","8501120:0:4E-G","","","","","2","300"
"8507483:0:3","8507483:0:3","91-1-N-j26-1","91-1-N-j26-1","72.TA.91-1-N-j26-1.22.R","91.TA.91-1-N-j26-1.34.R","4",""
"8507483:0:3","8507483:0:3","91-1-N-j26-1","91-1-N-j26-1","72.TA.91-1-N-j26-1.22.R","100.TA.91-1-N-j26-1.36.R","4",""
"8507483:0:3","8507483:0:3","91-1-N-j26-1","91-11-N-j26-1","72.TA.91-1-N-j26-1.22.R","24.TA.91-11-N-j26-1.7.R","4",""
"8502282","8502282","92-634-j25-1","92-602-A-j25-1","104.TA.92-634-j25-1.1.H","114.TA.92-602-A-j25-1.1.H","1",""
"8577747","8577747","92-234-j25-1","92-235-A-j25-1","4.TA.92-234-j25-1.3.H","37.TA.92-235-A-j25-1.4.R","1",""
trips.txt
Le fichier trips.txt contient les trajets des lignes définies dans routes.txt.
- Pour les trains, «trip_short_name» contient le numéro de train.
- Un «trip» selon GTFS représenté dans Transmodel (https://en.wikipedia.org/wiki/Transmodel) la notion de «DatedVehicleJourney» (un «DatedJourney» dans l’OJP). Dans Transmodel et l’OJP, un Trip est un voyage du client retourné par le Trip Planner. Il se compose de différents trajets partiels, changements et autres parcours qui doivent être parcourus selon différents modes. Dans HRDF, le «trip» de GTFS correspond au «trajet» et dans NeTEx au «ServiceJourney».
- L’implémentation suisse utilise l’original_trip_id tel qu’il est défini pour GTFS Transit (https://developers.google.com/transit/gtfs/reference). Le champ contient le Swiss Journey ID (SJYID), qui établit une relation N:1 entre trip_id et SJYID. Le SJYID n’est univoque que sur une base journalière. Il est également utilisé dans GTFS-RT.
- Le champ «hints» contient les notes de circulation selon le standard de la branche information à la clientèle (https://www.oev-info.ch/de/branchenstandard/uebersicht). Les codes tarifaires sont inclus en tant que TC-<Code>.
trip_id est structuré comme suit: <fortlaufende Nummer in trips.txt>.<service_id>.<route_id>.<Fahrwegsnummer>.<Fahrtrichtung>
Depuis juin 2025, des textes de direction composés sont affichés dans le champ «trip_headsign» en cas de séparation de trains à destinations multiples. Au cours du trajet Berne–Spiez, par exemple, la mention «Brig | Zweisimmen» pourrait être affichée si une partie du train poursuit ensuite jusqu’à Brigue et l’autre jusqu’à Zweisimmen.
Exemple:
route_id,service_id,trip_id,trip_headsign,trip_short_name,direction_id,block_id,original_trip_id,hints
"91-2A-Y-j26-1","TA","10.TA.91-2A-Y-j26-1.3.H","Milano Centrale","23","0","","ch:1:sjyid:100001:23-003",""
"91-46-B-j26-1","TA+3t000","1.TA.91-46-B-j26-1.1.H","Sedrun","426","0","","","2 NF"
"92-5-B-j26-1","TA+d4","10.TA.92-5-B-j26-1.2.H","St. Gallen, Rotmonten","5612","0","","","NF"
"91-1-N-j26-1","TA","57.TA.91-1-N-j26-1.22.R","Brig | Zweisimmen","4185","1","1088","ch:1:sjyid:100015:4185-001","FL"
"91-1-N-j26-1","TA","58.TA.91-1-N-j26-1.22.R","Brig | Zweisimmen","4163","1","1089","ch:1:sjyid:100015:4163-001","FL"
"91-1-N-j26-1","TA","62.TA.91-1-N-j26-1.22.R","Brig | Zweisimmen","4159","1","1094","ch:1:sjyid:100015:4159-001","FL"
"91-1-N-j26-1","TA+c9","65.TA.91-1-N-j26-1.22.R","Brig | Zweisimmen","4179","1","1077","ch:1:sjyid:100015:4179-001","FL"
"91-7C-Y-j25-1","TA+97om0","1.TA.91-7C-Y-j25-1.1.H","Neuchâtel | Fribourg/Freiburg","31110","0","3748","ch:1:sjyid:100034:31110-019","FL TC-005000"
"91-7C-Y-j25-1","TA+oot30","2.TA.91-7C-Y-j25-1.1.H","Neuchâtel | Fribourg/Freiburg","31112","0","3747","ch:1:sjyid:100034:31112-020","FL TC-005000"
shapes.txt
Actuellement, nous renonçons volontairement aux shapes, car ceux-ci ne nous sont pas communiqués, pour l’instant, par les systèmes fournisseurs. Nous avons essayé de les générer à partir des parcours, mais n’avons pas trouvé la qualité suffisante. Les parcours sont au cœur de la roadmap SKI, mais cela va encore durer.
Nous vérifierons de temps en temps si nous pouvons mieux créer les formes. Nous travaillerions actuellement sur la base d’OpenStreetMap (OSM). Les formes seront donc également soumises à la licence OSM.
Avec des logiciels tels que pfaedle, chacun peut créer lui-même des formes: ad-fribourg/pfaedle: Appariement cartographique précis pour les flux du transport en commun. Génère des formes GTFS de haute qualité à partir de données OSM.
Jours de circulation et jours civils au format GTFS-S et GTFS-RT
Le start_day dans GTFS-S est le jour d’exploitation du début («Start service day for the service interval»). Il est donc possible que des indications de temps >24h00 soient indiquées, car les courses de moyens de transport qui commencent après minuit, c’est-à-dire le jour civil suivant, appartiennent toujours au même jour d’exploitation.
Dans GTFS-RT, il n’y a pas d’information spécifique pour le jour de circulation, le «StartDate» y étant toujours le jour civil. Le même convoi peut donc partir à 24:47:00 dans GTFS-S, mais avoir un «StartTime» de 00:47:00 dans GTFS-RT.
Stabilité des identifiants entre les versions du fichier statique GTFS
GTFS Static est recréé deux fois par semaine. Il est donc possible que le service_id et le trip_id ne soient pas identiques.
Cycle de déploiement des nouveaux fichiers GTFS statiques
Une nouvelle version des données HRDF (base pour GTFS-S) est publiée le mardi et le vendredi; la statique GTFS basée sur celle-ci est publiée 1 à 2 jours ouvrables plus tard, entre 9 et 10 heures (voir tableau ci-dessous).
Le même jour, à 15 heures, le flux GTFS-RT correspondant est activé.
Remarques importantes: aucune mise à jour n’est effectuée les jours fériés (p. ex. lundi de Pâques, lundi de Pentecôte, etc.).
| Publication HRDF | Publication GTFS-S | Activation GTFS-RT |
|---|---|---|
| Vendredi | Lundi entre 9h00 et 10h00 | Lundi, 15h00 |
| Mardi | Jeudi entre 9h00 et 10h00 | Jeudi, 15h00 |
En cas de dérangement: L’enregistrement GTFS Static est publié dès que possible, suivi de GTFS Realtime environ 5 à 6 heures plus tard, mais au plus tard jusqu’à 18h00 le jour même. Si cela n’est pas possible, les nouvelles données sont activées dans GTFS Realtime le lendemain.
Exemple: Les nouvelles données GTFS statiques n’ont pu être publiées que dans l’après-midi. L’activation des données GTFS en temps réel aura lieu le lendemain vers 9h00.
Informations complémentaires
Appariement GTFS-HRDF
Le trip_id n’a aucun lien avec les données HRDF. L’attribution entre les courses HRDF et GTFS n’est pas 1:1, car l’ID de course (= numéro de course) ne doit pas être unique dans un bloc de données HRDF. Le flux HRDF d’un jour (p. ex. 2025-08-13) correspond toujours au flux GTFS (p. ex. 2025-08-14).
En utilisant les arrêts et les temps d’arrêt, il est toutefois possible de trouver le trajet approprié comme suit:
Le trip_short_name est indiqué dans le fichier trips.txt, 25358 dans l’exemple suivant:
route_id,service_id,trip_id,trip_headsign,trip_short_name,direction_id,block_id,original_trip_id,hints
"91-30-B-j25-1","TA+7ma70","79.TA.91-30-B-j25-1.32.R","Cadenazzo","25358","1","","ch:1:sjyid:100001:25358-001",""
Celui-ci correspond au numéro de circulation (numéro de train externe) à la ligne *Z du fichier FPLAN:
*Z 025358 000011 103 % -- 39759342469 --
*G S 8301030 8505404 %
*A VE 8301030 8505404 755971 %
*A X 8505410 8505410 755971 %
*A X 8505405 8505405 755971 %
*I JY 000011968 %
*I hi 8301030 8505404 000011847 %
*L 30 8301030 8505404 %
*R H %
8301030 Gallarate 00819 %
8301145 Besnate 00824 00825 %
8301144 Mornago-Cimbro 00829 00830 %
8301143 Ternate-Varano Borgh 00835 00836 %
8301142 Travedona-Biandronno 00839 00840 %
8301141 Besozzo 00844 00845 %
8301140 Sangiano 00850 00851 %
8301118 Laveno-Mombello 00856 00901 %
8301113 Luino (I) 00915 00918 %
8505874 Colmegna 00922 00922 %
8505861 Maccagno 00925 00925 %
8505862 Pino-Tronzano 00930 00930 %
8505408 Ranzo-S. Abbondio 00934 00934 %
8505410 Gerra (Gambarogno) 00935 00935 %
8505407 S. Nazzaro 00940 00940 %
8505406 Magadino-Vira 00946 00946 %
8505405 Quartino 00949 00949 %
8505404 Cadenazzo 00956 %
Comme le numéro de course ne doit pas être unique au sein d’un flux HRDF, comme mentionné précédemment, les temps d’arrêt et les stop_ids de la course issus de stop_times.txt doivent être pris en compte dans l’attribution. Dans l’exemple de HRDF (en haut) et GTFS (en bas), les lignes de départ et de destination sont sélectionnées à titre d’exemple. Comme pour le «matching» de deux courses, les heures sont identiques:
trip_id,arrival_time,departure_time,stop_id,stop_sequence,pickup_type,drop_off_type
"79.TA.91-30-B-j25-1.32.R","08:19:00","08:19:00","8301030","1","0","0"
"79.TA.91-30-B-j25-1.32.R","08:24:00","08:25:00","8301145","2","0","0"
"79.TA.91-30-B-j25-1.32.R","08:29:00","08:30:00","8301144","3","0","0"
"79.TA.91-30-B-j25-1.32.R","08:35:00","08:36:00","8301143","4","0","0"
"79.TA.91-30-B-j25-1.32.R","08:39:00","08:40:00","8301142","5","0","0"
"79.TA.91-30-B-j25-1.32.R","08:44:00","08:45:00","8301141","6","0","0"
"79.TA.91-30-B-j25-1.32.R","08:50:00","08:51:00","8301140","7","0","0"
"79.TA.91-30-B-j25-1.32.R","08:56:00","09:01:00","8301118","8","0","0"
"79.TA.91-30-B-j25-1.32.R","09:15:00","09:18:00","8301113","9","0","0"
"79.TA.91-30-B-j25-1.32.R","09:22:00","09:22:00","8505874","10","0","0"
"79.TA.91-30-B-j25-1.32.R","09:25:00","09:25:00","8505861:0:2","11","0","0"
"79.TA.91-30-B-j25-1.32.R","09:30:00","09:30:00","8505862:0:1","12","0","0"
"79.TA.91-30-B-j25-1.32.R","09:34:00","09:34:00","8505408:0:1","13","0","0"
"79.TA.91-30-B-j25-1.32.R","09:35:00","09:35:00","8505410:0:1","14","0","0"
"79.TA.91-30-B-j25-1.32.R","09:40:00","09:40:00","8505407:0:1","15","0","0"
"79.TA.91-30-B-j25-1.32.R","09:46:00","09:46:00","8505406:0:2","16","0","0"
"79.TA.91-30-B-j25-1.32.R","09:49:00","09:49:00","8505405:0:1","17","0","0"
"79.TA.91-30-B-j25-1.32.R","09:56:00","09:56:00","8505404:0:1","18","0","0"
Liens utiles
- Site officiel de la norme GTFS (en anglais)
- Meetup en ligne du 22 mai 2025 (en allemand): Données d’horaire dans le contrôle (comparaison de trois formats: GTFS, HRDF et NeTEx.)
- Meetup en ligne du 13 novembre 2023 (en allemand): Comment les flux de données GTFS contribuent-ils durablement à l’amélioration des transports publics
#AutoTranslate
