Diskussion über Public Transport Version 2.1

Mir ist da noch eine Idee gekommen…

Wir haben ja derzeit die Situation, dass die unabsichtlichen Beschädigungen an PTv2-Routen durch das Auftrennen von Wegen in ganz anderen Zusammenhängen (meist Lane-Edits und Fußgängerinseln und meist in JOSM) zu einigen Stunden Reparaturarbeiten pro Tag allein in NRW führen. Diese Reparaturen sind gewöhnlich ziemlich leicht durchführbar, aber sie kosten auch mit viel Routine viel Zeit und sie bringen keinen Fortschritt sondern beseitigen nur Rückschritte. Die Verursacher bekommen von der ganzen Angelegenheit nichts mit, da die von ihnen verarbeiteten Objekte nicht geändert werden müssen. Wir arbeiten also mit Datenstrukturen, die sehr ungüstige Zusammenhänge schaffen.

Ich habe jetzt vielleicht eine Möglichkeit gefunden, die Routen einer ÖPV-Linie so zu formulieren, dass sie unempfindlich gegen anderweitige Editieroperationen werden (und leichter auf die trotzdem noch anfallenden Restschäden hin überprüfbar werden).

Dazu werden die von vielen Mappen ja ohnehin gewünschten Segmente eingesetzt. (Diese geben gemeinsame Routenstücke von mehreren Varianten an und vermeiden so vielfache Angaben derselben Sache.) Wenn nun die Routen gar keine Fahrwege mehr enthalten und also nur noch aus Segmenten zusammengesetzt werden, dann ist diese Segmentreihenfolge unabhängig von anderen Editieraktivitäten. Verlangt man nun von den Segmenten, dass sie nur ein eindeutiges Wegstück beschreiben (verzweigte Wegenetze wären da ohnehin wenig sinnvoll), dann kann man in den Segmenten ohne Reihenfolgeinformation arbeiten und sie so ebenfalls unabhängig von anderen Editieraktivitäten machen. Sie wären dann eine Art PTv1-Routen ohne Haltestellen (mit “forward”, “backward” und “bidir”) – ergäben aber immer einen eindeutigen Weg. Das beträfe nur die Fahrwege, die Halte wären nach wie vor in der Route selbst.

Weide

Du beschreibst nur eine Seite. Viele Mapper achten darauf, mit ihren Änderungen keinen Schaden an den ÖPNV-Relationen zu verursachen. Die einen passen die Relationen selbst an und brauchen dafür sehr viel Zeit, weil sie ungeübt sind und viel nachlesen müssen, die anderen verzichten darauf, solche Straßen zu bearbeiten. Die Verursacher, also die Ersteller der ÖPNV-Relationen, bekommen von der ganzen Angelegenheit nichts mit, da man den erstellten Changesets die Mehrarbeit nicht ansieht und die nicht erstellten Changesets gar nicht sichtbar sind.

Ja!

Das wäre schon ein Fortschritt. Allerdings fügt man damit dem ÖPNV-Schema eine weitere Abstraktionsebene hinzu und macht die Kontrolle der Relationen abhängig vom Editor komplizierter.

Konsequent wäre es, nur die Haltestellen zu erfassen und die stupide Arbeit einem Router bei der Auswertung überlassen.
Damit würde man sowohl den Mappern, die ÖPNV-Relationen erstellen und pflegen, als auch jenen, die die Straßen editieren, viel Arbeit abnehmen.
Die Datenstrukturen wären zudem weniger anfällig gegen unabsichtliche Zerstörung.

Wie kann man denn mit dem Auftrennen eines Weges eine PTv2-Route kaputt machen? Auftrennen macht doch nur Abbiegeverbote und destination_signs kaputt. Das Zusammenführen ist in meinen Augen das Problem. Das ist eine der riskantesten Aktionen in OSM (und eine rein kosmetische), wobei die neueren JOSM-Versionen wenigstens mit dem mehrfachen Vorkommen in einer Relation klar kommen. Wie es sich da mit anderen Editoren verhält weiß ich ja nicht.

