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.
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.
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.
Relation definieren: Only_straight_on from A–S via S to S–B.
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?
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?)
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.
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.
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.
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.
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.
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.