PTNA-Tool und GTFS-Daten in Österreich

Bei den AT-Eisenbahndaten ist mir aufgefallen, dass bei den Bahnlinien der ÖBB als Operator derzeit die “Österreichische Postbus Aktiengesellschaft” angezeigt wird - z.B. beim REX44 - ist das so OK?
Bei diesen Linien hätte ich eher die ÖBB-Personenverkehr AG als Operator erwartet.

1 Like

Kann ich nicht sagen. Die Angabe stammt aus den “agency.txt” Daten, die wiederum von den MVÖ stammen, Teil der GTFS-Daten sind.

Leider gibt da es noch nicht viel. Etwas veraltet: Ein Überblick über PTNA im Tagungsband der FOSSGIS 2020 (Seite 109). Mit einem Ausblick auf GTFS, aber wir haben ja schon 2023 und GTFS ist schon drin in PTNA.

Ich schreib’ im Laufe des nachmittags mal eine kurze Anleitung.

1 Like

Kurze Anleitung zu GTFS-Daten:

GTFS-Daten sind CSV-formatierte Textdateien, die sich zu einer SQL-Datenbank (bei PTNA: sqlite3) zusammenbauen lassen. Sie beschreiben im Wesentlichen

  • die Routen (routes.txt)

    • die den Bus-/Tram-/Zuglinien entsprechen
    • deren route_short_name entspricht in OSM (PTv2) im Wesentlichen die ‘ref’ einer Route-Master- oder Route-Relation
    • Beispiel der Routen für AT-VVV
  • die Trips (trips.txt zusammen mit stop_times.txt)

    • jeder Trip ist eindeutig einer Route zugeordnet
    • ein Trip entspricht einer einzelnen Fahrt zu einer bestimmten Uhrzeit
    • Trips sind im Wesentlichen durch die angefahrenen Haltestellen und die Abfahrzeit definiert
      • mehrere Trips unterscheiden sich dabei u.U. nur durch ihre Abfahrzeit nicht aber durch die angesteuerten Stops
      • PTNAs GTFS-Analyse fasst solche Trips zu einem einzelnen repräsentativen Trip zusammen
    • Beispiel für die repräsentativen Trips (Varianten) einer Route AT-VVV Bus 175
    • Beispiel für eine bestimmte Variante des AT-VVV Bus 175, Variante 1
  • die Shapes (shapes.txt)

  • die Stops (stops.txt)

    • das sind u.A. die Positionen der Haltestellen
    • in OSM PTv2 mit ‘platform’ vergleichbar
    • mit der stop_id - in DE wird diese als ref:IFOPT an der public_transport=platform getagged
    • bei PTNA gibt es keine allgemeine Übersicht über die Haltestellen
    • PTNA zeigt Haltestellen nur im Zusammenhang mit Trips auf
    • Beispiel einer Variante AT-VVV Bus 175, Variante 1

Wie verknüpfe ich GTFS-Daten mit OSM

… “demnächst in diesem Theater”

3 Likes

Wie verknüpfe ich GTFS-Daten mit Hilfe von PTNA in OSM

PTNA erlaubt es, Vorgaben für die in OSM zu mappenden Linien zu machen. Hierzu gibt es die CSV-Daten im OSM-Wiki (Beispiel: AT-VVV), in welche die erwarteten Linien(-Nummern) mit Fahrzeugtyp angegeben werden können.
Beispiel: AT VVV Bus 175 in Zeile 158 (edit-modus) derzeit :

175;bus;Schuttannen - Hohenems

Eine Liste mit solchen Angaben kann mit Hilfe von PTNA bei der GTFS-Analyse erzeugt werden:

AT-VVV, der grüne Button “Download als CSV-Liste für PTNA”.

Dort findet sich in Zeile 38 für den Bus 175 der folgende Eintrag:

175;bus;"2022-12-11 - 2023-12-09: 175";;;Landbus Unterland;AT-VVV;14-175-E-j23-1;

