Skip to content

GTFS

General Transit Feed Specification (GTFS) è un formato di scambio digitale sviluppato da Google per gli orari dei trasporti pubblici e le informazioni geografiche associate, come la posizione delle fermate. I dati sono forniti dalle aziende di trasporto e pubblicati come database collocato sulla piattaforma open data del trasporto pubblico svizzero in formato GTFS. I dati vengono utilizzati per sviluppare applicazioni legate al trasporto pubblico, come la richiesta di orari.

A differenza di GTFS Realtime (GTFS RT), GTFS Static, come suggerisce il nome, fornisce solo dati statici e non dati in tempo reale.

Con questo file statico, l’intero sistema di trasporto pubblico di un Paese viene visualizzato per la prima volta in un unico feed.

Descrizione tecnica

GTFS Static viene fornito come una serie di file di testo in formato ZIP. Ogni file fornisce informazioni su un aspetto specifico delle informazioni di transito, come le fermate (stops.txt), i percorsi (routes.txt), i viaggi (trips.txt), le aziende di trasporto (agency.txt) e altri dati rilevanti per l’orario. Alcuni dettagli sono necessari per fornire dati GTFS validi, altri sono facoltativi e forniscono informazioni aggiuntive utili (come le modifiche all’orario in determinati giorni festivi = calendar_dates.txt).

Il diagramma seguente mostra l’interazione delle varie informazioni, anche se attualmente non tutte sono registrate per il trasporto pubblico svizzero e disponibili in formato GTFS:

Klassen GTFS Static
Classi GTFS Statico

Vai al record di dati: https://opentransportdata.swiss/it/group/timetables-gtfs

Concetti importanti

  • GTFS Static: pubblicazione di informazioni statiche sul transito in formato GTFS.
  • GTFS Realtime: pubblicazione di informazioni sul transito in tempo reale come arricchimento dei dati statici GTFS, sotto forma di buffer di protocollo

Aspetti tecnici

Struttura dei dati

Ogni file è composto da righe di testo e numeri separati da virgole con campi che, combinati, forniscono le informazioni ricercate. Una descrizione dettagliata dei singoli campi dei vari file è riportata nel sito web https://developers.google.com/transit/gtfs/reference/.

Per l’esportazione GTFS dei trasporti pubblici svizzeri sono attualmente disponibili i seguenti file:

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

Non sono resi disponibili i seguenti elementi: fare_attributes.txt, fare_rules.txt und frequencies.txt

 

agency.txt

calendar.txt

calendar_dates.txt

feed_info.txt

routes.txt

Attenzione:

  • Alcuni percorsi in GTFS hanno un’estensione “-Y”. Il motivo è che hanno un numero di linea creato artificialmente. Questo è l’unico modo in cui “route_short_name” può essere valido. Queste linee artificiali non dovrebbero essere mostrate agli utenti in questo modo. Per i treni, “trip_short_name” conterrà il numero del treno.

I testi dei mezzi di trasporto utilizzati (la variabile route_desc contiene informazioni nella colonna “Abbreviation”):

