Skip to content

GTFS-RT: Service-Alerts – (Ereignisinformationen Schweiz)

Einleitung & Fachliche Beschreibung

GTFS-Realtime ist ein von Google entwickelter Standard, der es Verkehrsunternehmen ermöglicht, Echtzeitinformationen über unterschiedliche Dienst bereitzustellen.

Der Dienst 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.

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.

  1. Vehicle positions (Aktuell nicht bereitgestellt)
  2. Trip updates (bereitgestellt durch die SBB)
  3. Service alerts (Bereitgestellt durch die SBB)

Fahrzeugpositionen (Vehicle positions)

enthalten Daten über Ereignisse, die bereits eingetreten sind (z. B. „Das Fahrzeug war vor einer Minute an diesem Ort“),

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/

Fahrtaktualisierungen (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

Ereignisinformationen (Service Alerts) informieren über vorhersehbare oder unvorhersehbare Ereignisse, die einen Bahnhof, eine Strecke oder das gesamte Netz betreffen (z.B. “Die Linie 3 ist aufgrund eines Verkehrsunfalls bis 15:00 Uhr gesperrt)

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.

 

Schweizer Implementierung

In der Schweiz sind aktuell zwei der drei Services implementiert. Namentlich “Trip Update” and “Service Alerts”

 

  • Die OpenDataPlattform unterstützt derzeit nur GTFS-RT „Trip Update“ – Version 1.0. Bitte beachten Sie, dass 2.0-Elemente derzeit ignoriert werden.
  • Die OpenDataPlattform unterstützt derzeit GTFS-RT „Service Alerts“ – Version 2.0. Bitte beachten Sie diese Unterschiede in den Service-Versionen
  • Mit Ihrem Schlüssel können Sie maximal zwei Abfragen pro Minute auf der Schnittstelle durchführen.
  • Der Echtzeit-Feed umfasst alle bekannten Änderungen im öffentlichen Verkehr Schweiz im gesamten Vorschaufenster (drei Stunden) für alle Verkehrsunternehmen, die Echtzeitdaten bereitstellen.
  • Für GTFS-RT gibt es eine Update-Regel für Verzögerungen. Verspätet sich beispielsweise eine ganze Fahrt um 5 Minuten, wird dies nur bei der ersten Haltestelle angezeigt. Für alle weiteren Stopps muss die Verzögerung beim Import aktualisiert werden.
  • Die Aktualisierung muss für Ankunfts- und Abfahrtszeiten erfolgen. GTFS-RT stellt nur dann neue Daten bereit, wenn sich etwas geändert hat. Von unserem System wird nur die Abflugprognose berücksichtigt. Bleibt die Abfahrtsprognose bestehen und ändert sich nur die Ankunftsprognose, wird für diese Reise keine GTFS-RT-Nachricht generiert

 

Zugang zum Service

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

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

API Link
GTFS-RT

Service Alerts

https://api.opentransportdata.swiss/gtfsservicealerts/

Für den Zugriff auf die API ist ein Token erforderlich. Um ein Token zu generieren und zu erhalten, muss man sich auf der Open Data Plattform Mobilität Schweiz registrieren.

Nach erfolgreicher Registrierung muss der Reiter „API Keys“ ausgewählt werden. Dort kann man im „Developer Dashboard“ unter „My Keys“ den entsprechenden Schlüssel für die Plattform erhalten.

Der Versand des Schlüssels erfolgt über die bei der Registrierung angegebene E-Mail-Adresse.

Struktur der Daten (Protocol Buffer)

Das GTFS ServiceAlert 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/gtfsservicealerts/?format=json

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

Nutzung von JSON nur zu Testzwecken

JSON darf nur zu Testzwecken genutzt werden, wenn z.B. ein Entwickler einer neuen App in lesbarer Form sehen will, was für Daten in unserem GTFS-RT enthalten sind.

Am Ende sollte die GTFS-SA-Schnittstelle nicht in lesbarem JSON, sondern binär betrieben werden (ohne ?FORMAT=JSON) aus folgenden Gründen:

  • binär ist viel performanter als JSON und in JSON sind viel mehr Daten zu übermitteln und einzulesen (ein JSON-Meldung wird bis zu ca. 11 MB gross),
  • JSON ist nicht spezifiziert, bei der binären GTFS-RT kann sich der GTFS-Client darauf verlassen, dass sie dem GTFS-RT-Standard entspricht

Beschreibung des Services

Besonderheiten im Vergleich zu SIRI-SX

GTFS ServiceAlerts SIRI-SX
Zu jeder Haltestelle / Halepunkt wird ebenfalls die Agency gelierfert.
     "informedEntity": [
            {
                "agencyId""820",
                "stopId""ch:1:sloid:89712"
            },
            {
                "agencyId""801",
                "stopId""ch:1:sloid:89712"
            }
        ],
<StopPlaces>
    <AffectedStopPlace>
       <StopPlaceRef>ch:1:sloid:89712</StopPlaceRef>
       <PlaceName>Kriens, Grosshofstrasse</PlaceName>
  </AffectedStopPlace>
</StopPlaces>
Zu jeder Linie wird ebenfalls die Linienrichtung geliefert

         "informedEntity": [
             {
                 "agencyId""801",
                 "routeId""96-186-7-j23-1",
                 "directionId"0
             },
             {
                 "agencyId""801",
                 "routeId""96-186-7-j23-1",
                 "directionId"1
             },
             {
                 "agencyId""801",
                 "routeId""96-186-2-j23-1",
                 "directionId"0
             },
             {
                 "agencyId""801",
                 "routeId""96-186-2-j23-1",
                 "directionId"1
             }
         ],
<AffectedNetwork>
 <AffectedLine>
       <AffectedOperator>
        <OperatorRef>ch:1:sboid:100602</OperatorRef>
       </AffectedOperator>
       <LineRef>85:801:1867</LineRef>
       <PublishedLineName>677</PublishedLineName>
    </AffectedLine>
   <AffectedLine>
      <AffectedOperator>
        <OperatorRef>ch:1:sboid:100602</OperatorRef>
      </AffectedOperator>
      <LineRef>85:801:1862</LineRef>
      <PublishedLineName>675</PublishedLineName>
  </AffectedLine>
</AffectedNetwork>

Generelles Mapping zwischen GTFS Service Alerts und SIRI-SX

GTFS-Implementierung

  • Ausgabe Mehrsprachig (DE, FR, IT, EN) der Texte Lang
  • GTFS: “headerText” entspricht SIRI-SX <SummaryText (L)>
  • GTFS “descriptionText” wird wie folgt zusammengesetzt, wobei mehrere Ausprägungen pro Element auch aneinandergereiht werden:
    • Grund  <ReasonContent>
    • Dauer <DurationContent>
    • Information – <RemarkContent> – Wenn geliefert, wird nicht von allen Geschäftsorganisationen bereitgestellt
    • Auswirkungen <ConsequenceContent>
    • Empfehlung <RecommendationContent>
    • Bemerkung – <DescriptionContent> → Wenn geliefert, wird nicht von allen Geschäftsorganisationen bereitgestellt
    • Uri – Nicht vorhanden auf aktuelle Prod-Version
    • Label – nicht vorhanden auf aktueller Prod-Version
  • GTFS “activePeriod”  wird aus  <ValidityPeriod> befüllt
  • Alle CH-Ausprägungen des Informationsraums können verarbeitet werden
  • Ereignisse mit mehreren Kundeninformationen können verarbeitet werden (aktuell nur VIA)
  • Verarbeitung ValidityPeriod und PublicationWindow gemäss Profil CH (d.h. alle Meldungen immer anzeigen)

Generelle Beschreibung des Service (Google)

Service Alerts  |  Realtime Transit  |  Google for Developers

Vorhandene Elemente nach GTFS:

Unterschiede zu der Google-Implementierung:

message

Alert

Link: https://developers.google.com/transit/gtfs-realtime/reference#message-alert

Alle Elemente werden unterstützt

message TimeRange

 

Link: https://developers.google.com/transit/gtfs-realtime/reference#message-timerange

Swiss Implementation Name (activePeriode)

Alle Elemente werden unterstützt

message

EntitySelector

Link: https://developers.google.com/transit/gtfs-realtime/reference#message-entityselector

Swiss Implementation Name (informedEntity)

Folgende Elemente werden nicht verwendet

  • route_type
  • trip
message

TripDescription

Link: https://developers.google.com/transit/gtfs-realtime/reference#message-tripdescriptor

Message wird nicht unterstützt / verwendet

enum

ScheduleRelationship

Enum wird nicht unterstützt / verwendet in der Service Alert Implementierung.
Enum

Cause

https://developers.google.com/transit/gtfs-realtime/reference#enum-cause

Alle aufgeführten Werte finden Verwendung. Alle nicht aufgeführten, werden nicht verwendet.

Value GTFS Value EMS (SBB)
UNKNOWN_CAUSE AlertCause=unknown
OTHER_CAUSE AlertCause

AlertCause = undefinedAlertCause

AlertCause = serviceDisruption

AlertCause = emergencyServicesCall

AlertCause= routeBlockage

AlertCause= specialEvent

AlertCause=congestion

TECHNICAL_PROBLEM AlertCause=vehicleFailure

AlertCause=technicalProblem

ACCIDENT AlertCause=accident
WEATHER AlertCause=poorWeather
MAINTENANCE AlertCause=maintenaceWork
AlertCause=constructionWork AlertCause=constructionWork
Enum

Effect

https://developers.google.com/transit/gtfs-realtime/reference#enum-effect

Aktuell werden keine Effekte verwendet. Es gibt lediglich den Wert “Condition: Unknown” aus dem EMS und das Mapping zu GTFS “Unknown_Effect”

message

TranslatedString

https://developers.google.com/transit/gtfs-realtime/reference#message-translatedstring

Alle Elemente werden unterstützt

Weitere Services:

Ereignisinformationen öV Schweiz (SIRI-SX / VDV736)

Vorhandene Datensätze

Folgende Geschäftsorganisationen stellen Ereignisinformationen zur Verfügung: Geschäftsorganisationen (business organisations) – Daten | Open-Data-Plattform Mobilität Schweiz (opentransportdata.swiss)