Aber davon ab fände ich es schade, wenn man Segmente auf eine noch höhere PT-Version verschieben müsste. Ich habe hier Buslinien, die aus insgesamt 10 Einzelvarianten bestehen mit eigentlich nur einer handvoll Variationen, wenn man Bausteine nehmen würde. Wenn dann jemand einen Baustein beschädigt, müsste man auch nicht gleich alle Relationen fixen, sondern nur den einen Baustein. Aber ohne guten Editor-Support in JOSM sehe ich schwarz für Segment-Bausteine.

Ich habe Segmente für ÖPNV-Stammlinien (Innenstadt, Busbahnhof) verwendet und darin keine Schwierigkeiten gesehen.
Es gibt allerdings Anwendungen, die mit geschachtelten Relationen nicht zurechtkommen.

Ich meine eher, dass man selbst den Überblick verliert, ob die Segmente überhaupt (noch) aneinanderpassen und dadurch auch, ob die Reihenfolge stimmt. In JOSM könnte ich mir das aufklappbar im Routeneditor vorstellen träum

Der OSM Relation Analyzer http://ra.osmsurround.org/ kann die Zusammenhängigkeit auch bei geschachtelten Relationen darstellen (konnte es zumindest damals).
Im JOSM-Relationen-Editor wäre das Feature natürlich viel effizienter angesiedelt.

Das Auftrennen ist ein Problem, wenn nicht genügend Mitglieder der Relation geladen sind. Im Folgenden gehe ich von JOSM aus. Angenommen, der Editor hat von einer Relation nur eine Way geladen. Wenn man nun diesen Way aufsplittet, woher soll der Editor dann wissen, dass er Teil 1 vor Teil 2 oder Teil 2 vor Teil 1 in die Relation einsortieren soll? Wenn die angrenzenden Member (also das erste vor und nach dem zu teilenden Way) geladen sind, dann kann er das selbst ermitteln (außer die Relation ist so kaputt, dass die gerade an der Stelle ein Loch hat).

Bei iD kann ich mir vorstellen, dass Teil 2 des gesplitteten Ways einfach hinten am Relationsende angehängt oder hinter Teil 1 einsortiert wird. Wer möchte, darf gerne mal Versuche machen und die Erkenntnisse hier posten.

Einen großen Teil der Routen-Fehler, die durch Aufsplitten der Ways entstehen, dürfte man verhindern können, wenn JOSM einfach das Aufsplitten solcher Ways nur erlauben würde, wenn der Vorgänger und Nachfolger in der Routenrelation geladen sind. Eine Fehlermeldung im Stil “Der Way kann nicht geteilt werden, weil er Mitglied einer Relation ist und noch nicht genügend Mitglieder der Relation geladen sind. [fehlende Ways nachladen] [Way nicht aufteilen]” ([Buttonbeschriftung]) dürfte JOSM-Nutzer nicht verstören (die sind ja, um es im iD-Sprech auszudrücken, verstörende Popus gewohnt). Im Falle von iD wäre es egal, wenn der Editor sich schnell im Hintergrund den Vorgänger und Nachfolger von der API holt, da das Onlineeditor ist. (In JOSM braucht man einen Netzwerkverbindung nur zum Down- und Upload)

Das Wiedereinführen von Segmenten ist halt ein tiefer Eingriff in die Datenstruktur. Wir diskutieren hier erstmal über Version 2.1, die ja möglichst auch noch abwärtskompatibel zu 2.0 sein soll. :slight_smile:

Die Reihenfolge der Wege in der Relation gibt die Durchfahrrichtung indirekt an. Steht da
Weg A
Weg B
Weg C
dann fährt der Bus erst durch A, dann durch B und dann durch C. Jetzt trennen wir B auf und erhalten die Teile X und Y. Nehmen wir an, dass X das Stück von B ist, dass zuerst durchfahren wurde. Die richtige Reihenfolge ist dann also
Weg A
Weg X
Weg Y
Weg C

Beim Bus in der Gegenrichtung stand da
Weg C
Weg B
Weg A
und jetzt muss da
Weg C
Weg Y
Weg X
Weg A
stehen.

Es muss also einmal das B durch XY und einmal durch YX erstetzt werden.

Das macht der JOSM nur dann richtig, wenn er zum Zeitpunkt des Auftrennens A und C und die Relation schon geladen hatte. Sonst ersetzt er B beide Male durch XY und damit ist eine der beiden Relationen falsch, Scotty muss den Bus zweimal beamen und er fährt in den Daten ein kleines Stückchen von Süd nach Nord statt wie in der Realität von Nord nach Süd.

