GTFS

Kurzbeschreibung

General Transit Feed Specification (GTFS) ist ein ursprünglich von Google entwickeltes digitales Austauschformat für Fahrpläne des öffentlichen Personenverkehrs und dazugehörigen geografischen Informationen, wie z.B. Standorte von Haltestellen. Die Daten werden durch Transportunternehmen zur Verfügung gestellt und als gesammelte Datenbank auf der Open-Data Plattform öV-Schweiz im GTFS-Format publiziert. Genutzt werden die Daten zur Entwicklung von Applikationen im Zusammenhang mit dem öffentlichen Verkehr, wie z.B. Fahrplanabfragen.

Im Gegensatz zu GTFS Realtime (GTFS-RT) liefert GTFS Static, wie der Name schon sagt, nur statische Daten und keine Echtzeitdaten.

Mit dieser Static-Datei wird der gesamte öffentliche Verkehr eines Landes in einem einzigen Feed dargestellt.

Zu den Daten/APIs:

https://data.opentransportdata.swiss/de/dataset/timetable-2025-gtfs2020 (2025)

Fachliche Beschreibung

GTFS Static wird anhand einer Reihe von Text-Files im ZIP-Format bereitgestellt. Jedes File gibt Informationen zu einem bestimmten Aspekt der Transit-Informationen wie beispielsweise Haltestellen (stops.txt), Routen (routes.txt), Fahrten (trips.txt), Transportunternehmen (agency.txt) und weiteren fahrplanrelevanten Daten. Einige Angaben sind notwendig, um valide GTFS-Daten bereitzustellen, andere sind optional und liefern nützliche Zusatzinformationen (wie z.B. Änderungen des Fahrplans an spezifischen Feiertagen = calendar_dates.txt).

Die folgende Grafik zeigt das Zusammenspiel der verschiedenen Informationen, wobei zurzeit nicht alle für den öV-Schweiz erfasst und im GTFS Format verfügbar sind:

Klassen GTFS Static
Klassen GTFS Static

Gehe zu Datensatz: https://data.opentransportdata.swiss/de/group/timetables-gtfs

Wichtige Konzepte

  • GTFS Static: Publikation von statischen Transit-Informationen im GTFS-Format.
  • GTFS Realtime:  Publikation von Echtzeit-Transit-Informationen als Anreicherung der statischen GTFS-Daten, in der Form von Protocol Buffers

Technische Beschreibung

Struktur der Daten

Jedes File besteht aus kommagetrennten Text- und Zahlenreihen mit Feldern, welche zusammengesetzt die gesuchten Informationen liefern. Eine ausführliche Beschreibung der einzelnen Felder in den verschiedenen Files werden im Detail auf der folgenden Webseite erläutert: https://developers.google.com/transit/gtfs/reference/

Für den GTFS Export des öV-Schweiz werden zurzeit die folgenden Files bereitgestellt:

  • agency.txt
  • calendar.txt
  • calendar_dates.txt
  • feed_info.txt
  • routes.txt
  • stop_times.txt
  • stops.txt
  • transfers.txt
  • trips.txt

Nicht zur Verfügung gestellt werden: fare_attributes.txt, fare_rules.txt und frequencies.txt

agency.txt

agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone
"11","Schweizerische Bundesbahnen SBB","http://www.sbb.ch/","Europe/Berlin","DE","0900 300 300 "
"801","PostAuto Schweiz","http://www.sbb.ch/","Europe/Berlin","DE","0900 300 300 "
"840","Busbetrieb Aarau","http://www.sbb.ch/","Europe/Berlin","DE","0900 300 300 "
"31","BDWM Transport (bd)","http://www.sbb.ch/","Europe/Berlin","DE","0900 300 300 "
"899","BDWM Transport (wm Auto)","http://www.sbb.ch/","Europe/Berlin","DE","0900 300 300 "
"886","Regionale Verkehrsbetriebe Baden-Wettingen","http://www.sbb.ch/","Europe/Berlin","DE","0900 300 300 "
"839","Zugerland Verkehrsbetriebe","http://www.sbb.ch/","Europe/Berlin","DE","0900 300 300"