Abbreviation DE FR IT EN Ref_TransportMode route_type
ASC Aufzug Ascenseur Ascensore Lift A 1700
B Bus Bus Bus Bus B 700
BN Nachtbus Bus ligne de nuit Bus notturno Nightbus B 705
BP PanoramaBus PanoramaBus Bus panoramico Panorama bus B 710
BUS Bus Bus Bus Bus B 700
CAR Fernbus national Bus longues distances national Bus nazionale a lunga percorrenza National long-distance bus B 202
CAX Fernbus international Bus longues distances international Bus internazionale a lunga percorrenza International long-distance bus B 201
EB Eilbus Bus acc‚l‚r‚ Bus accelerato Semi fast bus B 702
EXB Expressbus Bus express Bus espresso Express bus B 702
ICB InterCity-Bus InterCity-Bus InterCity-Bus Intercity-Bus B 202
KB Kleinbus Minibus Minibus Minibus B 700
NB Nacht-Bus Bus nocturne Bus notturno Night-Bus B 705
NFB Niederflur-Bus Bus … plancher surbaiss‚ Bus a pianale ribassato Low-floor bus B 700
NFO Niederflur-Trolleybus Trolleybus … plancher surbaiss‚ Filobus a pianale ribassato Low-floor trolley bus B 700
RUB Rufbus Bus sur appel bus a chiamata On-call bus B 715
TX Taxi Taxi Taxi Taxi B 1500
SL Sesselbahn T‚l‚siŠge Seggiovia Chairlift E 1300
CC Zahnradbahn Chemin de fer à crémaillère Cremagliera Rack-railroad H 1400
GB Gondelbahn T‚l‚cabine Cabinovia Gondola lift L 1300
LB Luftseilbahn T‚l‚ph‚rique Funivia Cableway L 1300
PB Pendelbahn T‚l‚ph‚rique … va-et-vient funivia a va e vieni aerial tramway L 1300
M Metro M‚tro Metropolitana Underground M 401
FUN Standseilbahn Funiculaire Funicolare Funicular N 1400
BAT Schiff Bateau Battello Ship S 1000
BAV Dampfschiff Bateau … vapeur Battello a vapore Steam ship S 1000
FAE F„hre Bac Traghetto Ferry-boat S 1000
KAT Katamaran Catamaran Catamarano Katamaran S 1000
NFT Niederflur-Tram Tram … plancher surbaiss‚ Tram a pianale ribassato Low-floor tramway T 900
T Tram Tram Tram Tramway T 900
TN Nachttram Tram ligne de nuit Tram notturno Nighttram T 900
AIR Flugzeug avion aeroplano aircraft U 1100
UUU Unbekannte Art Type inconnu Tipologia sconosciuta Unknown mode U 1700
AG Agenturzug Train d’agence Treno d’ agenzia Agencytrain Z 117
ARC Arco Arco Arco Arco Z 102
ARZ Autoreisezug Train autos-couch Treno navetta Car-carrying train Z 104
AT Autotunnelzug Train-auto Treno auto in galleria Car train Z 104
ATR Altaria Altaria Altaria Altaria Z 102
ATZ Autotunnelzug Train-auto Treno auto in galleria Car train Z 104
AVE Alta Velocidad ES Alta Velocidad ES Alta Velocidad ES Alta Velocidad ES Z 101
BEX Bernina Express Bernina Express Bernina Express Bernina Express Z 107
CAT City Airport Train City Airport Train City Airport Train City Airport Train Z 111
CNL CityNightLine CityNightLine CityNightLine CityNightLine Z 105
D Schnellzug Train direct Treno diretto Fast train Z 103
E Eilzug Train acc‚l‚r‚ Treno accelerato Semi fast train Z 103
EC EuroCity EuroCity EuroCity EuroCity Z 102
EM Euromed Euromed Euromed Euromed Z 102
EN EuroNight EuroNight EuroNight EuroNight Z 105
ES Eurostar Italia Eurostar Italia Eurostar Italia Eurostar Italia Z 101
EST Eurostar Eurostar Eurostar Eurostar Z 101
EXT Extrazug Train sp‚cial Treno speciale Special train Z 117
GEX Glacier Express Glacier Express Glacier Express Glacier Express Z 107
IC InterCity InterCity InterCity InterCity Z 102
ICE InterCityExpress InterCityExpress InterCityExpress InterCityExpress Z 102
ICN IC-Neigezug IC-pendulaire IC-pendolare IC-tilting train Z 102
IN InterCityNacht InterCityNuit InterCityNotte InterCityNight Z 102
IR InterRegio InterRegio InterRegio InterRegio Z 103
IRE Interregio-Express Interregio-Express Interregio-Express Interregio-Express Z 103
IT Italo Italo Italo Italo Z 102
JAT Gef„ngniszug Train prison Jail Train Jail Train Z 111
MAT LeermaterialZ (Reisezugswagen) Train de mat‚riel vide (voitures voyageurs) Materiale vuoto (treno viaggiatori) Empty material train (passenger carriage) Z 111
MP LeermaterialZ Personenbef”rd Train de mat‚riel vide avec transport de voyageurs Materiale vuoto con trasporto di persone Empty material train with passenger transport Z 111
NJ nightjet nightjet nightjet nightjet Z 105
NZ Nacht-Zug Train de nuit Treno notturno Night train Z 105
P Zug ohne Gew„hr Train non garanti Treno non garantito No guaranteed train Z 100
PE PanoramaExpress PanoramaExpress PanoramaExpress PanoramaExpress Z 107
R Regio Regio Regio Regio Z 106
RB Regionalbahn Train r‚gional Ferrovia regionale Regional train Z 106
RE RegioExpress RegioExpress RegioExpress RegioExpress Z 106
RJ Railjet Railjet Railjet Railjet Z 102
RJX railjet xpress railjet xpress railjet xpress railjet xpress Z 102
S S-Bahn RER Rete celere Urban train Z 109
SN Nacht-S-Bahn RER-nuit Rete celere notte Night-urban train Z 109
STB Stadtbahn Train urbain Ferrovia urbana City railway Z 109
TAL Talgo Talgo Talgo Talgo Z 101
TER Train Express Regional Train Express Regional Train Express Regional Train Express Regional Z 106
TE2 TER200 TER200 TER200 TER200 Z 106
TGV Train … grande vit. Train … grande vit. Train … grande vit. Train … grande vit. Z 101
THA Thalys Thalys Thalys Thalys Z 101
TLK Twoje Linie Kolejowe Twoje Linie Kolejowe Twoje Linie Kolejowe Twoje Linie Kolejowe Z 102
UEX UrlaubsExpress UrlaubsExpress UrlaubsExpress UrlaubsExpress Z 104
VAE Voralpen-Express Voralpen-Express Voralpen-Express Voralpen-Express Z 103
WB Westbahn Westbahn Westbahn Westbahn Z 100
X InterConnex InterConnex InterConnex InterConnex Z 100
X2 X2000 Neigezug X2000 pendulaire X2000 pendolare X2000 tilting train Z 100
ZUG Zugskategorie unbekannt Cat‚gorie du train inconnue Categoria di treno sconosciuta Train category unknown Z 100