Das kann man verhindern, wenn man vor jedem Auftrennen (“p”) den zu trennenden Weg und seine beiden Endpunkte anwählt und Alt-Ctrl-D macht.

Da das sehr häufig bei großen Straßen (wegen der lanes) passiert und da notorisch auch viele Busse fahren, kann man ganz leicht ein Dutzend Relationen beschädigen ohne was zu merken.

Weide

Hab ich gemacht. Der ID hat alles richtig gemacht. Diesen Fehler hab ich bei meinen Reparaturarbeiten auch fast nur im Zusammenhang mit JOSM gefunden.

Weide

Edit: PS: Beim Längssplitten (Fußgängerinseln vor Kreuzungen. Aus einem Weg werden zwei benachbarte Oneways) muss man es in jedem Editor per Hand korrigieren und das geht im ID m.W. einfach nicht.

Ein Router kann die Strecke nur raten, reagiert empfindlich auf Baustellen etc. und ist bei teilweise erfassten Routen schlechter als nichts. Da würde ich eher komplett auf den Fahrweg verzichten. Wenn mehrere Mapper mal hier und mal da was beitragen, dann geht das ohne Fahrwege nur ganz schlecht, weil man keinen Überblick über den Erfassungszustand bekommt. Man sieht nicht, ob der Bus an dieser Abbiegung einfach durchfährt oder ob er noch einen Schlenker durch A-Dorf macht und da nur noch keiner Haltestellen erfasst hat.

Weide

Sollten wir dann mal für 3 extra was aufmachen?

Weide

Hallo Weide,

Ja, wir sollten trennen in kleine Änderungen, z.B.

  • Wiedereinführung von light_rail (?)
  • service=* an Routenrelationen (bei der Bahn zur Unterscheidung der Zuggattungen von S und RB bis ICE)
  • Unterstützung mehrerer Plattformen für eine Stop-Position (wenn z.B. der Bahnsteig zur Hälfte gepflastert ist und die andere Hälfte unbefestigt und niedriger)

und große Änderungen, z.B.

  • Segemente (ob wir das überhaupt wollen, ist eine andere Frage)
  • Idee/Konzepte wie der PTv3-Entwurf von Weide
  • spezielle fahrweglose Relationen für Verkehrsmittel, die keinen festen Fahrweg haben (Flächenrufbusse)

Kleine Änderungen sollten Änderungen sein, die nur einen geringen Aufwand für dem Mapper bei der Konvertierung einer Route von v2 nach v2.1 mit sich bringen und für die kein großer Programmieraufwand anfällt bzw. die zu keinen großen Problemen führen, wenn man sie nicht in seiner Auswertung berücksichtigt. Große Änderungen müssen nicht unbedingt abwärtskompatibel sein und können auch für den Mapper einen erhöhten Aufwand bedeuten.

Es wäre also eine gute Idee die großen Änderungen in einem separaten Thread zu diskutieren.

Wer von euch hat eigentlich vor zur FOSSGIS zu kommen? Man könnte sich dort im Rahmen eines BOF treffen.

Viele Grüße

Michael

PS Deine Erklärung, wie man mit JOSM Routen beschädigt, ist richtig gut.

Denkbar wäre auch eine Trennung der Relationen in “angefahrene Haltestellen dieser Linie” und “einzelne Streckenverläufe”

Ich quäle mich gerade durch den Buslinien Lüneburgs mit ihren zig Varianten je Streckenverlauf. Dabei empfinde ich als wenig motivierend, dass die Streckenverläufe bei allen OSM-basierten ÖPNV-Anwendungen, die ich kenne, allein bunte Striche in der Landschaft sind. Was ja anderseits auch klar ist, da eine Darstellung “zeige den Streckenverlauf der nächsten Fahrt der Linie 5003 jetzt” oder “zeige mir das befahrene Streckennetz an einem Samstagvormittag” aus den OSM-Daten schon deshalb nicht abstrahierbar wäre, weil eine Tagging-Differenzierung der unterschiedlichen Varianten nicht erfolgt und auch kaum möglich erscheint “course_variant=So, während der NI-Schulferien, Fahrten um 07.16, 09.16 und 18.14”.