calendar.txt

service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date
"TA+b000b","1","1","1","1","1","0","0","20161211","20171209"
"TA+b0001","1","1","1","1","1","1","1","20161211","20171209"
"TA+b0016","0","0","0","0","1","1","0","20161211","20171209"
"TA+b0dmg","0","0","0","0","0","0","1","20161211","20171209"
"TA+b12cr","1","1","1","1","0","0","0","20161211","20171209"
"TA+b0008","1","1","1","1","1","0","0","20161211","20171209"
"TA+b0027","1","1","1","1","1","1","0","20161211","20171209"
"TA+b0dnc","0","0","0","0","0","1","1","20161211","20171209"
"TA+b001r","1","1","1","1","1","0","1","20161211","20171209"
"TA+b001j","0","0","0","0","0","1","0","20161211","20171209"
"TA+b001t","0","0","0","0","0","0","1","20161211","20171209"
"TA+b04oi","1","1","1","1","1","0","0","20161211","20171209"
"TA+b0ch2","0","0","0","1","0","0","0","20161211","20171209"

calendar_dates.txt

service_id,date,exception_type
"TA+b0003","20161226","2"
"TA+b0003","20170102","2"
"TA+b0003","20170414","2"
"TA+b0003","20170417","2"
"TA+b0003","20170501","2"
"TA+b0003","20170525","2"
"TA+b0003","20170605","2"
"TA+b0003","20170801","2"
"TA+b0007","20161226","2"
"TA+b0007","20170102","2"
"TA+b0007","20170414","2

feed_info.txt

feed_publisher_name,feed_publisher_url,feed_lang,feed_start_date,feed_end_date,feed_version
"SBB","http://www.sbb.ch/","DE","20161211","20171209","20170518"

routes.txt

route_id,agency_id,route_short_name,route_long_name,route_desc,route_type
"91-10-A-j22-1","37","10","","T","900"
"91-10-B-j22-1","78","S10","","S","109"
"91-10-C-j22-1","11","S10","","S","109"
"91-10-E-j22-1","65","S10","","S","109"
"91-10-F-j22-1","11","RE10","","RE","106"
"91-10-G-j22-1","11","SN10","","SN","109"
"91-10-j22-1","3849","10","","T","900"
"91-10-Y-j22-1","82","IR","","IR","103"

Achtung:

  • Einige Routen in GTFS haben eine Erweiterung “-Y”. Der Grund liegt darin, dass sie eine künstlich angelegte Liniennummer haben. Nur so kann “route_short_name” gültig sein. Diese künstlichen Linien sollten den Benutzern nicht angezeigt werden. Für Züge wird “trip_short_name” die Zugnummer beinhalten.

route_type und route_desc (Spalte “Abkürzung”) entsprechen den Verkehrsmitteln gemäss untenstehender Tabelle. Wir benutzen eine weit verbreitete Liste von route_type in Abweichung von der Liste gemäss Standard (welcher nur zehn Werte für route_type kennt):

