Kreisel und Routen, Kreisel in DE:wiki

Hallo zusammen,

aus dem Feedback zum Thema “Aufräumen von Routen” (https://forum.openstreetmap.org/viewtopic.php?id=63556, danke für die zahlreichen Rückmeldungen dort) möchte ich das Detailthema “Kreisel” extrahieren und zur Diskussion stellen. Letztendlich geht es auch um eine Änderung des Wiki, aber ich bin nicht mit den Regularien vertraut wie man so etwas zur Entscheidung bringt und wann man das ändern darf (Hinweise hierzu sind herzlich willkommen). Also erst mal eine Diskussion hier.

Die einfachste Form eines Kreisels ist, diesen mit einem einzigen way zu mappen (StartNode=EndeNode). Darüber gehende Routen haben dann diesen Gesamtkreisel als (einen einzigen) Eintrag. Das ist auch vielfach geübte Praxis.

Man kann den Kreisel aber auch in mehrere Ways aufteilen und für jede Route die dann konkret benötigten Teilwege nutzen. Für die Pflege der Routen ist das ziemlich aufwändig (erst recht wenn forward/backward-Unterschiede entstehen). Insbesondere wenn irgendetwas am Kreisel geändert wird, sehen Routen in der Konsequenz entsprechend “chaotisch” aus. Technisch wird das Splitten in mehrere Wege unvermeidbar, wenn einzelne ways ein anderes Tagging benötigen als der Rest des Kreisels. Anwendungsfälle hierfür (auch von anderen im oben genannten Thema schon aufgeführt) sind z.B. unterschiedliche Anzahl lanes, Brücken über einen Bach etc. Solange aber alle ways gleich getagged sind, gibt es keinen Grund für ein Splitten. Und die Route braucht nicht die Spezialangabe, welcher Teil des Kreisels durchfahren wird, es reicht der ganze Kreisel.

Im Wiki (https://wiki.openstreetmap.org/wiki/DE:Tag:junction%3Droundabout) habe ich keine konkrete Aussage gefunden, was der richtige/beste Weg für das Mapping des Kreisels selbst ist, und in der DB findet man beides.

Es ändert aber nichts, für Routen sind aufgetrennte Kreisel schwierig. Deshalb sollte die bevorzugte Art und Weise zum Mapping eines Kreisels “der eine geschlossene Weg” sein, mit der oben beschriebenen Ausnahme, dass Teile des Kreisels ein anderes Tagging erfordern als die anderen. Und das sollte auch so in den Wiki kommen.

Andere Meinungen?

Bicycle-Tourer

P.S.: Ich habe diesen Topic bewusst von “Hin-/Wegführende Fahrbahnen bei Kreiseln …” (https://forum.openstreetmap.org/viewtopic.php?id=63570) getrennt, da die dort anstehende Diskussion unabhängig von dieser ist.

Leute, die Routen zum Auswerten gerne in Striche verwandeln (weil sie eine gpx-Datei daraus erzeugen wollen z.B. oder ein Höhenprofil), sind da vermutlich anderer Meinung. Das geht am einfachsten, wenn alle Wegstücke, die Teil einer Route sind auch in der Relation sind und Wegstücke, die nicht dazugehören eben nicht. Deshalb trennen wir ja auch andere Straßen dort auf, wo die Relationenmitgliedschaft sich ändert.

Für den Fahrer ist es vermutlich egal, der findet schon irgendwann den richtigen Ausgang aus dem Kreisverkehr, ein Programm muss mühsam den Kreisverkehr zerstückeln und dann die passenden Start- und Endpunkte an Ein- und Ausfahrt suchen. Man kann natürlich argumentieren, dass die das machen sollen statt der Mapper, müssen sie halt alle ein bisschen Router spielen und Kreuzungspunkte suchen statt einfach nur passende Anfangspunkte und Endpunkte von Strichen zusammenzuklauben.

Grüße
Max

Danke für das Argument, an so etwas hatte ich gar nicht gedacht.

Es stimmt, für diese Leute wird es ein wenig schwieriger. Aber das Problem Höhenprofil kann man bei einem Kreisel hinreichend genau lösen, indem man einfach zwischen dem Eingangsknoten und dem Ausgangsknoten interpoliert. Habe noch nie von einem Kreisel gehört, der auch nur 5m Höhenunterschied ausweist :). Umgedreht: Wenn die Route erst mal unterbrochen ist oder ein Dead End hat wg. eines Mapping Fehlers an einem Kreisel, dann haben diese Leute dasselbe Problem, nur auch mit Rechner viel schwerer lösbar.

Der Kreisel ist so definiert, dass man ihn an einem beliebigen Punkt verlassen darf. Ein way darf nur am Ende verlassen werden. Sollte die Route an einem Dead End gar einen Abstecher machen? Kann bei einem Kreisel nicht sein, damit kann der Rechner das eindeutig erledigen! Aber für den Weg ist das vielfach nur noch von einem Mapper einzuschätzen, nicht mehr von einem Rechner ausrechenbar.

Wie auch Du schreibst, ist es eine Prioritätsentscheidung zwischen den zu knappen Mappern (die etwas geben) und den Auswertern (die etwas bekommen), die aber ihren Rechner nicht ein bisschen mehr belasten wollen (bösartig formuliert). Diese Priorität wäre für mich klar: Rechner gibt es genug, Mapper zu wenig. Ich würde die Mapper nicht mit dieser zusätzlichen Komplexität belasten, sie haben genug damit zu tun, das wahre local knowledge in OSM reinzubringen.

An das Forum: Wie sehen das andere?

VG

Bicycle Tourer

m.E. sollte man in die Route nur die Teile aufnehmen, die auch dazugehören, daher müssen roundabouts normalerweise gesplittet werden für die Aufnahme in eine Route

Das stimmt wenn man eine Route nur in einer Richtung benötigt. Beim Rückweg wird der Kreisel dann komplettiert.

Das ist überhaupt nicht notwendig, Der Abschhnitt des Kreisels, über den die Route konkret führt, ist durch die implizite Einbahneigensschaft eines Kreisverkehrs festgelegt. Das muss muss man als Mapper nicht vorkauen.

Und wie ist dann beim Aufsplitten mit dem Taggen der einzelnen Abschnitte, das sind nach Definition ja dann keine Kreisverkehre (geschlossener Kreis) mehr, sondern ganz gewöhnliche Einbahnstraßen?

Nein. Solange an allen Abschnitten junction=roundabout steht, bilden sie routinglogisch einen einzigen Kreisel. Keine mir bekannte Software hat damit ein Problem.

–ks

Finde ich auch. Es ist so verbreitet, Kreisverkehre nicht für Routen aufzuteilen, dass alle verarbeitenden Programme das können müssen.

Für aufgeteilte Kreisverkehre gibt es keine besonderen Regeln in Routen. Also müssen genau die passenden Teile in die Route. Das bedeutet insbesondere, dass man beim ersten Aufteilen eines Kreisverkehrs nicht nur die gerade interessierende Route ändern muss … man muss sämtliche Routen laden, prüfen und anpassen.

Wie ich in https://forum.openstreetmap.org/viewtopic.php?pid=713298#p713298 schon schrob und hier gern nochmal wiederhole: Nein, ein Muss ist das nicht. Es kommt drauf an, ob man einen Kreisel als separate Straße betrachtet oder als Bauform einer Kreuzung. Beides ist technisch korrekt, und im Interesse des KISS-Prinzips bin ich dafür, Kreisel im 2felsfall nicht zu teilen.

Auch das Wiki sagt am Beispiel von Busrouten eindeutig, dass beide Methoden – ganzer Kreisel rein oder Kreisel aufteilen und nur die befahrenen Abschnitte rein – richtig und üblich sind.

–ks

Der Kreisel muss zerstückelt werden damit die einzelnen Weg-Teile richtig, und auch in der richtigen Reihenfolge in die Relationen aufgenommen werden können.

  • Einen simplen Kreisel als node zu Betrachten finde ich eleganter und übersichtlicher und wartungsärmer.

  • Ein nicht gesplitteter Kreisel behält eine lineare Reihenfolge der Relationsmitglieder. Keine Parallelverzweigung

  • Macht weniger Arbeit beim anlegen.

Habe gerade so einen Kreisel umgebaut, den ich anfangs zu komplex angelegt habe (2 Routen gingen durch).

Ich bin auch kein Freund von aufsplittern… auch die “Last” der Relationen die an den Way, Nodes hängt finde ich auch nicht toll, gerade die Routen sind eine ganz schöne Last geworden :frowning: Pflegeaufwand enorm… vielleicht sollte man irgendwo mal dahingehend… weil es immer schlimmer wird, Routen-Graph/shape als GPX-Dateien ablegen und diesen in der Karte anzeigen. GPX-Dateien auto/manuell/wie_auch_immer erzeugen und Aktualisieren…

Aber mei… ich kann mir ja heute schon mit OSMand mit einer GPX-Datei Routen lassen:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1">
<metadata><copyright author="OpenStreetMap contributors"/></metadata>
  <wpt lat="48.157831" lon="11.995417"> <name>1</name></wpt>
  <wpt lat="48.157723" lon="11.992124"> <name>2</name></wpt>
  <wpt lat="48.156085" lon="11.977313"> <name>3</name></wpt>
  <wpt lat="48.158309" lon="11.956263"> <name>4</name></wpt>
  <wpt lat="48.162333" lon="11.94525"> <name>5</name></wpt>
  <wpt lat="48.167103" lon="11.933307"> <name>6</name></wpt>
  <wpt lat="48.178789" lon="11.881911"> <name>7</name></wpt>
  <wpt lat="48.186006" lon="11.869374"> <name>8</name></wpt>
  <wpt lat="48.191041" lon="11.868084"> <name>9</name></wpt>
  <wpt lat="48.192742" lon="11.86169"> <name>10</name></wpt>
  <rte>
   <rtept lat="48.157831" lon="11.995417"></rtept>
   <rtept lat="48.157723" lon="11.992124"></rtept>
   <rtept lat="48.156085" lon="11.977313"></rtept>
   <rtept lat="48.158309" lon="11.956263"></rtept>
   <rtept lat="48.162333" lon="11.94525"></rtept>
   <rtept lat="48.167103" lon="11.933307"></rtept>
   <rtept lat="48.178789" lon="11.881911"></rtept>
   <rtept lat="48.186006" lon="11.869374"></rtept>
   <rtept lat="48.191041" lon="11.868084"></rtept>
   <rtept lat="48.192742" lon="11.86169"></rtept>
  </rte>
</gpx>

https://maps.openrouteservice.org/directions?n1=48.174424&n2=11.928551&n3=13&a=48.157831,11.995417,48.157723,11.992124,48.156085,11.977313,48.158309,11.956263,48.162333,11.94525,48.167103,11.933307,48.178789,11.881911,48.186006,11.869374,48.191041,11.868084,48.192742,11.86169&b=4c&c=0&d=100&k1=de&k2=km

Über Punkteliste… wird route berechnet… easy… bei openrouteservice.org hab ich Höhenprofil, kann mir die berechnete Route runterladen als GPX usw.

Eine GPX-Datei aus einer OSM-Relation zu machen… k.A. hab ich noch nie gemacht… wie, wo geht das?

Warum muss? Erklär uns das bitte.

Ein Beispiel ist nur ein Beispiel und sagt noch nichts über richtig und falsch aus. Im Wiki zum Mappen von Kreiseln ist eindeutig von gesschlossen ways die Rede. Tags beschreiben das Objekt, an dem sie hängen, bei einem gesplitteten Kreisverkehr also die einzelnen Abschnitte. Und die sind für sich eindeutig kein Kreisverkehr.

Kann mir nicht wirklich vorstellen wie das überhaupt gehen soll… Als Node. OK, logisch geht das natürlich aber dann haben wir keinen Kreisel mehr in der Karte wenn nicht zufällig der Renderer das “malen” von einem Kreisel in dem Fall unterstützt. Wie dem auch sein… Schick mir mal einen Link. Das möchte ich mir mal gerne anschauen.

Sorry, ich denke ich habe meine Aussage falsch ausgedrückt. Ich meinte, dass man den Kreisel als ein einzelnes Element (geschlossener way) in der Relation betrachten soll und nicht als echter node. Im Kontrast zu einem komplexen Netz an parallelen ways.

Im Wiki steht: Kennzeichne den/die OSM-Weg(e) des Kreisverkehrs mit junction=roundabout (in der deutschen Seite; in der englischen steht es sinngleich unter „How to map“). Ein Kreisel kann demnach in OSM sowohl ein einziger geschlossener Weg sein als auch ein (natürlich geschlossener) Ring aus mehreren verbundenen Wegen.

–ks

Ich fasse mal zusammen:

Ein Kreisel kann in OSM a) als ein einziger geschlossener Way abgebildet werden (junction=roundabout getaggt) oder b) als ein geschlossener Ring von miteinander verbundenen Einzel-Ways (von denen jeder einzelne junction=roundabout getaggt ist). Das steht eindeutig auf den Wikiseiten zu Key:junction=roundabout. Beides ist möglich, jedes hat seine Vor- und Nachteile.