Die Angaben sind ‘;’ getrennt:

  • ‘ref’=‘175’ der Linie in OSM
  • ‘route’=/‘route_master’=‘bus’ der Linie in OSM
  • ‘kommentar’= hier der Zeitraum der Gültigkeit + ‘175’ als Wiederholung
  • ‘von’= von woher (leer)
  • ‘nach’= nach wohin (leer)
  • ‘operator’=‘Landbus Unterland’
  • ‘gtfs:feed’=‘AT-VVV’ woher stammen die GTFS-Daten
  • ‘gtfs:route_id’=‘14-175-E-j23-1’ was ist die entsprechende route_id in den GTFS-Daten

Die beiden letzten Einträge ‘gtfs:feed’ und ‘gtfs:route_id’ verweisen auf die Seite mit der Liste der Routen/Varianten des 175er in GTFS. Diese Daten sind derzeit nur ‘zur Information’ und werden (wenn vorhanden) bei der Analyse von PTNA ausgegeben und verlinkt (vergleiche DE-BY-MVV Bus 703, ganz oben rechts). Das erleichtert zunächst einmal die manuelle Kontrolle über das was hier erwartet wird (GTFS-mäßig).

Zurück zum AT-VVV Bus 175.

Da ist eine Diskrepanz, unabhängig, ob man Teilrouten mappen möchte oder nicht.

Des weiteren sehen wir bei den beiden ‘route’ Relationen des 175er einen Link: PTNA.

Wenn man in der Karte bei der PTNA-Analyse die Layer “Platform Route” und “Stop-Positions” ausblendet sollten die Karten beider Ansichten nahezu identisch sein - was sie heute (2023-01-04 20:31) bzgl. Haltestelle 6 nicht sind.

Das ist der momentane Stand der Implementierung.

Geplante Erweiterungen für GTFS in PTNA

… “demnächst in diesem Theater”

1 Like

Geplante Erweiterungen für GTFS in PTNA

GTFS

  • irgendwie einen brauchbaren Vergleich zwischen zwei GTFS-Versionen zu machen.
    Herauszufinden, was sich geändert hat, um gegebenenfalls Anpassungen vornehmen zu können:
    • neue, eingestellte Linien
    • neue, eingestellte Fahrstrecken
    • geänderte Fahrstrecken (Baustellen-bedingt, nur temporär)
    • neue, aufgelöste Haltestellen
    • neue Positionen von Haltestellen
    • ohne/mit Berücksichtigung von geänderten/neuen/entfallenen Abfahrzeiten
    • auch wenn sich die route_id ändert
    • auch wenn es mehrere Linien des selben Verkehrsmittels mit der selben Nummer gibt (AT-VVV Bus 206)
    • auch wenn die selbe Linie wegen Baustellen-bedingter Gültigkeit mehrfach vorkommt (DE-BY-MVV Bus 236)

QA für PTv2 mit Hilfe von GTFS

  • Die Angaben in den OSM-Wiki-CSV-Daten zu gtfs:feed und gtfs:route_id nutzen um weitere QA zu machen:
    • stimmt die Anzahl der in OSM gemappte Route-Varianten mit denen in GTFS überein?
      • mit/ohne Teilrouten
      • GTFS-Daten enthalten Fehler
        • wie z.B. beim DE-VY-MVV Bus 210 die 3 verdächtigen Varianten (1, 4, 7) mit nur 2 Stops (verifiziert, ich kenne den Bus, das sind Leerfahrten zum nächsten Einsatzort)
    • stimmen die in OSM gemappten Routenvarianten mit denen in GTFS überein?
      • Anzahl von Haltestellen
      • Namen der Haltestellen
      • Positionen der Haltestellen (Abweichung in Metern?) Siehe AT-VVV Bus 175, Haltestelle 6
        • in OSM - Variante 1
        • in GTFS - Variante 4
        • GTFS-Daten enthalten Fehler (oder auch nicht)
          • wie z.B. DE-BY-MVV Bus 222, doppelter Halt “Deisenhofen” bei Variante 1 und 2 (ist aber korrekt, kenne den Bus, bin mit dem gefahren)
          • wie z.B. DE-BY-MVV Bus 221, doppelter Halt “Waldheimplatz” (nicht nach “Kurt …” benannt) bei Varianten 5, 6, 7 (unklar, taucht im PDF-Fahrplan aber nicht auf)

