shared node bei kreuzenden Abbiegespuren

Tach, ich schau mir gerade http://www.openstreetmap.org/#map=19/50.07241/8.25696 in JOSM an und frage mich:

Wäre es nicht viel sinnvoller, bei all den zahlreichen einander kreuzenden Abbiegespuren gar keine shared nodes zwischen denselben zu setzen, statt so viele only-straight-on-Restrictions an den shared nodes setzen zu müssen?

Oder gibt das Probleme mit QS-Tools, wenn sich highways ohne shared node kreuzen, ohne daß layer gesetzt sind (was hier ja nicht geht, die kreuzen sich ja schon auf gleicher Höhe, aber halt ohne jede Wechselmöglichkeit)?

Für einen Router wäre ohne shared nodes klar, daß man der aktuellen Abbiegespur folgen muß und nicht auf eine andere, kreuzende wechseln kann.

–ks

Das wäre in der Tat einfacher, widerspricht aber den Regeln in OSM.

Eben nicht, Fahrzeuge können wechseln, die meisten dürfen nur nicht. Beispielsweise während BOS-Einsatzfahrten dürfen Abbiegeverbote, Einbahnregeln, maxspeed usw. ignoriert werden.

Bernhard

Getreu nach “Simpsons already did it” ein “Gibt’s schon ein Proposal für”: https://wiki.openstreetmap.org/wiki/Proposed_features/highway%3Djunction . Dort sind Rettungsfahrzeuge leider nicht berücksichtigt.

Rettungsfahrzeuge sind doch weitgehend wumpe, für die gelten doch reichlich Reglen nur eingeschränkt? Einzige Probleme, die “wir” denen machen können, sind (nicht existierende) bauliche Beschränkungen. Beschilderte Restriktionen sollte die herzlich wenig interessieren.

Edit: ääh zum Thema: ich sehe da kein Problem, geht’s etwas konkreter?

Situation: Kreuzung mit zwei Abbiegespuren, eine von A nach B, die andere von X nach Y. Man kann von A nach B fahren und von X nach Y, aber nicht von A nach Y oder von X nach B. Die Spuren treffen sich baulich in der Mitte. Eine Lichtzeichenanlage sorgt dafür, daß die Fahrzeuge das unterlassen.

Mappingmöglichkeit 1:
Einen Way von A nach B malen.
Einen Way von X nach Y malen.
Fertig. Zwei Ways, vielleicht 8 Nodes, 4 pro Way, die gehen ja etwas rund.

Mappingmöglichkeit 2:
Ways wie in Möglichkeit 1.
Aber dann am Schnittpunkt den shared node S setzen.
Ways aufteilen in A–S, S–B und X–S, S–Y.

  1. Relation definieren: Only_straight_on from A–S via S to S–B.
  2. Relation definieren: Only_straight_on from X–S via S to S–Y.
    Fertig. Vier Ways, 9 Nodes, 2 Relationen.

Meine Frage: Was ist der Vorteil von Möglichkeit 2, wenn Möglichkeit 1 augenscheinlich zum selben Ziel führt?

–ks

Ich versteh das leider immer noch nicht, es ist auch etwas zu abstrakt. Kannst Du mal entweder 2 Zeichnungen machen, oder eine konkrete Linie aus Deiner Beispielkreuzung benennen? (im Optimalfall beides?)

Bitte beachten, dass Router ohne Shared Node keinen Abbiegevorgang erkennen können.

Eine Idee wäre für Abbiegespuren auf Kreuzungen eine neue Kategorie unterhalb von highway=_link z.B. namens highway=_junction. Ein solcher Way hätte eine eingebaute “nur geradeaus Abbiegebeschränkung” auf seinen Mittelknoten, ebenso darf von anderen Ways in der Mitte nicht auf ihn gewechselt werden. Zur Rückwärtskompatibilität würde man das Routen über das “Rechteck”, welches die durchgehenen highway aufspannen, erlauben. Diese Art von highway könnte man weniger wichtiger darstellen und ab einer bestimten Zoomstufe dann auch weglassen.

Probeweise in JOSM folgende Kreuzung: http://osm.org/go/0DmUKe~1h?layers=N Aber so richtig viel spart es nicht.

Vorher 35 Ways, 16 Abbiegerelationen

Nachher 29 Ways, nur noch 7 Abbiegerelationen. Es fehlen wegen Rückwärtskompatibilität 4 Relationen

Auch Rechtsabbiegespuren: 28 Ways, nur noch 5 Abbiegerelationen. Es fehlen wegen Rückwärtskompatibilität 6 Relationen

Wo die Abbiegespuren von den Geradeausspuren abzweigen, sind natürlich shared nodes. Mir geht es um den shared node dort, wo zwei Spuren einander kreuzen, ohne daß zwischen ihnen irnkeine Interaktion erlaubt wäre. Das können auch zwei Geradeausspuren sein. Die erfordern dann jeweils eine Menge Zusatzaufwand.

In meinem Beispiel:
http://osm.org/node/21724196
http://osm.org/node/3297180386

–ks

Genau das hatte ich auch schon einmal hier:
http://www.sammyshp.de/fsmap/#19/51.06145/13.69048 (Sollte man sich einmal im Luftbild - rechts oben Layer ansehen.)
vorgeschlagen. Das wären aber dann eingezeichnete “lanes”, sind zwar einfacher - aber nicht erwünscht.