Beim Anlegen einer Routenrelation kann ein teilweise durchfahrener Kreisel c) als Ganzes in die Relation aufgenommen werden, ohne einen technischen Fehler zu erzeugen. Dabei wird der Kreisel als Kreuzung betrachtet, nicht als Aufspaltung der Route. Der Kreisel kann aber auch d) in verbundene Ways aufgeteilt werden, um nur die durchfahrenen Abschnitte in die Relation aufzunehmen. Das steht in Wiki unter https://wiki.openstreetmap.org/wiki/Relation:route#Bus_routes_and_roundabouts. Auch hier: Beides ist möglich, jedes hat seine Vor- und Nachteile.

Über die Vor- und Nachteile lässt sich diskutieren. Aber keine der genannten Mappingmethoden ist per se „falsch“. Wer Andersdenkenden das unterstellt, hat unrecht (er/sie bleibt zumindest den Nachweis schuldig).

–ks

Es kann sein, dass es nicht falsch ist, wenn man alle Straßensegmente des Kreisverkehrs in die route aufnimmt, das sollte aber nur die simplen Fälle betreffen, wo man für Hin- und Rückweg dieselbe Relation hat. Ansonsten würde ich das eher als „falsch“ sehen, weil wir bei Routen in Segmenten denken (von node zu node) und nicht in Elementen (ways), daher werden die ways nach Erfordernis gesplittet. Dass die Auswerter in einfachen Situationen diesen „Fehler“ trotzdem lösen können heißt nicht, dass es auch formal richtig ist, könnte aber bedeuten dass man es so machen kann ohne dass es Probleme gäbe.

Es geht um Kreisel, die nicht segmentiert sind, also nur aus einem einzigen geschlossenen Way bestehen. Bei denen ist es kein Fehler, diesen Way komplett in die Route aufzunehmen, statt ihn zu segmentieren.

–ks

wieso kann man hier zuviel in die Route stecken? Mit dem Argument bräuchte man ja überhaupt keine highways mehr splitten für Routen relationen, außer in Ausnahmefällen. Einfach ein größeres Stück highway in die Route packen, was zuviel ist können die routen-Auswerter erkennen, und die ways bleiben schön lang.