GTFS Realtime (GTFS-RT) è un’estensione di GTFS Static e arricchisce le informazioni statiche sul transito con informazioni in tempo reale. I dati in tempo reale del GTFS sono armonizzati con i dati GTFS Static. Il feed in tempo reale include tutti i cambiamenti noti nel trasporto pubblico in Svizzera nell’intera finestra di anteprima (tre ore) per tutte le aziende di trasporto che forniscono dati in tempo reale.
- Descrizione tecnica
- Aspetti tecnici
- Autorizzazione e servizi aperti
- Numero massimo di interrogazioni al minuto
- Riferimento al GFTS Static
- Gestione delle perturbazioni
- URL per la chiamata
- Struttura dei dati (buffer di protocollo)
- Struttura dei dati (JSON)
- Utilizzo di JSON solo a scopo di test
- Accuratezza
- Compressione
- Interpretazione dei dati
- Altri punti importanti
- Domande & risposte
- Ulteriori indicazioni
Descrizione tecnica
GTFS-RT consente di arricchire le informazioni statiche sul transito con tre diversi tipi di informazioni aggiuntive. Questi tre arricchimenti vengono solitamente forniti singolarmente via HTTP e aggiornati regolarmente, in modo che gli sviluppatori possano scegliere con quali dati in tempo reale arricchire le loro applicazioni.
I tre tipi di informazioni aggiuntive sono:
- Trip Updates (aggiornamenti sul viaggio)
- Service Alerts (avvisi di servizio)
- Vehicle Positions (posizioni del veicolo) – non sono pubblicati sulla piattaforma open data sulla mobilità in Svizzera
Trip Updates
Esempio: “L’autobus 18 è in ritardo di 10 minuti”.
I ritardi, le variazioni di percorso, i veicoli sostitutivi o le cancellazioni per le singole linee vengono pubblicati qui di continuo per consentire ai passeggeri di pianificare con la massima precisione possibile.
Service Alerts
Esempio: “La stazione di Bern, Weissenbühl è attualmente chiusa a causa di un incidente”.
In caso di spostamento di una fermata o di eventi generalmente imprevisti che interessano una fermata, un percorso o l’intera rete, è possibile pubblicare brevi messaggi per tenere informati i passeggeri e spiegare il motivo della modifica.
Dataset: GTFS Realtime – Service Alerts
Vehicle Positions
Esempio: “Alle 18h23, questo autobus è alla fermata Bern, Bahnhof“.
Le informazioni sulla posizione dei singoli veicoli in transito possono essere pubblicate qui. Inoltre, è possibile fornire anche l’attuale utilizzo del veicolo, il tipo di veicolo o altre informazioni simili.
Le posizioni dei veicoli non sono disponibili sulla piattaforma.
Un elenco dettagliato delle singole unità informative possibili è disponibile all’indirizzo https://developers.google.com/transit/gtfs-realtime/reference/
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 Protocol Buffer.
Aspetti tecnici
Le FFS forniscono gli aggiornamenti del viaggio tramite una richiesta GET.
Autorizzazione e servizi aperti
Per accedere a questa API è necessaria una chiave API. Si può ottenere tramite il portale sviluppatori. È necessaria una chiave del tipo “Default Key”. Il token deve essere inviato nell’intestazione HTTP come “Autorizzazione”.
Test-Key: 57c5dbbbf1fe4d000100001842c323fa9ff44fbba0b9b925f0c052d1
Numero massimo di interrogazioni al minuto
È possibile eseguire un massimo di due interrogazioni al minuto sull’interfaccia con la chiave. Si tratta di una finestra scorrevole.
Se la richiesta viene effettuata troppo rapidamente, viene restituito il seguente messaggio:
1 2 3 |
{ "error": "Rate limit exceeded" } |
Riferimento al GFTS Static
Ogni alimentazione GTFS-RT si basa su un GTFS Static. È disponibile il lunedì e il giovedì (in caso di interruzione, vedere la sezione successiva). L’alimentazione di GTFS-RT passa al nuovo GTFS Static alle 15.00 di ogni giorno. Perché molti degli identificatori (“service_id”, “trip_id”) vengono generati nuovamente per ogni versione di GTFS Static, il riferimento al GTFS Static corretto è fondamentale per una corretta implementazione dell’interfaccia.
pubblicazione GTFS-S | attivazione GTFS-RT |
lunedì tra le 9 e le 10 | lunedì ore 15 |
giovedì tra le 9 e le 10 | giovedì ore 15 |
Gestione delle perturbazioni
Se qualcosa va storto durante i regolari rilasci di lunedì o giovedì, la coppia di dati GTFS corretta sarà pubblicata il prima possibile dopo l’interruzione.
In questi casi, GTFS Realtime passa a questa nuova versione 6 ore dopo la pubblicazione del corrispondente set di dati GTFS Static (che può essere riconosciuto anche dalla rispettiva feed version in GTFS Realtime).
URL per la chiamata
HTTP GET auf https://api.opentransportdata.swiss/gtfsrt2020
(Attenzione: nessuna “/” finale)
Con l’intestazione Authorisation e Content-Type= “text/XML” o “application/XML”
Content-Type: Si consiglia di impostare “application/octet-stream”.
Struttura dei dati (buffer di protocollo)
Il formato di scambio dei dati in tempo reale GTFS si basa sui buffer di protocollo, un meccanismo di serializzazione dei dati neutro dal punto di vista del linguaggio e della piattaforma. È stato progettato come formato binario, il che lo rende più piccolo, più veloce e più semplice di XML. La struttura dei dati è definita in un cosiddetto file gtfs-realtime.proto, che viene utilizzato per generare codice sorgente per tradurre facilmente i dati strutturati in diversi linguaggi (Java, C++, Python, ecc.).
Struttura dei dati (JSON)
In alternativa, la piattaforma fornisce anche un’implementazione JSON.
L’interrogazione viene effettuata tramite l’URL: HTTP GET https://api.opentransportdata.swiss/gtfsrt2020?format=JSON
Si noti che la variante JSON non è standardizzata.
Utilizzo di JSON solo a scopo di test
JSON può essere utilizzato solo a scopo di test, ad esempio se uno sviluppatore di una nuova applicazione vuole vedere in forma leggibile quali dati sono contenuti nel nostro GTFS-RT.
In definitiva, l’interfaccia GTFS-RT non dovrebbe essere gestita in JSON leggibile, ma in forma binaria (senza ?FORMAT=JSON) per i seguenti motivi:
- Il formato binario è molto più performante di JSON e i dati da trasferire e leggere in JSON sono molto più numerosi (un messaggio JSON ha una dimensione massima di circa 11 MB),
- JSON non è specificato, con GTFS-RT binario il client GTFS può fare affidamento sulla conformità allo standard GTFS-RT
Accuratezza
I ritardi hanno una precisione di un decimo di minuto (0.1 min = 6 s).
Compressione
Il flusso JSON può essere ottenuto anche in forma compressa.
A tal fine è necessario fornire la seguente intestazione:
1 |
Accept-Encoding: gzip, deflate |
La compressione è di circa il 90%. Ciò significa che i dati vengono trasmessi molto più velocemente.
Interpretazione dei dati
Per l’esatta interpretazione dei dati si può consultare direttamente la specifica GTFS.
Il caso speciale più grande sono le salite, descritte nella pagina GTFS.
Altri punti importanti
- GTFS-RT fornisce nuovi dati solo se qualcosa è cambiato. Il nostro sistema tiene conto solo delle previsioni di partenza. Se la previsione di partenza e cambia solo la previsione di arrivo, non viene generato alcun messaggio GTFS-RT per questo viaggio.
- Si un trajet est ponctuel, il est édité avec “Delay” : 0 sur le StopTimeUpdate. ex.
Domande & risposte
Cosa significa un messaggio in tempo reale senza “stop_time_updates”? | I messaggi in tempo reale senza “stop_time_updates” sono trigger senza tempo reale. A questo proposito sono state apportate delle modifiche, in modo che i viaggi senza tempo reale non vengano più trasmessi. |
È possibile che sulle linee in cui la qualità dei dati è scarsa venga sempre consegnata un’entità gtfsrt con ritardo=0 invece di non consegnare alcuna entità gtfsrt? | No, non è così. O un viaggio è in tempo reale e vengono visualizzati anche tutti i ritardi, oppure non è in tempo reale. Ritardo 0 significa tempo reale e puntuale. O non abbiamo ricevuto un ritardo in VDV 454 AUS, oppure non siamo riusciti a elaborare il messaggio con la previsione. |
Ulteriori indicazioni
Ulteriori informazioni su GTFS Realtime sono disponibili sulla pagina degli sviluppatori GTFS di Google: https://developers.google.com/transit/gtfs-realtime/
Altri servizi GTFS