AbkürzungDEFRITENroute_type
ASCAufzugAscenseurAscensoreLift / Elevator1303
BBusAutobusAutobusBus700
BNNachtbusBus de nuitAutobus notturnoNight Bus705
BPPanoramaBusBus panoramiquePanoramaBusPanorama Bus710
BUSBusAutobusAutobusBus700
CARFernbus nationalBus longue distance nationalAutobus nazionale a lunga percorrenzaNational long-distance bus202
CAXFernbus internationalBus grandes lignes internationalAutobus a lunga percorrenza internazionaleInternational long-distance bus201
EBEilbusBus expressAutobus espressoSemi fast bus702
EXBExpressbusExpressbusExpressbusExpress bus702
ICBInterCity-BusBus InterCityAutobus InterCityInterCity Bus202
KBKleinbusMinibusFurgoncinoMinibus700
NBNacht-BusBus de nuitBus notturnoNight Bus705
NFBNiederflur-BusBus à plancher surbaisséBus a pianale ribassatoLow-floor bus700
NFONiederflur-TrolleybusTrolleybus à plancher surbaisséFilobus a pianale ribassatoLow-floor trolley bus700
RUBRufbusBus sur appelBus a chiamataOn-demand Bus715
TXTaxiTaxiTassìTaxi1500
SLSesselbahnTélésiègeSeggioviaChairlift1300
CCZahnradbahnChemin de fer à crémaillèreFerrovia a cremaglieraRack-railroad / Cog Railway1400
GBGondelbahnTélécabineOvoviaGondola lift1300
LBLuftseilbahnTéléphériqueFuniviaCableway / Aerial Ropeway1300
PBPendelbahnTéléphérique à mouvement de va-et-vientFunivia a movimento va e vieniAerial Tramway1300
MMetroMétroMetropolitanaUnderground / Metro401
FUNStandseilbahnFuniculaireFunicolareFunicular1400
BATSchiffBateauBattelloShip / Boat1000
BAVDampfschiffBateau à vapeurBattello a vaporeSteam ship / boat1000
FAEFähreTraversier / FerryNave traghettoFerry1000
KATKatamaranCatamaranCatamaranoKatamaran1000
NFTNiederflur-TramTram à plancher surbaisséTram a pianale ribassatoLow-floor Tramway900
TTramTramTramTram900
TNNachttramTram de nuitTram notturnoNight Tram900
AIRFlugzeugAvionVelivoloAirplane1100
UUUUnbekannte ArtEspèce inconnueSpecie sconosciutaUnknown mode1700
AGAgenturzugTrain de l’agenceTreno d’agenziaAgency Train117
ARCArco ARCOARCOArco102
ARZAutoreisezugTrain d’autos accompagnéesTreno auto accompagnateCar-carrying Train104
ATAutotunnelzugTrain-autos TunnelTreno per il trasporto di auto in galleriaAuto Tunnel Train104
ATRAltariaAltariaAltariaAltaria102
ATZAutotunnelzugTrain-autos TunnelTreno per il trasporto di auto in galleriaAuto Tunnel Train104
AVEAlta Velocidad ESAlta Velocidad ESAlta Velocidad ESAlta Velocidad ES101
BEXBernina ExpressBernina ExpressBernina ExpressBernina Express107
CATCity Airport TrainCity Airport TrainTreno città-aeroportoCity Airport Train111
CNLCityNightLineCityNightLineCityNightLineCityNightLine105
DSchnellzugTrain ExpressTreno espressoFast Train103
EEilzugTrain accéléréTreno espressoSemi fast / non-stop Train103
ECEuroCityEuroCityEuroCityEuroCity102
EMEuromedEuromedEuromedEuromed102
ENEuroNightEuroNightEuroNightEuroNight105
ESEurostar ItaliaEurostar ItaliaEurostar ItaliaEurostar Italia101
ESTEurostarEurostarEurostarEurostar101
EXTExtrazugTrain spécialTreno specialeSpecial Event Train117
GEXGlacier ExpressGlacier ExpressGlacier ExpressGlacier Express107
ICInterCityInterCityInterCityInterCity102
ICEInterCityExpressInterCity-ExpressInterCityExpressInterCityExpress102
ICNIC-NeigezugTrain pendulaire ICTreno basculante ICIC Tilting Train102
INInterCityNachtNuit InterCityInterCityNightInterCityNight102
IRInterRegioInterRegioInterRegioInterRegio103
IREInterregio-ExpressInterregioExpressInterregio-ExpressInterregio-Express103
ITItaloItaloItaloItalo102
JATGefängniszugTrain-prisonTreno della prigioneJail / Prison Train111
MATLeermaterialZug (Reisezugswagen)Train de matériel vide (voiture de voyageurs)Treno vuoto (carrozze passeggeri)Empty material train (passenger carriage)111
MPLeermaterialZug PersonenbefördTrain de matériel vide Transport de personnesTreno materiale vuoto Trasporto passeggeriEmpty material train with passenger transport111
NJNightJetNightJetNightjetNightJet105
NZNacht-ZugTrain de nuitTreno notturnoNight Train105
PZug ohne GewährTrain non garantiTreno senza garanziaTrain without Guarantee100
PEPanoramaExpressPanoramaExpressPanoramaExpressPanoramaExpress107
RRegioTrain régionalRegioRegio106
RBRegionalbahnRéseau régionalFerrovia regionaleRegional train106
RERegioExpressRegioExpressRegioExpressRegioExpress106
RJRailjetRailjetRailjetRailjet102
RJXrailjet xpressRailjet XpressRailjet XpressRailjet Xpress102
SS-BahnRERRete celere regionaleUrban Train109
SNNacht-S-BahnRER de nuitS-Bahn (rete celere regionale) notturnaNight-urban Train109
STBStadtbahnChemin de fer urbainFerrovia urbanaCity Railway109
TALTalgoTalgoTalgoTalgo101
TERTrain Express RegionalTrain Express régionalTreno espresso regionaleTrain Express Regional106
TE2TER200TER 200TER200TER200106
TGVTrain à grande vitesseTrain à grande vitesseTrain à grande vitesseTrain à grande vitesse101
THAThalysThalysThalysThalys101
TLKTwoje Linie KolejoweDeuxième Ligne KolejoweLinea Twoje KolejoweTwoje Line Kolejowe102
UEXUrlaubsExpressUrlaubsExpressHolidayExpressUrlaubsExpress (Holiday)104
VAEVoralpen-ExpressVoralpen-ExpressVoralpen-ExpressVoralpen-Express103
WBWestbahnWestbahnWestbahnWestbahn100
XInterConnexInterConnexInterConnexInterConnex100
X2X2000 NeigezugX2000 Train pendulaireTreno inclinabile X2000X2000 Tilting Train100
ZUGZugskategorie unbekanntCatégorie de train inconnueCategoria del treno sconosciutaTrain Category Unknown100