Hier die “halbfertige” Datei:
Flgelwegbrcke.osm

Die Interaktion ist doch schon ob ein Router/Navi “an der ersten oder zweiten Kreuzung rechts/links” ansagt. Ohne shared node ist das wohl kaum zu zählen/erkennen.

Wenn der Benutzer an der zweiten Kreuzung rechts abbiegen muss, möchte er sicher nicht die Ansage “An der vierten Kreuzung rechts abbiegen” erhalten, nur weil auf der ersten Kreuzung drei Shared Nodes mit irgendwechen querenden Fahrbahnen durchfahren werden.

Für das Zählen der Kreuzungen dürfte der Shared Node zwischen kreuzenden Abbiegefahrbahnen eher störend sein.

Man könnte ein Tag für den Shared Node definieren, das festlegt, dass kein Wechsel zwischen durch diesen Knoten hindurchlaufenden OSM-Wegen möglich ist.

Router müssen die Knoten-Tags ohnehin auswerten, denn da könnte ja auch z.B. ein barrier=* stehen.

Grundsätzliche halte isch den Shared Node für entbehrlich, auch wenn man dazu die OSM-Regeln anpassen muss. Dies wäre aber keine sinnvolle Lösung für das Problem, da die Wahrscheinlichkeit sehr hoch ist, dass ein Benutzer, dem die Regelanpassung nicht bekannt ist, den Shared Node nachträglich setzt.

Snip > da Doppelpost.
(Man sollte sowas nicht im Zug beantworten, da beim upload die Verbindung haken kann.)

Vom Grundsatz her finde ich den Ansatz von imagic im proposal
https://wiki.openstreetmap.org/wiki/Proposed_features/highway%3Djunction
gut. Darauf aufbauend finde ich die Idee von Jojo4u gut, wie man auf die Fläche highway=junction verzichten könnte, aber kreuzende Verbindungen ohne die Notwendigkeit von shared nodes in Kreuzungen besonders kennzeichnet, damit QA und Auswertungen damit umgehen können.

Ergänzend zu Jojo4u meine ich:
Diese Verbindungen erhalten als Zusatz zu highway=* hinten “_junction” (Beispiel: highway=tertiary_junction). Alle derartigen highways müssen lediglich mindestens am Anfang und Ende shared nodes mit anderen highways haben, können aber andere highays ohne shared node kreuzen, wenn kein Übergang zu diesen dort möglich ist. Außerdem sollen Router diese highway=*_junction grundsätzlich gegenüber anderen Verbindungsmöglichkeiten zwischen zwei highways bevorzugen, damit z.B. die gesonderten vor Kreuzungen abzweigenden Spuren verwendet werden, ohne dass turning restrictions an folgenden shared nodes erforderlich sind.
Ich sehe darin eine für jeden Mapper machbare Methode, die maschinenlesbare Ergebnisse liefert und ohne Relationen auskommt.
Vieleicht schaffe ich es heute abend, ein Beispiel zu zeichnen.

Ich hatte einmal vorgeschlagen, hw=lanes als Spur in Kreuzungen (bei größeren Zoomstufen) zu nutzen. Damals wurde die Fortführung der hw=* in der Spur abgelehnt, da es ein lanes-Schema gibt. Wenn eine hw=tertiär über eine Kreuzung mit einer hw=primary in gesonderter Spur verläuft, kann der Router dies auch “vorauswählen”.

Auch das “nichtverbinden der Spur” (siehe Flügelwegbrücke) wurde abgelehnt - damals habe ich es damit auch belassen. Das Routing hat damals einwandfrei geklappt. Und das Mappen wäre nach den Tatsachen auch einfach “bildlich” möglich.

Auf die Fläche würde ich nicht verzichten, da es auch im Flächen Mapping (area:highway) enthalten ist.

Meinst du das?
http://forum.openstreetmap.org/viewtopic.php?pid=518976#p518976

Danke - ja da müsste der “Versuch” von mir herstammen …

Was eine “Kreuzung” ist wird durch Heuristiken sicher immer mal falsch sein. Die Lösung ist hier eine area:highway=* + junction=yes Fläche (https://wiki.openstreetmap.org/wiki/Proposed_features/Street_area#Plumbers_principle).

Das setzt aber voraus, das wirklich jede noch so einfache Kreuzung so erfasst wird, was äußerst unwahrscheinlich ist. Die von mir verwendeten Router zählen auch nicht “an der x-ten …abbiegen” sondern sagen “in x Metern abbiegen”.
Außerdem orientieren sich Router an edge und node, was schnell und zuverlässig funktioniert. Wenn sie zusätzlich am jedem shared node von highway prüfen müssen, ob dieser in einem ah=* mit junction=yes liegt, würde das die erforderliche Datemenge und die Auswertungsgeschwindigkeit negativ beeinflussen.
Daher bleibe ich bei meinem Vorschlag, in komplexen Kreuzungen highway=*_junction für die hier diskutierten Spuren im Kreuzungsbereich zu verwenden, wenn andere einfachere generalisierte Erfassungen nicht ausreichen oder eine Unmenge von turn restrictions bedingen.