Descrizione breve
General Transit Feed Specification (GTFS) è un formato di scambio digitale lanciato da Google per gli orari del traffico viaggiatori e le relative informazioni geografiche, ad es. l’ubicazione delle fermate. Nel frattempo, l’organizzazione MobiliyData (https://mobilitydata.org/). Esistono diverse versioni di GTFS – per il nostro record di dati con gli orari utilizziamo GTFS Static (GTFS-S, noto anche come GTFS Schedule).
Un file GTFS Static contiene tutti i trasporti pubblici della Svizzera di un anno di orario dei trasporti pubblici (365 giorni da metà dicembre). A differenza di GTFS Realtime (GTFS-RT), GTFS Static fornisce solo dati statici e non dati in tempo reale. (Anno d’orario su tp-info.ch)
Accesso ai dati
- https://data.opentransportdata.swiss/de/dataset/timetable-2025-gtfs2020 – Orario anno d’orario corrente (2025)
- https://data.opentransportdata.swiss/dataset/timetable-draft-gtfs – Bozza d’orario
Descrizione del funzionamento
GTFS Static viene fornito tramite una serie di file di testo in formato ZIP. Le informazioni contenute vengono ricavate dal file HDRF sottostante (https://opentransportdata.swiss/cookbook/timetable-cookbook/hafas-rohdaten-format-hrdf/). GTFS può rappresentare la maggior parte, ma non tutte, delle informazioni provenienti da HRDF. Queste informazioni sono fornite dalle singole imprese di trasporto. Ogni file fornisce informazioni su un determinato aspetto delle informazioni di transito, come le fermate (stops.txt), le linee (routes.txt), le corse (trips.txt), le imprese di trasporto (agency.txt) e altri dati rilevanti per l’orario. Alcune informazioni sono necessarie per fornire dati GTFS validi, altre sono facoltative e forniscono utili informazioni supplementari (ad es. modifiche dell’orario in determinati giorni festivi = calendar_dates.txt).
Data la vasta diffusione del formato, su GitHub esistono numerosi tool per la gestione dei dati GTFS, che MobilityData ha raccolto, noti come awesome-transit. Inoltre, opentransportdata.swiss mette a disposizione tool specifici per i dati svizzeri Tool e altro (nella sezione «Per la gestione dei dati d’orario GTFS e dei dati in tempo reale»).
Il grafico seguente mostra la correlazione reciproca tra i diversi file contenuti in GTFS, anche se attualmente non tutti sono registrati per i TP svizzeri:
Oltre a GTFS-S, su opentransportdata.swiss sono disponibili i seguenti formati GTFS:
- GTFS in tempo reale (GTFS-RT) con dati in tempo reale (ad es. ritardi)
- Service Alert GTFS in tempo reale (GTFS-SA) con dati relativi all’evento (ad es. sbarramento di una fermata a causa di un incidente)
- GTFS Flex per trasporti on demand (estensione di GTFS-S)
Descrizione tecnica
Struttura dei dati
Ogni file è composto da serie di testo e numeri, separate da virgole, con campi che forniscono le informazioni cercate. La prima riga contiene i nomi delle colonne, come d’abitudine per i file CSV. I singoli campi dei diversi file sono spiegati in dettaglio sul sito web ufficiale dello standard GTFS: https://gtfs.org/documentation/schedule/reference/
I seguenti file sono attualmente inclusi nel nostro record di dati:
- agency.txt
- calendar.txt
- calendar_dates.txt
- feed_info.txt
- routes.txt
- stop_times.txt
- stops.txt
- transfers.txt
- trips.txt
Di seguito viene fornita una panoramica riepilogativa dei singoli file. Ulteriori dettagli sono riportati nel Profilo GTFS svizzero.
agency.txt
Il file agency.txt elenca tutte le imprese di trasporto presenti nel record. Per motivi tecnici, si fa sempre riferimento allo stesso URL e numero di telefono, che però valgono solo per l’impresa di trasporto FFS.
Esempio:
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
Il file calendar.txt definisce per ogni «service_id» i giorni della settimana in cui tale «service_id» circola normalmente (ad es. lun.-ven.). start_date e end_date corrispondono all’intero periodo d’orario dal primo al cambiamento d’orario successivo (da dicembre a dicembre). «1» significa che il service_id circola nel giorno corrispondente, 0 significa che non circola.
Un «service_id» indica nel file «trips.txt» insieme a un «route_id» in quali giorni circola una determinata corsa.
Esempio:
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
Il file calendar_dates.txt definisce eventuali scostamenti/eccezioni rispetto al modello settimanale secondo calendar.txt. Spesso si tratta di giorni festivi, ma possono esserci anche altri motivi, come cantieri programmati o grandi eventi.
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
Il file feed_info.txt contiene metadati relativi al record di dati. La colonna «feed_version» indica la versione del set di dati GTFS cui si può fare riferimento nei feed in tempo reale GTFS.
Esempio:
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
Il file routes.txt contiene informazioni sulle linee.
La colonna route_id è strutturata come segue: <Betriebszweig>-<Liniennummer>-<Projektkurzbezeichnung>-<Linienversionsnummer>; spesso il numero di linea comprende anche un’estensione con un trattino, ad es. «-Y». Tuttavia, il contenuto delle singole parti di route_id è in gran parte specifico per il sistema che genera i dati GTFS e non è adatto a essere visualizzato per i viaggiatori. Le denominazioni delle linee rilevanti per i viaggiatori sono riportate nella colonna route_short_name.
Esempio (linee della rete celere regionale «S10» di diversi gestori alle righe 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"
Le colonne route_desc e route_type riportano i mezzi di trasporto indicati nella tabella sottostante. Il nostro record utilizza valori di elenco ampiamente diffuso da route_type in deroga alla Elenco secondo lo standard (che conosce solo 10 valori per 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
Il file stop_times.txt definisce gli orari di arrivo e di partenza di tutte le fermate per ogni singola corsa; normalmente è di gran lunga il file più grande di una fornitura GTFS-S (se viene fornito shapes.txt, può essere ancora più grande).
Esempio (una corsa completa, da Zurigo Triemli a Zurigo HB):
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
Il file stops.txt contiene tutte le fermate e, se disponibile, il bordo fermata esatto o il binario con eventuali indicazioni del settore. Da giugno 2025 viene inoltre emessa la colonna «platform_code», che contiene il rispettivo binario o bordo fermata dell’autobus o del tram. Da ottobre 2025, inoltre, nella colonna «original_stop_id» viene emesso lo Swiss Location ID (SLOID), se disponibile.
Esempio:
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
Il file transfers.txt definisce le regole per i cambi. Di solito le fermate interessate (from_stop_id e to_stop_id) e il tempo necessario per il cambio (min_transfer_time) sono indicati con transfer_type=2 (cambio «normale» con tempo minimo necessario secondo min_transfer_time).
Per tutti i diametralizzati con sezioni viene impostato transfer_type=4. transfer_type = 4 significa secondo lo standard GTFS che i viaggiatori non devono cambiare treno. Ciò riguarda ad es. i treni a destinazioni multiple che si suddividono e quindi cambiano trip_id, ma i viaggiatori possono rimanere seduti; questo può essere contrassegnato da un simbolo corrispondente.
Da ottobre 2025 le coincidenze garantite sono con transfer_type=1, il che significa che il mezzo di trasporto successivo attende i viaggiatori in coincidenza. In questi casi la colonna min_transfer_time resta vuota.
Su indicazione del centro direttivo, può tuttavia accadere che il veicolo in partenza non attenda.
Il tempo di cambio standard all’interno di una fermata in Svizzera è fissato a 2 minuti. Ciò non è visibile nel file GTFS, ma deve essere considerato nel routing.
Esempio:
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
Il file trips.txt contiene le singole corse delle linee definite in routes.txt.
- Per i treni, «trip_short_name» include il numero del treno.
- Un «trip» secondo GTFS rappresentato in Transmodel (https://en.wikipedia.org/wiki/Transmodel) il concetto di «DatedVehicleJourney» (in OJP si intende un «DatedJourney»). In Transmodel e OJP, un Trip è un viaggio del cliente così come viene restituito dal Trip Planner. Si compone di diverse tratte parziali, cambi e altri percorsi che devono essere percorsi in diverse modalità. In HRDF il «Trip» di GTFS corrisponde a «Corsa», mentre in NeTEx corrisponde a «ServiceJourney».
- L’implementazione svizzera utilizza original_trip_id, come definito per il GTFS Transit (Transito).https://developers.google.com/transit/gtfs/reference). Il campo contiene lo Swiss Journey ID (SJYID), che crea una relazione N:1 tra trip_id e SJYID. Lo SJYID è univoco solo su base giornaliera. Viene utilizzato anche in GTFS-RT.
- Il campo «hints» contiene le indicazioni sul traffico secondo lo standard del ramo informazione alla clientela (https://www.oev-info.ch/de/branchenstandard/uebersicht). I codici tariffari sono contenuti come TC-<Code>.
trip_id è strutturato come segue: <fortlaufende Nummer in trips.txt>.<service_id>.<route_id>.<Fahrwegsnummer>.<Fahrtrichtung>
Da giugno 2025, nel campo «trip_headsign» in caso di separazione di treni a destinazioni multiple vengono visualizzati testi di direzione composti. Ad esempio, nella corsa da Berna a Spiez potrebbe esserci «Briga | Zweisimmen», se una parte del treno proseguisse poi verso Briga, l’altra verso Zweisimmen.
Esempio:
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
Per il momento evitiamo consapevolmente di usare forme, perché al momento non le riceviamo dai sistemi fornitori. Abbiamo cercato di ricavarle dagli itinerari, ma la qualità non è bastata. Nella roadmap SKI gli itinerari sono un argomento, ma occorrerà ancora del tempo.
Di tanto in tanto verificheremo se possiamo realizzare meglio le forme. Al momento lavoreremo sulla base di OpenStreetMap (OSM). Ciò significa che le forme saranno soggette alla licenza OSM.
Con software come pfaedle, chiunque può creare forme da solo: ad-friburgo/pfaedle: Map-Matching preciso per i feed di transito pubblico. Genera forme GTFS di alta qualità dai dati OSM.
Giorni di circolazione e giorni civili in GTFS-S e GTFS-RT
La start_day in GTFS-S è il giorno d’esercizio di inizio («Start service day for the service interval.»). Si possono quindi visualizzare indicazioni temporali > 24:00, perché le corse di mezzi di trasporto che iniziano dopo la mezzanotte (quindi già il giorno civile successivo) continuano a appartenere allo stesso giorno di circolazione.
In GTFS-RT non sono presenti informazioni specifiche sul giorno di circolazione, dove StartDate corrisponde sempre al giorno civile. La stessa corsa può quindi partire da GTFS-S alle 24:47:00, ma in GTFS-RT ha una startTime delle 00:47:00.
Stabilità degli identificatori tra versioni del file GTFS Static
GTFS Static viene creato due volte ogni settimana. È pertanto possibile che service_id e trip_id non siano identici.
Ciclo di fornitura dei nuovi file statici GTFS
Il martedì e il venerdì viene pubblicata una nuova versione dei dati HRDF (base per GTFS-S), 1-2 giorni lavorativi dopo tra le 9.00 e le 10.00 il GTFS Static, che si basa su di essa (v. tabella sottostante).
Il giorno stesso alle ore 15 viene attivato il feed GTFS-RT corrispondente.
Nota bene: nei giorni festivi (ad es. lunedì di Pasqua, lunedì di Pentecoste ecc.) non vengono effettuati aggiornamenti.
| Pubblicazione HRDF | Pubblicazione GTFS-S | Attivazione GTFS-RT |
|---|---|---|
| Venerdì | Lunedì tra le 9.00 e le 10.00 | Lunedì ore 15.00 |
| Martedì | Giovedì tra le 9.00 e le 10.00 | Giovedì ore 15.00 |
In caso di perturbazione: Il record di dati statici GTFS viene pubblicato il prima possibile, seguito da GTFS Realtime circa 5-6 ore più tardi, ma non oltre le 18.00 dello stesso giorno. Se ciò non fosse possibile, i nuovi dati vengono attivati in GTFS Realtime il giorno successivo.
Esempio: È stato possibile pubblicare i nuovi dati statici GTFS solo nel pomeriggio. L’attivazione dei dati in tempo reale GTFS avverrà il giorno successivo alle 9.00 circa.
Ulteriori indicazioni
Matching GTFS – HRDF
Il trip_id non ha nulla a che vedere con i dati HRDF. L’attribuzione tra le corse HRDF e GTFS non è esattamente 1:1, poiché l’ID della corsa (= numero di corsa) all’interno di un record di dati HRDF non deve essere univoco. Il feed HRDF più vecchio di un giorno (ad es. 13.8.2025) si adatta sempre al feed GTFS (ad es. 13.8.2025)
Con l’ausilio delle fermate e dei tempi di fermata si può però trovare la corsa adatta come segue:
In trips.txt compare trip_short_name, nell’esempio seguente 25358:
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",""
Corrisponde al numero della corsa (numero del treno esterno) nella riga *Z del file 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 %
Poiché, come menzionato, il numero corsa all’interno di un feed HRDF non deve essere univoco, per l’attribuzione si dovrebbero utilizzare anche i tempi di fermata e stop_ids della corsa di stop_times.txt. Nell’esempio dell’HRDF (sopra) e del GTFS (sotto), sono evidenziate a titolo di esempio le righe di partenza e di destinazione. Per quanto sia necessario per «matching» di due corse, i tempi coincidono:
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"
Link di approfondimento
- Sito web ufficiale dello standard GTFS (in inglese)
- Meeting online del 22.5.2025 (in tedesco): Dati dell’orario nel check (confronto tra tre formati: GTFS, HRDF e NeTEx)
- Meeting online del 13.11.2023 (in tedesco): In che modo i feed di dati GTFS contribuiscono a migliorare il trasporto pubblico in modo sostenibile
#AutoTranslate