QA in PTNA für PTv2

  • die Werte von ‘from’, ‘via’ und ‘to’ mit den Namen der Haltestellen vergleichen, auch die Reihenfolge

Wer also noch Ideen hat, was man wie machen/prüfen könnte: bitte melden.

Hallo!

Das mit Postbus dürfte ein Datenfehler sein, die REX-Linie wird ganz normal von der ÖBB-Personenverkehr AG betrieben.

(Postbus betreibt im “Bahnbereich” nur temporäre (z.B. während Baustellen) Schienenersatzverkehre (die in OSM aber nicht gemappt werden) und im Auftrag der ÖBB-Personenverkehr AG die Intercitybuslinien zwischen Graz und Klagenfurt sowie zwischen Villach und Italien.)

2 Likes

Das verstehe ich jetzt nicht ganz. Liniennummern sind bundeslandübergreifend nicht eindeutig, z.B. gibt es in mehreren Bundesländern jeweils eine S1, S2, S3, … Die beliebten dreistelligen Busliniennummern werden von den Verkehrsverbünden vergeben und sind in der Regel nur innerhalb des jeweiligen Verbunds eindeutig. Und Linien mit niedrigen Nummern wie 1, 2, 3, … können sogar innerhalb eines Bundeslands mehrfach vorkommen (auch wenn es da schon Verbesserungen gab, z.B. haben die Buslinien im Raum Linz-Land inklusive Citybus Traun nicht mehr dieselben Liniennummern wie die Straßenbahn- und Buslinien der Linz AG, sondern eindeutige Verbundnummern wie 611 – aber die sind halt auch nur innerhalb des OÖVV eindeutig und nicht österreichweit).

Es ging um die Bundeslandnummern im Namen der Auswertungen.

AT-139-VOR wurde so zu AT-VOR

1 Like

@ToniE bei den GTFS Analysen gibt es auch einen Vorschlag fürs Taggibg. zB hier: PTNA - GTFS Analysen

Da sind viele Codes dabei, die sich sehr ähneln und nicht menschenlesbar sind (gtfs:route_id …). Sind davon einige wichtiger als andere? Bzw. was kann man (das PTNA Tool?) damit machen? Ich zögere, all diese Tags einzutragen, weil das wie ein Overkill wirkt.

Außerdem: Kann man diese Werte-Tabelle gesammelt per Kopieren-Einfügen ins JOSM bringen? Ich habs nicht geschafft, nur jeweils Feld für Feld. Braucht es dafür dieses .osm-Template?

Servus, Hmm “codes” müssen nicht unbedingt menschenlesbar sein. Wenn sie Programmen helfen QA zu erleichtern oder Fahrpläne abzurufen ist das OK.

Die “gtfs:*” Tags sind noch nicht etabliert, ich weiss auch noch nicht, ob z.b. OsmAnd so was berücksichtigt. Zur Zeit machen sie wohl mehr Arbeit als zu nutzen.

Bzgl. Copy&paste: du kannst die Tabelleninhalte markieren und kopieren und dann in JOSM mit ctrl-v oder ctrl-shift-v einfügen

Ctrl-shift-V wars. Danke für den Tipp.

Bezüglich Anregungen: Für meinen Aktuellen Anwendungsfall trage ich zumeist nur die “Stammstrecke” einer Buslinie ein, also einen möglichst repräsentativen Kurs je Richtung. Manchmal ist dieser repräsentative Kurs schwierig zu finden in der GTFS Liste mit teilweise über 10 Kursen. Wäre es möglich, die Häufigkeit des Kurses (pro Tag oder Woche) anzugeben und Kurse mit nur wenigen Fahrten auf Wunsch ausblenden zu lassen?

Bzgl. “Stammstrecke”: ja, das geht.

Zunächst einmal werden auf der Übersichtsseite der Trips auch diejenigen gezeigt, die Teilstrecke einer anderen Fahrt sind. Die kann man ja weg lassen : siehe letzte Spalte