stop_times.txt

trip_id,arrival_time,departure_time,stop_id,stop_sequence,pickup_type,drop_off_type
"1.TA.1-9-j17-1.1.H","05:25:00","05:25:00","8502034:0:2","1","0","0"
"1.TA.1-9-j17-1.1.H","05:28:00","05:29:00","8502033:0:2","2","0","0"
"1.TA.1-9-j17-1.1.H","05:33:00","05:33:00","8502032:0:1","3","0","0"
"1.TA.1-9-j17-1.1.H","05:36:00","05:36:00","8502031:0:1","4","0","0"
"1.TA.1-9-j17-1.1.H","05:42:00","05:42:00","8502030:0:2","5","0","0"
"1.TA.1-9-j17-1.1.H","05:50:00","05:50:00","8502119:0:7","6","0","0"
"2.TA.1-9-j17-1.2.H","05:53:00","05:53:00","8502034:0:1","1","0","0"
"2.TA.1-9-j17-1.2.H","05:57:00","05:58:00","8502033:0:2","2","0","0"
"2.TA.1-9-j17-1.2.H","06:02:00","06:02:00","8502032:0:1","3","0","0"
"2.TA.1-9-j17-1.2.H","06:04:00","06:04:00","8502031:0:1","4","0","0"
"2.TA.1-9-j17-1.2.H","06:09:00","06:11:00","8502030:0:2","5","0","0"
"2.TA.1-9-j17-1.2.H","06:20:00","06:20:00","8502119:0:7","6","0","0"
"3.TA.1-9-j17-1.3.H","24:38:00","24:38:00","8502119:0:7","1","0","0"
"3.TA.1-9-j17-1.3.H","24:46:00","24:46:00","8502030:0:1","2","0","0"
"3.TA.1-9-j17-1.3.H","24:49:00","24:49:00","8502031:0:1","3","0","0"
"3.TA.1-9-j17-1.3.H","24:52:00","24:52:00","8502032:0:1","4","0","0"
"3.TA.1-9-j17-1.3.H","24:57:00","24:57:00","8502033:0:1","5","0","0"
"3.TA.1-9-j17-1.3.H","25:01:00","25:01:00","8502034:0:1","6","0","0"