Andererseits motiviert (mich) die Verknüpfung der Haltestellendaten mit einem Fahrplan, wie sie openptmap macht, sehr. Deshalb dachte ich auch schon mehrfach: “Relationen trennen in Haltestellen und Streckenverlauf”.

Ich finde es ebenfalls müßig, jede Linienvariation als eigene Route zu definieren. Aber ist es nicht das, was man zum routen braucht? Ich stelle mir vor, für ganz Deutschland einen Routenplan zu haben, der aber die Strecken nicht wie bei diesem hier als gerade Strecke sondern als richtigen Streckenverlauf auf Basis der OSM Karte darstellt. Die Basisdaten (einschl. Erfassung der Routen) dafür können nur von OSM kommen, die Fahrpläne vom jeweiligen Netzbetreiber. Was geregelt werden müsste, ist dann die regelmäßige Pflege der Routen. DAS ist kurzfristig allerdings nicht zu machen.

Ja, da stimme ich Dir zu.

Schuld sind weder die Ersteller der Routen, die ja nur Daten erfassen wollen, noch die Leute, die mit dem JOSM Routen beschädigen, die sie oft nicht mal auf dem Bildschirm haben. Deshalb sind Datenstrukturen wichtig, die unempfindlich gegen Splitten sind.

Ein ähnliches (aber seltenes) Problem haben wir übrigens bei Multipolygonen. Auch da kann bei den erlaubten Berührungen der Ränder durch Splitting ein MP beschädigt werden, wenn dabei ein Knoten mit mehreren Verbindungsmöglichkeiten entsteht.

Weide

Früher hatten wir wenigstens noch bunte Striche und bunte Pfeile. Die Pfeile galten für die Streckenstücke, die nur in einer Richtung durchfahren wurden. Ich fand das damals sehr hilfreich – die Streckenpläne waren so wie sie sein sollten.

Mit der Einführung von PTv2 sind die Pfeile “verstorben”:

1.: für die PTv2-Routen ist es schwer rauszukriegen. Man muss quer über alle Varianten anhand des Kontextes analysieren. (Wenn die Route nicht komplett und fehlerfrei ist, kann das richtig kompliziert werden.)

2.: für die PTv1-Routen wurde durch Verwechslung mit PTv2-Eigenschaften der Datenbestand entwertet. Eigentlich sind PTv1-Routen Linienpläne. Es gibt nur eine Relation pro Linie und jede Straße taucht nur einmal auf. Dann musste man nur die Straße in der Relation finden und hatte:
Rolle “forward”: Linie mit Pfeil in OSM-Richtung des Wegs
Rolle “backward”: Linie mit Pfeil gegen die OSM-Richtung des Wegs
Rolle “”: Linie ohne Pfeil (Bus fährt von links nach rechts und von rechts nach links)
Richtige PTv1-Routen sind sehr selten geworden.

Weide

Das ist im Grunde PTv1. Eine Straßenliste mit Durchfahrrichtungsergänzungen(den Rollen “forward”, “backward” und “” für bidirektional)

PTv2 kam, weil einige Sachen nicht aus dem Streckenplan hervorgehen. Auf dem Plan kann es so aussehen, als ob der Bus von A-Dorf nach B-Dorf fährt. Tatsächlich gibt es aber nur die Varianten “ohne die beiden Dörfer”, “über A-Dorf” und “über B-Dorf”, aber eben nicht “über beide”. Oder etwa Sprungbusse (bin ich in Schweden mal drauf reingefallen), die auf derselben Strecke die meisten Haltestellen auslassen.

Weide

Es ging mir aber nicht darum, dass man etwas Arbeit spart weil man auf weniger Relationen Rücksicht nehmen muss. Ich will die ganze Rücksichtnahme-auf-ÖPV-Arbeit beim Splitten beseitigen. Derartige Segmente würden ohne Reihenfolgeinformation funktionieren und daher müsste man beim Splitten keine Rücksicht auf sie nehmen.

Weide

Ich mache dann mal einen neuen Thread auf “Diskussion über Public transport Version 3”

Weide

Ist das nur für Deutschland/deutschsprächige Gebiete? Sonst wäre es vielleicht besser das auf English zu machen.

Jo