Etwas aufwändiger wird’s, wenn man die Wochentage und Anzahl Fahrten pro Tag bzw. insgesamt mit berücksichtigen will - aber das geht auch, wenn auch aufwändig.

Teile der Information zu den Verkehrszeiten aus dem 2. Link könnte man auch auf der Seite des 1. Link unterbringen - theoretisch.
Je nachdem, wie dumm die Verkehrszeiten in GTFS kodiert sind, geht’s gut, schlecht, schlechter oder fast garnicht.

Schwer, das in einen einfachen Algorithmus zu packen.

Ctrl-C und dann Ctrl-Shift-V funktioniert in JOSM auch zum Kopieren aller Tags von einem Objekt auf ein anderes.

Ach so, gut, der Name des Verbunds sollte wohl wirklich bundesweit eindeutig sein.

Ja, wie gesagt: Österreich ist da gut organisiert. In Bayern gibt es schon zwei mal VVM

Good News!

Der automatisierte Download der GTFS-Daten von Mobilitätsverbünde funktioniert nun.

Bei PTNA gibt’s pro Monat maximal einen Datensatz

  • der erste im Monat
  • weitere verfügbare Updates im selben Monat werden als “Fehlende Version” angezeigt, aber nicht runter geladen.
  • sollte Bedarf nach einem absolut aktuellen Datensatz bestehen, ist das aber kein Problem - bitte melden.

Im Februar geht’s bei AT-* weiter, den Jänner überspringen wir einfach mal.

Nachdem ich hier ein besonderes Ungetüm einer unübersichtlichen Buslinie gefunden habe (Linie 1839 im VOR ist mir noch eine Idee gekommen, wie man mit dem GTFS Tool die Stammstrecke möglicherweise leichter auffindbar machen könnte.

Könnte man alle Routen auf einer Karte als Heatmap überlagert darstellen? Auch wenn eine Gewichtung nach Fahrtanzahl offenbar nicht so einfach möglich ist (das wäre natürlich am besten), wäre so ein Vergleich hilfreich. Durch (extrem) viele Routenvarianten zeigt sich auch hier eine gewisse “Stammstrecke”.

Ich denke, diese Abbildung wäre ein schöner Überblick über eine Linie.

Eine grobe Gewichtung nach Fahrtanzahl scheint mir als Algorithmus doch machbar zu sein, anders als ich in PTNA-Tool und GTFS-Daten in Österreich - #56 by ToniE angedeutet hatte.

Für eine Variante kenne ich derzeit die Abfahrzeiten (also auch deren Anzahl) und die ‘service_ids’ aus GTFS

  • calendar.txt:
"service_id","monday","tuesday","wednesday","thursday","friday","saturday","sunday","start_date","end_date"
1,1,1,1,1,1,0,0,20230202,20231209

d.h. grob die Anzahl der Tage zwischen 2023-02-02 und 2023-12-09 multipliziert mit Anzahl der Wochentage an denen gefahren wird (hier Mo-Fr) dividiert durch 7 (Tage pro Woche)

  • calendar_dates.txt
"service_id","date","exception_type"
1,20230410,2
1,20230501,2
1,20230529,2
1,20231003,2
1,20231031,2
1,20230518,2
1,20230407,2

Ergebnis von oben plus die Anzahl der “exception_type” == 1 (auch an diesem Tag) minus die Anzahl der “exception_type” == 2 (nicht an diesem Tag)

Das ganze multipliziert mit der Anzahl der Abfahrzeiten für diese “service_id”

All das über alle zur Variante gehörenden ‘service_ids’.

Das sollte sogar für diese Variante meines Busse 210 machbar sein - sogar dynamisch auf der Webseite.

Besser wäre es aber, diese Zahl bei der Vorbereitung/Aggregation der Daten zu berechnen (bevor sie auf den Webserver geladen werden), denn die Zahl verändert sich ja nicht.

Auf eine Heatmap mit einer Karte würde ich dann zunächst verzichten, ist deutlich aufwändiger.

Hab’s gerade freigegeben.

1 Like