stops.txt

stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station
"1101064","Malpensa Aeroporto, terminal 1","45.6272144319203","8.7111160249179","",""
"8000339","Weissenhorn Eschach","48.3010036099201","10.135089480891","",""
"8000709:0:2","Neckarsulm Mitte","49.1934688770383","9.22294014126908","",""
"8000778","Asselheim (D)","49.5762169849528","8.16159859923981","",""
"8000781","Grünstadt-Nord","49.5733510011593","8.17078836459763","",""
"8000988","Witzighausen","48.3174402469306","10.097800413442","",""
"8002015","Nördlingen","48.85084676195","10.4978651252803","","8002015P"
"8002015:0:4","Nördlingen","48.85090587299","10.4978651252803","","8002015P"
"8002015P","Nördlingen","48.85084676195","10.4978651252803","1",""
"8002023","Ebermergen","48.7562093140126","10.7109634770088","",""
"8002023:0:1","Ebermergen","48.7562685367003","10.7109634770088","",""
"8002038","Möttingen","48.8068073922247","10.5978386332639","","8002038P"
"8002038:0:1","Möttingen","48.8069257181851","10.5978386332639","","8002038P"
"8002038:0:2","Möttingen","48.8068665552398","10.5978386332639","","8002038P"
"8002038P","Möttingen","48.8068073922247","10.5978386332639","1",""
"8002039","Hoppingen","48.8038195691943","10.6532018042319","",""

Die Steige müssen in GTFS als einzelne Halte modelliert werden. Ein Wechsel des Steigs ist dann ein Wechsel des Stops aus Sicht GTFS.

x2123

Das Beispiel “8500010” (Basel SBB):

basel

Alle Halte von Basel haben einen gemeinsamen “Parent” “8500010P”. Die einzelnen Gleise sind mit “:” abgetrennt. Ein “Gleis” kann auch ein Gleis+Sektoren sein (Bsp: “8500010:0:7CD”). Es gibt auch sehr komische Ergänzungen, wie “Bern Bfpl” also “8507000:0:Bfpl”, wenn die RBS ihn für Bahnersatzbusse verwendet.

trips.txt

route_id,service_id,trip_id,trip_headsign,trip_short_name,direction_id,block_id,original_trip_id,hints
"91-8-H-j25-1","TA+a0","994.TA.91-8-H-j25-1.59.R","Zürich, Hardturm","6278","1","","ch:1:sjyid:100648:plan:f7e839d9-e352-4394-98d3-3bbb9e89c18e","NF"
"91-8-H-j25-1","TA+a0","995.TA.91-8-H-j25-1.59.R","Zürich, Hardturm","2978","1","","ch:1:sjyid:100648:plan:1a4cadd1-b637-425e-a805-0dd1e5e34831","NF"
"91-8-H-j25-1","TA+a0","996.TA.91-8-H-j25-1.59.R","Zürich, Hardturm","2787","1","","ch:1:sjyid:100648:plan:649d9606-64db-4daa-9356-770b19699be8","NF"
"91-8-H-j25-1","TA+a0","997.TA.91-8-H-j25-1.59.R","Zürich, Hardturm","4879","1","","ch:1:sjyid:100648:plan:7a49feb0-47b5-4fd7-9034-ce68f65225d3","NF"
"91-8-H-j25-1","TA+2d600","998.TA.91-8-H-j25-1.59.R","Zürich, Hardturm","10407","1","","ch:1:sjyid:100648:plan:95e7bbc4-c839-4932-8ee3-e82e0c355fc5","NF"
"91-8-H-j25-1","TA+2d600","999.TA.91-8-H-j25-1.59.R","Zürich, Hardturm","9788","1","","ch:1:sjyid:100648:plan:c35e7a02-b42d-49db-8763-4bdcd39a6282","NF"
"91-8I-Y-j25-1","TA+3c100","1.TA.91-8I-Y-j25-1.1.H","Arth-Goldau","3092","0","","ch:1:sjyid:100001:3092-001","1 FS FW PA RR SC VN Z TC-004002"
"91-8I-Y-j25-1","TA+3c100","2.TA.91-8I-Y-j25-1.2.R","Lugano","3093","1","","ch:1:sjyid:100001:3093-001","1 FS FW PA RR SC VN Z TC-004002"
"91-8-j25-1","TA+c6","1.TA.91-8-j25-1.12.H","Bern, Saali","2076","0","","","NF VB"

