GTFS

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)

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:

Klassen GTFS Static
Klassen GTFS Static

Oltre a GTFS-S, su opentransportdata.swiss sono disponibili i seguenti formati GTFS:

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

#AutoTranslate