Stand Oktober 2024. Informationen zu kontinuierlichen Anpassungen findest Du in unserem Changelog.
Hintergrund
Was sind Formationsdaten?
Formationsdaten sind Informationen zu den Wagen (und Loks) eines Zuges. Sie beinhalten nicht nur die Position der einzelnen Wagen eines Zuges, sondern auch ihre Eigenschaften. Bspw. kann man mit den Formationsdaten herausfinden, welcher Wagen eines spezifischen Zuges (bspw. Zugnummer 1234) einen Niederflurzugang bereitstellt, d.h. einen einfachen Zugang von Rollstühlen oder mit Kinderwägen erlaubt.
Wer steckt dahinter?
Der Dienst wird durch das Team Systemaufgaben Kundeninformation Plus (SKI+) im Auftrag des Bundesamts für Verkehr (BAV) in der Schweiz bereitgestellt.
Wir beziehen die Daten zu den Formationen aus zwei Systemen:
- Der Formations-Service (FOS) Schnittstelle der SBB, bei der verschiedene Eisenbahnverkehrsunternehmen (EVU) ihre Formationsdaten einliefern.
- Der Verkehrsmittel Schnittstelle des Echtzeitsystems (CUS) der Systemaufgaben Kundeninformation (SKI), welches die Echtzeitdaten aller Verkehrsmittel des öV verwaltet.
Während die FOS Schnittstelle “nur” die Details zu den Formationen liefert, reichert die CUS Schnittstelle die Daten noch um Details, wie bspw. die Position der Wagen (Sektoren) am Gleis der Haltestellen an.
Warum bietet die Open Data-Plattform das an?
Das Wissen über die Formation eines Zuges kann genutzt werden, um NutzerInnen darüber zu informieren:
- an welchem Sektor eines Gleises eines Bahnhofs ein Rollstuhlgerechter Einstieg möglich ist (was im Kontext des Behindertengesetzes (BehiG) besonders wichtig ist)
- in welchem Wagen Velohaken zur Verfügung stehen
- wie viele Plätze im Allgemeinen verfügbar sind in einem Wagen
- In Kombination mit unserer Belegungsprognose kann sogar die Belegung (Zugweit) angezeigt werden
- welche Lok- und Wagentypen auf welchen Strecken verkehren (bspw. für Trainspotter, oder für Transportunternehmen die ihre Dienste mit den Bahnen kombinieren)
Wie komme ich an die Daten/Schnittstellen ran?
Daten
Da Formationsdaten sich ständig ändern, bieten wir sie nicht als Datenexport an, sondern nur als Schnittstelle. Schnittstellen Die Formationsdaten werden hier bereitgestellt: https://data.opentransportdata.swiss/dataset/formations |
Fachliche Beschreibung
Welche Services (Schnittstellen-Endpunkte) bietet die Formationsdaten Schnittstelle an?
Die Formationsdaten Schnittstelle unterstützt die folgenden Anfragenvarianten. Dabei sind die Details der Anfragen auch über die OpenAPI Schnittstelle dokumentiert:
- Haltestellen basiert
- Hierfür nutzt Du den Endpunkt: formations_stop_based
- Was der Service tut:
- Die Formationen pro Haltestelle der Fahrt eines Zugs ermitteln.
- Was es der Service braucht:
- Den Namen eines EVU: Die Liste der zulässigen EVU ist beschränkt auf jene die ihre Zusage für die Nutzung ihrer Formationsdaten gegeben haben.
- Einen Betriebstag: Der Tag für den die Formation abgefragt werden soll. Das Datum kann nicht in der Vergangenheit sein. Das Datum kann nur heute +3 Tage sein (aufgrund des Einbezugs der Echtzeitdaten von CUS).
- Die Zugnummer (auch Verkehrsmittelnummer genannt): Der Zug für den man die Formation erfragen möchte. Diese Nummer kann man über unterschiedliche Wege erlangen, u.a. über unsere Fahrplandaten (in verschiedenen Datenformaten).
- Was der zurück Service gibt:
- Die Haltestellen eines Zuges, mit den Details der Haltestellen, die Formation mit der der Zug von den Haltestellen abfährt, und wann, von welchem Gleis, und mit welche Loks/Wagen bis wohin zusammenbleiben. Entscheidend ist hierbei, dass wir die Formation in einer kompakten Schreibweise die ihren Ursprung in CUS hat angeben!
- Diese Abfrage beinhaltet nicht alle Details zu jedem Wagen.
- Die Interpretation des Formationskurzstring beschreiben wir weiter unten!
- Möglicher Anwendungsfall: Die Formation eines Zuges auf einem Gleis für eine spezifische Haltestelle anzuzeigen.
- Zug basiert
- Hierfür nutzt Du den Endpunkt: formations_vehicle_based
- Was der Service tut:
- Die Formationen pro Fahrzeug (also pro Formationselement) des Zugs ermitteln.
- Was der Service braucht:
- Die Parameter sind die gleichen wie bei formations_stop_based
- Was der Service gibt:
- Die Formationselemente mit den Details jedes Fahrzeugs, die Position des Fahrzeugs in der Formation, sowie die Haltestellen an denen das Fahrzeug entlang der Fahrt hält mit den Details der Haltestelle, und dem Gleis und dem Sektor an dem das Fahrzeug an den jeweiligen Haltestellen hält.
- Diese Abfrage beinhaltet nicht die Gesamtsicht auf den Zug entlang der Haltestellen.
- Möglicher Anwendungsfall: Die Verfolgung eines spezifischen Wagens.
- Haltestellen und Zug basiert
- Hierfür nutzt Du den Endpunkt: formations_full
- Was der Service tut:
- Die Formationen sowohl pro Haltestelle, als auch pro Fahrzeug auszugeben.
- Was der Service braucht:
- Die Parameter sind die gleichen wie bei formations_stop_based und formations_vehicle_based
- Was der Service gibt:
- Die Haltestellen UND die Formationselemente wie bei den jeweiligen, oben beschriebenen Varianten.
Interpretation des Formationskurzstring:
Grundsätzlich unterscheidet sich der Aufbau des Strings, je nachdem, ob ein Gleis Sektoren hat, bzw., ob diese uns bekannt sind. | ||||||||||||||||||
In jedem Fall gilt folgendes für den Aufbau:
|
Was sind die wichtigsten Begriffe und Konzepte die man kennen sollte?
Wir nutzen die folgenden Elemente als Teil unserer Schnittstelle (ohne Container-Elemente)
- StopPoint
- Ein StopPoint ist ein Halt entlang des Fahrplans
- StopTime
- Die Abfahrts- und Ankunftszeit
- Track
- Der Gleis am StopPoint
- FormationShortString
- Die Kurz-Repräsentation der Formation (wie von CUS definiert)
- VehicleGoal
- Welche Wagen bis zu welchem Ziel zusammenbleiben von einer Haltestelle aus gesehen
- JourneyMetaInformation
- Eindeutige Identifikation der Fahrt
- TrainMetaInformation
- Beschreibende Eigenschaften des Zugs
- FormationMetaInformation
- Details zur gesamten Formation, bspw. Anzahl Fahrzeuge
- ScheduledStop
- StopPoint, StopTime, Track, Details zum Umgang mit dem Zug an der Haltestelle (bspw., ob der Zug hält oder durchfährt), sowie Abweichungen der Fahrt (bspw. Verspätungen bei der Ankunft)
- VehicleIdentifier
- Attribute die ein Fahrzeug eindeutig identifizieren, wie bspw. die european vehicle number (EVN). Eine Besonderheit ist hierbei, dass ein Fahrzeug Teil eines Gliederzugs sein kann und somit keine eigene EVN hat, sondern nur eine “generierte”. In dem Fall wird auf die “Eltern-EVN” verwiesen.
- WheelchairSymbolProperties
- Eigenschaften die für die Bestimmung des Rollstuhlsymbols benötigt werden (s. auch Barrierefreiheit in der Fahrplanauskunft)
- AccessibilityProperties
- Weitere Eigenschaften die im Sinne der behindertengerechten Darstellung genutzt werden können
- PictoProperties
- Ob an einem Fahrzeug die verschiedenen Piktographie dargestellt sind
- DirectTrolleyInformation
- Wenn die Formation Direktwagen repräsentiert
- VehicleRelation
- Dieses Element erlaubt es die vorangegangene und nachfolgende Fahrt der gegebenen Formation zu verfolgen, welche auch eine Direktwagenfahrt sein kann
- VehicleProperties
- Eigenschaften eines Fahrzeugs als Teil einer Formation, d.h. ein Formationselement, sowie von wo bis wohin der Wagen Teil der Formation ist
- FormationVehicleAtScheduledStop
- Die Darstellung der Formation pro Haltestelle (für die vehicle_based Anfrage)
- VehicleRelationship
- Die Fahrtbeziehung, d.h. wie sich die Fahrt verändert zwischen zwei Fahrten (bspw. wenn es einen Ausfall gibt)
- VehicleRelationshipDetails
- Die Details einer Fahrtbeziehung.
Beschränkungen
- Die Daten beschränken sich auf die Eisenbahnverkehrsunternehmen (EVU) die ihre Formationen über die Schweizerischen Bundesbahnen (SBB) bereitstellen und der Veröffentlichung ihrer Daten als Open Data zugestimmt haben.
- Der Dienst stellt nur dann alle Daten und die Fahrzeug-basierten Daten zur Verfügung, wenn alle Quellen (siehe Anmerkung 1) über alle erforderlichen Daten verfügen. Dies ist besonders wichtig, wenn man bedenkt, dass CUS nur Daten für heute + 3 Tage hat.
- Konkret stammen die Daten stammen aus dem SKI-Echtzeitsystem (CUS – CUstomer (Information) System – VerkehrsMittel (VM)) und den Formation-Services (FOS) der SBB.
Technische Beschreibung
Zugriff auf das API
Um die API/Schnittstelle nutzen zu können braucht es einen Token. Dieser Token kann über das Developer Portal bezogen werden.
Die spezifischen Endpunkte
Die drei oben beschriebenen Endpunkte können über die folgenden URLs abgerufen werden:
- https://api.opentransportdata.swiss/formations_stop_based
- https://api.opentransportdata.swiss/formations_vehicle_based
- https://api.opentransportdata.swiss/formations_full
Die Parameter sind wie folgt:
Parameter | Wertbeschrieb und Beispielswert |
evu | Das EVU für das die Anfrage gestellt werden soll. Derzeit erlaubt: BLSP, SBBP, MBC, OeBB, RhB, SOB, THURBO, TPF, TRN, VDBB, ZB |
operationDate | Das Datum an dem der Zug fährt und für das man die Anfrage stellen will. Bspw. 2024-09-18 |
trainNumber | Die Zugnummer für das man die Formationsdaten abfragen möchte. Bspw. 2806 |
includeOperationalStops | Ob die betrieblichen (für die KundInnen idR nicht relevanten!) halte mit ausgegeben werden sollen. Bspw. false |
Eine Beispielanfrage wäre somit: https://api.opentransportdata.swiss/formations_stop_based?evu=BLSP&operationDate=2024-09-18&trainNumber=2806&includeOperationalStops=false
Wir werden an dieser Stelle nicht das vollständige Datenmodell beschreiben, sondern stattdessen auf das folgende YAML verweisen: formations_yaml_change_file_ending.txt (Datei ist ein “.txt”, muss in “.yaml” geändert werden).
[ggf. wird an dieser Stelle zukünftig eine Swagger-Dokumentation bereitstehen]
Beschränkungen
- Die Schnittstelle existiert Stand Oktober 2024 als Beta und wird kontinuierlich weiterentwickelt. Das bedeutet, dass sich das Datenmodell noch verändern kann.