Achtung:

  • Für Züge beinhaltet “trip_short_name” die Zugnummer.
  • Ein “trip” gemäss GTFS repräsentiert in Transmodel den Begriff einer “DatedVehicleJourney” (in OJP eine “DatedJourney”).  In Transmodel und OJP ist ein Trip eine Reise des Kunden, wie sie vom Trip Planner zurückgegeben wird. Sie besteht aus verschiedenen Teilfahrten, Umsteigen und anderen Wegen, die mit verschiedenen Modi zurückgelegt werden müssen. In HRDF entspricht das GTFS-“trip” der Fahrt und in NeTEx der ServiceJourney.
  • (ab 12.12.2024) Wir nutzen die original_trip_id, wie sie für GTFS Transit definiert ist (https://developers.google.com/transit/gtfs/reference). Das Feld enthält die Swiss Journey ID (SJYID), die eine N:1-Beziehung zwischen trip_id und SJYID herstellt. Die SJYID ist nur auf Tagesbasis eindeutig. Sie ist auch im GTFS-RT abgebildet.
  • Das Feld “hints” enthält die Verkehrshinweise gemäss Branchenstandard-KI. Die Tarifcodes sind als TC-<Code> auch enthalten.

 

transfers.txt

Das File transfers.txt bildet die Metabahnhöfe mit ihren entsprechenden Umsteigezeiten ab. Ein Metabahnhof besteht bspw. aus dem Bahnhof und den umliegenden Bus- oder Tramhaltestellen. Die Umsteigeart und -zeiten zu den entsprechenden Haltestellen können in dieser Datei spezifiziert werden.

from_stop_id,to_stop_id,transfer_type,min_transfer_time
"8500125:0:2","8581833","2","120"
"8500125:0:1","8504114","2","120"
"8500125:0:1","8581833","2","120"
"8500123:0:13","8576779","2","60"
"8500122:0:2","8572021","2","60"
"8500122:0:2","8582973","2","300"
"8500122:0:1","8572021","2","60"
"8500122:0:1","8582973","2","300"
"8500121:0:2","8581130","2","60"
"8500121:0:2","8582149","2","120"
"8500120:0:1","8582081","2","180"
"8500120:0:1","8579767","2","60"
"8500120:0:1","8582562","2","120"

Stabilität von Identifiern zwischen Versionen des GTFS-Static-Files

Jede Woche wird das GTFS Static zweimal neu erzeugt. Daher kann es sein, dass die “service_id” und die “trip_id” nicht identisch sind.

Wann gibt es neue GTFS-Static-Files?

Jeweils am Mittwoch und Freitag wird das neue HRDF (Basis für GTFS-S) publiziert, am Tag darauf zwischen 9 und 10 Uhr jeweils das darauf basierende GTFS-Static.

Gleichentags um 15 Uhr wird jeweils der dazu passende GTFS-RT Feed aktiviert. (Seit 2024-09-26 wird im Header von GTFS-RT per FeedVersion auf die jeweils passende GTFS-Static-Version verwiesen, siehe Dokumentation GTFS-RT)

Bitte beachten: An Feiertagen (z. B. Ostermontag, Pfingstmontag u. a.) findet keine Aktualisierung statt.

Publikation HRDFPublikation GTFS-SAktivierung GTFS-RT
FreitagMontag zwischen 9 und 10 UhrMontag 15 Uhr
MittwochDonnerstag zwischen 9 und 10 UhrDonnerstag 15 Uhr

Im Störungsfall: Der GTFS-Static Export wird schnellstmöglich veröffentlicht, gefolgt von GTFS Realtime ca. 5–6 Stunden später, spätestens jedoch bis 18:00 Uhr desselben Tages. Sollte dies nicht realisierbar sein, erfolgt die Aktivierung der neuen Daten in GTFS Realtime am Folgetag.

Beispiel: Die neuen GTFS-Static-Daten konnten erst am Nachmittag publiziert werden. Die Aktivierung der GTFS-Realtime-Daten folgt am nächsten Tag um ca. 08:00 Uhr.

Interne Konsistenz eines GTFS-Static-Files

Wir bemühen uns, immer korrekte GTFS-Static-Files zu produzieren. Google schlägt vor, die interne Konsistenz mit dem FeedValidator zu testen. Leider kann die aktuelle Version mit der Grösse unserer Datei nicht umgehen. Ein anderes mögliches Werkzeug ist gtfstidy, das unter anderem eine Validierung vornehmen kann mit dem Parameter “-v”

Fragen & Antworten

Was bedeuten die ersten und letzten beiden Abschnitte der trip_id? Z. B. {405}.TA.26-752-j17-1.{3}.{R}Die trip_id besteht aus den folgenden Teilen: “<fortlaufende Nummer in der trips.txt>.<service_id>.<route_id>.<Fahrwegsnummer>.<Fahrtrichtung>”

route_id = <Betriebszweig>-<Liniennummer>-<Projektkurzbezeichnung>-<Linienversionsnummer>

Wie setzt sich die Trip ID zusammen?Die Trip ID setzt sich aus unterschiedlichen Nummern/Feldern zusammen und hat nichts mit den HRDF-Daten zu tun.

Die Zuordnung ist nicht ganz 1:1, da die Fahrt ID (= Fahrtnummer) nicht unique sein muss innerhalb eines HRDF-Datensatzes. Aber unter Zuhilfenahme von Haltestellen und Haltezeiten, wie der Datennutzer das gemacht hat, lässt sich die passende Fahrt wie folgt finden:

In der trips.txt steht der trip_short_name:

route_id,service_id,trip_id,trip_headsign,trip_short_name,direction_id

“26-94-j18-1″,”TA+b20xg”,”310.TA.26-94-j18-1.3.R”,”Zürich Oerlikon, Bahnhof”,”13628″,”1″

Dieser entspricht der Fahrtnummer (externe Zugnummer) in der *Z-Zeile der FPLAN-Datei:

unbenannt

Da die Fahrtnummer wie erwähnt nicht unique sein muss innerhalb eines HRDF-Feeds, sollte man zusätzlich die Haltezeiten und stop_ids der Fahrt aus der stop_times.txt zur Zuordnung mit heranziehen:

trip_id,arrival_time,departure_time,stop_id,stop_sequence,pickup_type,drop_off_type

“310.TA.26-94-j18-1.3.R”,”13:37:00″,”13:37:00″,”8587651″,”1″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:38:00″,”13:38:00″,”8587652″,”2″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:39:00″,”13:39:00″,”8591263″,”3″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:41:00″,”13:41:00″,”8591347″,”4″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:42:00″,”13:42:00″,”8591047″,”5″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:43:00″,”13:43:00″,”8591113″,”6″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:44:00″,”13:44:00″,”8591330″,”7″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:45:00″,”13:45:00″,”8591319″,”8″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:46:00″,”13:46:00″,”8591175″,”9″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:46:00″,”13:46:00″,”8591273″,”10″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:48:00″,”13:48:00″,”8591382″,”11″,”0″,”0″

“310.TA.26-94-j18-1.3.R”,”13:49:00″,“13:49:00″,”8580449”,”12″,”0″,”0″

Es passt immer der einen Tag jüngere HRDF-Feed (z. B. 25.09.2024) zum GTFS-Feed (z. B. 26.09.2024)

Weiterführende Angaben