Sortierung turn:lanes

Hi,
ich habe in die wayproblems analyse eingebaut das ich die sortierung von turn:lanes durchprüfe. D.h. es kann rechts von einem through/none kein left sein weil ja diese den through kreuzen würde.

Beispiel:

** turn:lanes=right|through|left**

Geht nicht - Es ginge:

** turn:lanes=merge_right|through|merge_left**

Die Frage ist jetzt was mit sowas ist:

** turn:lanes=through;left|right**

Wäre nach meinem ermessen auch falsch - Müsste sein:

** turn:lanes=left;through|right**

Bin ich da zu pedantisch?

Flo

Ich glaube ja. :slight_smile:

Ist die Reihenfolge wirklich wichtig? Hauptsache ist doch. dass ; und | richtig verwendet werden. Da gibt es gerade bei Anfängern häufig Irritationen.
Oder?

:expressionless:

Gibt es im Wiki dazu vorgaben?

Ich kann deinen Gedankengang verstehen, sehe aber persönlich kein großes Problem in einem through;left, denn ich interpretiere das ; als eine UND-Verknüpfung. Es symbolisiert ja eine Verknüpfung zu einem Pfeil. Also wäre left;through eleganter, aber through;left nicht “falsch”.

Also gemeint habe ich, wenn ich right|through|left eintrage, meine ich doch nicht, dass die linke Spur für Rechtsabieger ist. Oder gibt es so etwas irgendwo auf der Welt? Wenn nicht, ist die Reihenfolge im Tag doch egal.

Kann mir nicht vorstellen, dass es sowas gibt, aber dennoch ist das nicht egal. Irgendwo war definiert, dass die lanes von links nach rechts gelesen werden. Darauf müssen sich Auswerter, insbesondere Router verlassen können. Die Anordnung der Werte die durch senkrechte Striche getrennt werden ist also nicht egal und flohoffs Prüfung macht absolut Sinn.

Die Anordnung mehrerer Werte zwischen zwei Strichen, die durch Semikola getrennt sind, ist tatsächlich egal. Das ist eine UND Verknüpfung, diese Werte beziehen sich auf ein und dieselbe Spur. Da ist flohoff zu pedantisch.

Edith Tippfehler

Das prüfe ich ja eh - Also ob die elemente die mit “|” abgetrennt sind gleich der entsprechenden lanes ist (Also inklusive :forward/:backward und co)

Flo

Der Punkt ist so ein bisschen das es die Regel generalisiert. D.h. die Prüfung ist eben das wenn ich die elemente an | und ; trenne sie eine gewisse Reihenfolge einhalten müssen.

Flo

Danke für die Beantwortung meiner noch nicht gestellten Frage.
also: Anzahl “|” = lanes=x-1

Oh doch. Beispielsweise wenn die rechte Spur eine Busspur ist und nach links abbiegt.
Auf normalen Spuren habe ich das in irgendeiner Gegend aber auch schon mal gesehen in Luftbild und OSM zum “Ausholen” beim Linksabbiegen.

Hier ist ein Beispiel aus Frankfurt: https://www.openstreetmap.org/way/406017374
(auch wenn hier mal wieder jemand meinte, dass eine Radspur als getrennter Radweg eingezeichnet werden müsste und es jetzt sowohl das Spurtagging als auch einen extra Weg gibt, was natürlich falsch ist)

Nein. lanes und :lanes zählen die Spuren auf unterschiedliche Weise (Spuren voller Breite vs. alle Spuren), die Anzahl muss also nicht gleich sein.

In der Türkei ist es verbreitet, daß die Linksabbieger erst einmal nach rechts separiert werden und dann die komplette Straße queren müssen.

Gruß,

Baßtölpel

Es ist noch komplizierter aber ja. Grundsätzlich hast du die angaben lanes/lanes:forward/lanes:backward.

Wenn du kein lanes:forward hast aber ein turn:lanes:forward und lanes und lanes:backward musst die Anzahl erst berechnen.

Es sollte finde ich möglichst alles 3 da sein - dann hat man eine möglichkeit der validierung.

Also was so lanes angeht sind das so meine schematischen tests:

