Zum Inhalt springen

Verwendung von HRDF Fahrplänen zusammen mit GTFS-RT

Die Verwendung von GTFS-RT geht davon aus, dass als Basis eine statische GTFS-Datei verwendet wird.

Die Open Data Plattform stellt ein solches zur Verfügung.

Viele Akteure bevorzugen aber das (mächtigere) HRDF-Format.

Im HRDF bilden die folgenden Felder einer Fahrt einen eindeutigen Schlüssel:

  • „Fahrtnummer“
  • „Verwaltung“
  • „Variante“

Diese findet sich in der „*Z-Zeile“ der Datei „FPLAN“.

Im GTFS (und GTFS-RT) ist dies die „Trip_ID“ in der Datei „trips.txt“. Die Routen (in „routes.txt“) und trips werden automatisch nummeriert. D.h. sie sind auch zwischen GTFS-Versionen nicht stabil.

Wenn der eigentliche Fahrplan aus HRDF stammen soll und ihre Algorithmen darauf ausgelegt sind, so müssen sie dennoch das GTFS Static in ihre Datenbank importieren und ein Matching erzeugen.

Es wird folgendes Vorgehen empfohlen.

 

Importieren Sie das aktuelle GTFS Static in Ihre Datenbank

Importieren Sie das aktuelle GTFS Static in eine Datenbank (z.B. mit https://github.com/cbick/gtfs_SQL_importer). Als Beispiel ein einfaches SQL-Skript

Ein Verständnis der Struktur von GTFS ist notwendig: https://developers.google.com/transit/gtfs/reference/

Importieren Sie die notwendigen Daten aus dem HRDF in eine Datenbank

Sie müssen aus verschiedenen Dateien des HRDF Daten importieren. Die Struktur ist hier beschrieben: https://opentransportdata.swiss/content/uploads/2016/10/hrdf.pdf

Aus „FPLAN“:

Die Verkehrsperioden müssen auch integriert werden (Datei „BITFELD“). Sie brauchen diese, um die Verkehrstage zu ermitteln.

Aus der Datei „INFOTEXT“ wird benötigt, um bei Ausfällen die korrekte Zugnummer zu identifzieren. Wenn die Zugnummer wechselt (bei Ausfällen), so wird in „INFOTEXT“ im Feld „Infotext“ die ursprüngliche Zugnummer abgelegt. D.h. der Wert von „Z0“ im HRDF muss noch korrekt referenziert werden.

Die Durchbindungen müssen auch importiert werden. Durchbindungen sind zwei Fahrten, die durch denselben Zug durchgeführt werden. Die Durchbindungen sind in der Datei „DURCHBI“ enthalten:

Im GTFS sind die Durchbindungen bereits zusammengehängt, um den Trip zu bilden. Also Trip A und Trip B, die im HRDF über DURCHBI verbunden sind, sind im GTFS bereits als A->B drin.
Im Minimum sollten im Record enthalten sein:

  • Fahrtnummer
  • Verwaltung
  • Variante
  • Startort
  • Zielort
  • Startzeit
  • Zielzeit
  • Linie
  • Richtung
  • Verkehrsperiode
  • Z0
  • ZN

Matching der Daten

Sie können jetzt die Records matchen über:

  • Startort
  • Startzeit
  • Zielort
  • Zielzeit
  • Richtung
  • Verkehrstag

 

Es ist auch ein Matching über den Laufweg möglich, dann kann auf den Verkehrstag verzichtet werden. Beim Matching über den Laufweg wird die genaue Strecke gematcht.

Beachten Sie:

  • Es gibt mehr Trips in GTFS als Fahrten in HRDF.
  • Grenzüberschreitende Züge werden am Grenzbahnhof trunkiert auf der Opendata-Plattform. Wenn Sie die Fahrpläne aus einer anderen Quelle haben, so kann dies anders sein.
  • Sie können Startort/Zielort auch aus dem Laufweg von „FPLAN“ ermitteln.

 

Das Matching kann statisch oder dynamisch erfolgen, je nachdem, was Ihre Anwendung braucht.  Sie müssen aber auf jeden Fall den relevanten Tag einbeziehen, da sie den entsprechenden Trip und den entsprechenden HRDF-FPLAN-Eintrag nur so eindeutig identifizieren können. Beispielsweise:

  • Sie können dies z.B. mit einer Funktion getTripfromHRDF (FahrtID, Verwaltung, Version , Betriebstag) durchführen.
  • Sie können eine Funktion getHRDFfromTrip(trip_id, Betriebstag) erstellen.
  • Sie erstellen für jeden Betriebstag eine View/Tabelle der Trips und ihrem Mapping zum HRDF (Achtung: Im ungünstigsten Fall 130‘000 Fahrten x 400 Tage)