Zum Inhalt springen

GTFS Realtime (GTFS-RT)

GTFS Realtime (GTFS RT) ist eine Erweiterung zu GTFS Static und reichert die statischen Transit-Informationen mit Echtzeitinformationen an. Die GTFS-Realtime-Daten sind auf die GTFS-static-Daten abgestimmt. Der Realtime-Feed umfasst alle bekannten Änderungen im öV Schweiz im gesamten Vorschaufenster (drei Stunden) für alle Verkehrsunternehmen, die Echtzeitdaten liefern.

 

Fachliche Beschreibung

GTFS RT erlaubt die Anreicherung der statischen Transit-Informationen mit drei verschiedenen Arten der Zusatzinformation. Diese drei Anreicherungen werden üblicherweise via HTTP einzeln zur Verfügung gestellt und regelmäßig aktualisiert, somit können Entwickler auswählen, mit welchen Echtzeitdaten sie ihre Applikationen anreichern möchten. Aktuell ist noch unklar, welche dieser Daten genau in Zukunft auf der Open-Data Plattform öV-Schweiz zur Verfügung gestellt werden.

Die drei Arten der Zusatzinformation sind:

  • Trip Updates
  • Service Alerts
  • Vehicle Positions

Trip Updates

Bsp: „Bus 18 hat aktuell 10 Minuten Verspätung“

Hier werden Verspätungen, geänderte Routen, Ersatzfahrzeuge oder Ausfälle für einzelne Linien laufend publiziert, um den Fahrgästen eine möglichst exakte Planung zu ermöglichen.

Service Alerts

Bsp: „Station Bern Weissenbühl ist aufgrund eines Unfalls aktuell geschlossen“

Im Falle von Verschiebung der Haltekante oder allgemein unvorhergesehene Ereignissen, die eine Haltestelle, eine Route oder das gesamte Netzwerk beeinflussen, können kurze Meldungen publiziert werden um die Fahrgäste auf dem Laufenden zu halten und zu erklären, was der Grund für die Änderung ist.

Service Alerts stehen auf der Plattform nicht zur Verfügung.

Vehicle Positions

Bsp: „Dieser Bus befindet sich um 18h23 an der Haltestelle Bern Bahnhof“

Hier können Informationen zum Standort von einzelnen Transit-Fahrzeugen publiziert werden. Zusätzlich können auch die aktuelle Auslastung des Fahrzeugs, der Fahrzeugtyp oder andere, ähnliche Informationen bereitgestellt werden.

Die Vehicle Positions stehen auf der Plattform nicht zur Verfügung.

Eine ausführliche Auflistung der einzelnen möglichen Informationseinheiten finden Sie auf https://developers.google.com/transit/gtfs-realtime/reference/

 

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 Protocoll Buffers.

Technische Aspekte

Die SBB stellt die Trip Updates über einen GET-Request zur Verfügung.

 

Authorisierung und Open Services

Für den Zugriff auf diese API ist ein API-Key notwendig. Es kann über das Developer Portal bezogen werden. Sie brauchen einen Schlüssel vom Typ „GTFS-RT Beta“.
Das Token muss im HTTP Header als „Authorization“ mitgeschickt werden.

 

Maximale Anzahl Abfragen pro Minute

Sie können maximal zwei Abfragen pro Minute auf die Schnittstelle durchführen mit ihrem Schlüssel. Es handelt sich um ein Sliding Window.

Bei zu raschem Anfragen kommt folgende Meldung zurück:

 

Bezug zum GFTS Static

Jeder GTFS-RT Feed basiert auf einem GTFS Static. Dieses wird Laufe des Dienstags zur Verfügung gestellt. Am Mittwoch um 14:00 wird der GTFS-RT Feed auf das neue GTFS Static umgestellt. Da viele der Identifier („service_id“, „trip_id“) jeweils neu generiert werden, ist der Bezug auf das richtige GTFS zentral für eine korrekte Implementierung der Schnittstelle.

URL für den Aufruf

HTTP GET auf https://api.opentransportdata.swiss/gtfs-rt

(Achtung: Kein Schluss „/“)

Mit dem  Authorization Header und Content-Type=  „text/XML“ oder „application/XML“

Authorization header

 

Content-Type: Wir schlagen vor, Sie stellen „application/octet-stream“ ein.

Struktur der Daten (Protocol Buffer)

Das GTFS Realtime Daten-Austausch Format basiert auf Protocol Buffers, welches ein Sprach- und Plattformneutraler Mechanismus ist, um Daten in serielle Reihenfolge zu bringen. Es ist als Binärformat konzipiert, was es kleiner, schneller und einfacher als XML macht. Die Datenstruktur ist in einem sog. gtfs-realtime.proto File definiert, welches zum Generieren von Source Code benutzt wird um die strukturierten Daten einfach in verschiedene Sprachen (Java, C++, Python, etc.) zu übersetzen.

 

Struktur der Daten (JSON)

Alternativ stellt die Plattform auch eine JSON-Implementierung zur Verfügung.

Die Abfrage erfolgt dann über die URL: HTTP GET https://api.opentransportdata.swiss/gtfs-rt?format=JSON

Beachten Sie, dass die JSON-Variante nicht standardisiert ist.

Genauigkeit

Alle Verspätungen sind nur minutengenau. Eine Erweiterung ist angedacht, wird aber erst später erfolgen.

Kompression

In Kürze wird der JSON-Strom auch komprimiert bezogen werden können.

Dazu muss der folgende Header mitgeliefert werden:

Die Kompression beträgt ca. 90%. D.h. die Daten werden viel schneller übermittelt.

Interpretation der Daten

Für die genaue Interpretation der Daten kann direkt die GTFS-Spezifikation konsultiert werden.

Der grösste Spezialfall sind die Steige und diese sind auf der GTFS-Seite beschrieben.

 Weitere wichtige Punkte

  • Für GTFS-RT gilt eine Fortschreiberegel für Verspätungen. Wenn z.B. eine ganze Fahrt 5 Minuten verspätet ist, so wird dies nur auf dem ersten Stop ausgewiesen. Für alle weiteren Stops muss beim Import die Verspätung fortgeschrieben werden. Die Fortschreibung muss für Ankunfts- und Abfahrtszeiten vorgenommen.

Weiterführende Angaben

Weiterführende Angaben zu GTFS Realtime finden Sie auf der GTFS Entwicklerseite von Google: https://developers.google.com/transit/gtfs-realtime/


Wichtige Antworten

  1. Kann es sein, dass ihr im Feld route_id des GTFS RT Feed fälschlicherweise die service_id verpackt habt?

Diskussion fortsetzen auf disc.opentransportdata.swiss