lanes=lanes:forward+lanes:backward
lanes ist ganzzahl
lanes:forward ist ganzzahl
lanes:backward ist ganzahl
lanes > 0 && < 8
lanes:backward > 0 && < 8
lanes:forward > 0 && < 8
turn:lanes && oneway
destination:lanes && oneway
turn:lanes:backward && !oneway
destination:lanes:backward && !oneway
elemente mit | in turn:lanes = lanes
elemente mit | in turn:lanes:forward = lanes:forward // lanes - lanes:backward
elemente mit | in turn:lanes:backward = lanes:backward // lanes - lanes:forward
elemente in turn:lanes mit | oder ; separiert in known good liste
elemente in turn:lanes:forward mit | oder ; separiert in known good liste
elemente in turn:lanes:backward mit | oder ; separiert in known good liste
elemente in turn:lanes mit | oder ; separiert in priority order
elemente in turn:lanes:forward mit | oder ; separiert in priority order
elemente in turn:lanes:backward mit | oder ; separiert in priority order
elemente mit | in destination:lanes = lanes
elemente mit | in destination:lanes:forward = lanes:forward // lanes - lanes:backward
elemente mit | in destination:lanes:backward = lanes:backward // lanes - lanes:forward

Und die priority order für die turn commands hab ich mir so gemacht

        const std::map<const std::string, const int> turn_to_priority {
                { "sharp_right", 1 },
                { "right", 2 },
                { "slight_right", 3 },
                { "merge_to_left", 4 },
                { "through", 5 },
                { "none", 5 },
                { "merge_to_right", 6 },
                { "slight_left", 7 },
                { "left", 8 },
                { "sharp_left", 9 },
                { "reverse", 10 },
        };

Ist jetzt von rechts nach links. Wir man natürlich sieht ist das nur für “rechtsverkehr” - Bei linksverkehr müsste reverse auf der anderen Seite sein :wink: Aber ich beschränke mich ja auf “Deutschland” d.h. das thema rechts/linksverkehr hab ich an mehreren stellen. (Kreisverkehr sollte nur ein sidewalk=right haben - left macht wenig Sinn - Aber eben nur bei Rechtsverkehr)

Flo

Nein, es gibt auch noch lanes:both_ways

Warum <8? Es gibt genügend Stellen mit mehr Spuren, z.B. Mautstellen

Nein. Sobald es Radspuren gibt gilt das nicht mehr.

Kommt mir komisch vor. Was ist wenn eine Spur weiterführt für einige Verkehrsteilnehmer (z.B. Busse) und andere sich einordnen müssen?

Ich habe keine Stelle wo das in Benutzung ist IIRC - Aber in der tat eine Stelle wo man das benutzen könnte. Guter Hinweis.

Ich habe da mal Deutschland als PBF durchgedreht und keine stelle gefunden wo mehr als lanes=8 ist was ich als richtig ansehen würde. Ist aber schon ein paar Jahre her. Mag sein das es da mittlerweile so irre dinge gibt. Ich denke für dem Regierungsgebäude in Myanmar gibt es 12 oder 20 lanes. Aber ansonsten!??

Die müssen dann aber ggfs als leeres element in den turn:lanes sein.

Hast du eine Stelle wo das ist?

Du kannst in die center lane von links oder rechts mergen. Aber du kannst nicht links von der merge_right lane ein “right” haben weil das andere Spuren kreuzen würde.

Flo

Interesant.

Wieder etwas dazugelernt.

:smiley:

ich denke das gibt es schon selten mal, hier muss man auch links fahren um rechts abzubiegen:

https://www.openstreetmap.org/way/23906604#map=19/41.85868/12.47126

Ich meinte jetzt 1 Autospur + 1 Radspur, das wäre dann lanes=1 aber turn:lanes=ab|xy
“lanes” ist immer maximal gleich groß wie xy:lanes, aber kann auch kleiner sein.

Spontan nicht. Aber der Fall dass eine Autospur endet und direkt in eine Busspur übergeht sollte sich finden lassen.

War mir jetzt auch unsicher, aber ich finde nur Beschreibungen, die immer von links nach rechts zählen, wie auch das Beispiel im Wiki. Ein kurzer Blick auf die Insel festigt diesen Eindruck.

Grüße skyper