stop_times.txt

stops.txt

 

Le colonne montanti devono essere modellate come singole fermate in GTFS. Un cambio di salita è quindi un cambio di fermata dal punto di vista del GTFS.

x2123

 

L’esempio “8500010” (Basel SBB):

basel

Tutte le fermate di Basilea hanno un “genitore” comune “8500010P”. Le singole tracce sono separate da “:”. Una “traccia” può anche essere una traccia+settori (ad esempio “8500010:0:7CD”). Ci sono anche aggiunte molto strane, come “Bern Bfpl”, cioè “8507000:0:Bfpl”, quando la RBS lo usa per gli autobus sostitutivi della ferrovia.

trips.txt

Attenzione:

  • Per i treni, “trip_short_name” contiene il numero del treno.
  • Un “trip/viaggio” secondo GTFS rappresenta il concetto di “DatedVehicleJourney” in Transmodel (un “DatedJourney” in OJP). In Transmodel e OJP, un TRIP è un viaggio del cliente restituito dal Trip Planner. Si tratta di vari viaggi parziali, trasferimenti e altri itinerari che devono essere percorsi con modalità diverse. In HRDF, il “trip/viaggio” GTFS corrisponde al percorso e in NeTEx al ServiceJourney.

 

transfers.txt

Il file transfers.txt mostra le stazioni della metropolitana e gli orari di trasferimento. Una stazione della metropolitana, ad esempio, è costituita dalla stazione ferroviaria e dalle fermate degli autobus o dei tram circostanti. In questo file è possibile specificare il tipo di trasferimento e gli orari delle fermate corrispondenti.

Stabilità degli identificatori tra le versioni del file statico

La statica GTFS viene rigenerata ogni settimana. È quindi possibile che il “service_id” e il “trip_id” non siano identici.

Quando ci saranno nuovi file statici GTFS?

Il nuovo HRDF sarà pubblicato lunedì.

Il caricamento di GTFS avviene il mercoledì alle 09:10 tramite script. Il feed GTFSR carica i file alle 14:00 tramite script. Ci vogliono quindi circa 5-10 minuti prima che i file nel sistema e quindi l’alimentazione GTFS-RT vengano modificati.

Dettagli tecnici per una migliore comprensione

I dati HRDF vengono importati in DIVA il lunedì. Segue (sempre il lunedì) il trasferimento dei dati sull’orario per l’EFA.
L’esportazione di GTFS viene effettuata il martedì.
Il mercoledì, il nuovo set di dati GTFS ZIP viene caricato sul server FTP delle FFS intorno alle 9.10. I nuovi dati dell’orario di calendario insieme ai nuovi dati GTFS vengono caricati sui rispettivi server intorno alle 14.00 del mercoledì.

Consistenza interna di un file statico GTFS

Ci impegniamo a produrre sempre file statici GTFS corretti. Google suggerisce di verificare la coerenza interna con il FeedValidator. Purtroppo, la versione attuale non è in grado di gestire le dimensioni del nostro file. Un altro strumento possibile è gtfstidy, che tra l’altro può eseguire una convalida con il parametro “-v”.

 

Domande & risposte

Cosa significano le prime e le ultime due sezioni del trip_id? E.g. {405}.TA.26-752-j17-1.{3}.{R} Il trip_id è composto dalle seguenti parti: “<numero consecutivo in trips.txt>.<service_id>.<route_id>.<numero di rotta DIVA>.<direzione di marcia DIVA>”.

route_id = <ramo operativo DIVA>-<numero di linea DIVA>-<abbreviazione del progetto DIVA>-<numero di versione della linea DIVA>.

Da cosa è composto il Trip ID? L’ID del viaggio è composto da diversi numeri/campi DIVA e non ha nulla a che fare con i dati HRDF.

L’assegnazione non è proprio 1:1, poiché l’ID del viaggio (= numero del viaggio) non deve essere unico all’interno di un set di dati HRDF, ma con l’aiuto delle fermate e dei tempi di sosta, come ha fatto l’utente dei dati, il viaggio corrispondente può essere trovato come segue:

Il file trips.txt contiene il nome del viaggio:

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”

 

Questo corrisponde al numero di viaggio (numero di treno esterno) nella riga *Z del file FPLAN:

unbenannt

Poiché il numero di viaggio non deve essere univoco all’interno di un feed HRDF, per l’assegnazione si devono utilizzare anche i tempi di sosta e gli ID fermata del viaggio dal file stop_times.txt:

 

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″

Il feed HRDF di due giorni dopo (ad es. 05/02/2018) corrisponde sempre al feed GTFS (ad es. 07/02/2018):

unbenannt

Ulteriori indicazioni