Skip to content

Formationsdaten

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:

  1. Der Formations-Service (FOS) Schnittstelle der SBB, bei der verschiedene Eisenbahnverkehrsunternehmen (EVU) ihre Formationsdaten einliefern.
  2. 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:

  1. 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.
  2. 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.
  3. 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:

Sektor Buchstabe („A“ … „Z“)
Status „-“ Fahrzeug geschlossen
„>“ Fahrzeug mit Gruppen, die an diesem BP einsteigen
„=“ Fahrzeug (teilweise) reserviert für Gruppen im Transit
„%“ Fahrzeug offen, aber unbedient (nur bei Speisewagen)Hinweis: „geschlossen“ kann nur alleine auftreten; die übrigen Zeichen können kombiniert wer-
den
 [ Start der zum Zug gehörendenden Fahrzeuggruppe

Hinweis: Damit können abgestellte bzw. wegzustellende Fahrzeuge von den zum fahrenden Zug gehörenden Fahrzeugen unterschieden werden.

 ] Ende der zum Zug gehörenden Fahrzeuggruppe

Hinweis: Damit können abgestellte bzw. wegzustellende Fahrzeuge von den zum fahrenden Zug gehörenden Fahrzeugen unterschieden werden.

 ( kein Durchgang zum Nachbarfahrzeug auf dieser Seite des Fahrzeugs möglich

Hinweis: Die Berechnung erfolgt auf Basis von Stammdaten und Annahmen. Es besteht keine Garantie, dass diese Angaben in jedem Fall der Realität entsprechen.

 ) kein Durchgang zum Nachbarfahrzeug auf dieser Seite des Fahrzeugs möglich

Hinweis: Die Berechnung erfolgt auf Basis von Stammdaten und Annahmen. Es besteht keine Garantie, dass diese Angaben in jedem Fall der Realität entsprechen.

FzTypKI Fahrzeugtyp aus Sicht KI. Es bedeuten:
„1“ Reisezugwagen 1. Klasse
„2“ Reisezugwagen 2. Klasse (auch deklassierte A/AB)
„12“ Reisezugwagen 1. und 2. Klasse
„CC“ Liegewagen
„FA“ Familienwagen
„WL“ Schlafwagen
„WR“ Restaurant (Bistrowagen, Speisewagen etc.)
„W1“ kombinierter Speisewagen und Sitzplatzwagen 1. Klasse
„W2“ kombinierter Speisewagen und Sitzplatzwagen 2. Klasse
„LK“ Triebfahrzeug
„D“ Gepäckwagen
„F“ fiktiver Wagen
„K“ Klassenloses Fahrzeug
„X“ abgestellter Wagen Hinweis: CUS wandelt den ab FOS bezogenen Fahrzeugtyp in einen generischen „KI-Typ“ um.
Dabei kommen die folgenden Varianten zum Einsatz:

  1. Umwandlung überlanger Fahrzeuge
    Triebzüge, welche die Quelle nicht wagenweise, sondern als ein (überlanges) Fahrzeug anliefern, können von CUS konfigurativ in Einzelwagen zerlegt werden. Im String erscheint dann nicht 1 Fahrzeug (meist vom Typ „12“), sondern 2…n Fahrzeuge des Typs „1“, „2“, „12“ oder „D“. Die Anzahl bemisst sich aus der vom Kunden wahrgenommenen Fahrzeugzahl. Fahrzeuge solcher Art, welche die erste Klasse nicht in Zugmitte führen, werden in aller Regel in klassenlose Fahrzeuge des Typs „K“ umgewandelt.
  2. Umwandlung von Einzelfahrzeugen aufgrund regulärer Ausdrücke
    Alle Einzelfahrzeuge werden über priorisierte, reguläre Ausdrücke in generische KI-Fahrzeuge umgewandelt.
  3. Umwandlung von Einzelfahrzeugen aufgrund der Anzahl Sitzplätze
    Stimmt kein regulärer Ausdruck aus 2) überein, so wird der Typ aufgrund der Anzahl Sitzplätze 1. und 2. Klasse ermittelt. Verfügt das Fahrzeug über keine Sitzplätze, wird ihm der Typ „D“ zugewiesen.

Hinweis zu “F”: Auf Gleisen mit Sektoren wird das Delta zwischen Zug- und Haltekantenlänge vorne und/oder hinten mit fiktiven Wagen aufgefüllt.

Hinweis zu “X”: Abgestellte Wagen beeinflussen die Zuordnung der Fahrzeuge eines Zuges zu den Sektoren, sind aber nicht Bestandteil des betreffenden Zuges.

OrdNr Ordnungsnummer für die Einzelplatzreservation die so an den Wagen für Passagiere angezeigt wird (1…3-stellige Nummer)
Angebot Liste von fahrzeugbezogenen Angeboten. Diese umfassen:
„BHP“ Rollstuhlstellplätze
„BZ“ Businesszone
„FZ“ Familienzone
„KW“ Kinderwagenplattform
„NF“ Fahrzeug mit Niederflureinstieg
„VH“ Velohaken/-plattform
„VR“ reservationspflichtige Velohaken/-plattform

 

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
  • 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

  1. 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.
  2. 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.
  3. 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:

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.