Kreisel und Routen, Kreisel in DE:wiki

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.

Ein Dankeschön an Kreuzschnabel, der das Ergebnis in Bezug auf “richtige oder falsche Methode” wunderbar zusammengefasst hat: Beides ist möglich, beides ist richtig.

Bei der Diskussion sollten wir jetzt Aufwand und Nutzen und damit die Vorteile/Nachteile betrachten. Ich habe das in einer Tabelle zusammengetragen, weiß aber leider nicht, wie man das als Tabelle hier integriert, deshalb im folgenden als Fließtext :(. Untersucht sind verschieden Aspekte, mit folgenden Interpretationen:

Informationsgehalt: Der vermeintlich größere Informationsgehalt der gesplitteten Kreisel ist auch im ungesplitteten vorhanden, weil die zu einer Route zugehörigen Teile des ungesplitteten Kreisels eindeutig ermittelbar sind.
Nutzung: Nutzer, die auf einer detaillierten Darstellung des Verlaufs der Route innerhalb des Kreisels Wert legen, sind bei ungesplitteten Kreiseln darauf angewiesen, hierfür entweder ein Tool (Algorithmus, grafische Darstellung etc.) zu haben oder dies gedanklich selber zu machen.
Unabhängigkeit: Ungesplittet: Route und Kreisel sind völlig unabhängig voneinander. Änderungen an der Route können ohne Änderung am Kreisel durchgeführt werden, Änderungen am Kreisel ohne Änderung an der Route. Gesplittet: Große gegenseitige Abhängigkeit, z.B. bedeuten Strukturänderungen am Kreisel Strukturänderungen für alle Routen, eine neue Route bedeutet u.U. Strukturänderungen am Kreisel (und damit wieder aller Routen).
Erstellung: Ungesplittet: Es gibt genau einen Eintrag, ohne role. Gesplittet: Darstellung ist aufwändiger, sie erfordert fast immer mehr und detailliertere Einträge in der Route, sei es mehr ways, bei 2 Richtungs-Routen immer forward/backward role.
Wartbarkeit Kreisel alleine: Ungesplittet: Sehr einfach, man braucht nur die Tags am ganzen Kreisel verändern. Auch die Änderung von Zu-/Wegfahrten ist einfach. Gesplittet: Änderungen müssen an allen ways durchgeführt werden, dies ist fehleranfällig. Bei Änderung von Zu-/Wegfahrten ist u.U. die Struktur des Kreisels und damit alle Routen betroffen.
Wartbarkeit Route: Ungesplittet: Kein Wartungsaufwand, außer Kreisel rein/raus. Gesplittet: Wird eine Route durch einen Kreisel gelegt, muss der Kreisel u.U. weiter gesplittet werden (Seiteneffekt auf Kreisel). Damit alle anderen Routen betroffen. Viel Aufwand, sehr fehleranfällig (Seiteneffekt auf andere Routen).
Wartbarkeit übergreifend: Ungesplittet: Änderungen am Kreisel ohne Kenntnis der Routen möglich, ja generell ohne Kenntnis des abstrakten Routenkonzepts. Der Kreisel kann von Mappern geändert werden, die nichts von durchlaufenden Routen wissen. Selbst Zu-/Wegfahrten können ihren Eintrittsort in den Kreisel ändern (an einen anderen node gelegt werden), ohne dass die Route Schaden nimmt. Gesplittet: Die Wahrscheinlichkeit, dass eine Route in der Vergangenheit gestört wurde, ist sehr hoch. Wenn man diese dann wg. eines gesplitteten Kreisels korrigieren will, muss man u.U. erst mal vorsortieren, um überhaupt zu erkennen, wie die Korrektur betreffends des Kreisels durchzuführen ist.
Datenqualität: Ungesplittet: Große Simplizität, kein Verlust an Informationsgehalt. Gesplittet: Viel größere Fehleranfälligkeit, in der Konsequenz deutlich schlechtere Datenqualität im Bereich von Kreiseln/Routen. Es wird zusätzliche Komplexität in die DB gebracht, ohne einen höheren Informationsgehalt zu produzieren.

Wenn man das in eine Vorteile/Nachteile-Tabelle zusammenfaßt, dann ergibt sich folgendes Bild:

                                           Gesplittet            Ungesplittet

Informationsgehalt + +
Nutzung + o
Unabhängigkeit - +
Erstellung - +
Wartbarkeit Kreisel - +
Wartbarkeit Route – ++
Wartbarkeit übergreifend – ++
Datenqualität – ++

Die Vorteile des ungesplitteten Kreisels sind klar zu erkennen. Lediglich bei der Nutzung hat die gesplittete Variante die Nase vorn, aber auch da nur, wenn man nicht bereit ist, “den Rechner die Arbeit machen zu lassen”. Insbesondere die bessere Datenqualität sollte uns überzeugen, denn die ist doch das, was uns alle so stolz macht :sunglasses: :sunglasses: :sunglasses: .

Deshalb würde ich gerne ungesplittete Kreisel im Wiki als “preferred” definieren (gesplittete Kreisel bleiben explizit erlaubt, das würde zur Erklärung dazugehören). Gesplittete Kreisel sind erforderlich, sobald im Kreisel unterschiedliche Tags erforderlich sind, z.B. wg. Brücken etc… Mit diesem simplen statement machen wir es allen einfacher, die sich mit den Argumenten oben nicht auseinandersetzen wollen, sondern nur eine Empfehlung bekommen wollen, wie sie einen Kreisel mappen sollen. Vor allem aber erhöhen wir unsere Datenqualität …

Feedback ist ausdrücklich erwünscht, aber bitte nicht mehr zu “richtig oder falsch”, sondern nur noch, ob wir ungesplittete Kreisel als preferred definieren wollen. Denn das ist die Frage, die ich aufwerfen wollte.

Bicycle Tourer

Beim Kreisel kann der Rechner aus der Route eindeutig ermitteln, welcher Teil des Kreisels benutzt wird. Bei einem Wegstück, das “zu lang” ist, ist nicht klar, ob die Route hier einen “Abstecher” machen soll oder ob der “herausstehende” Teil weggelassen werden soll. Damit liegt beim herausstehenden Teil ein Informationsverlust vor, während beim Kreisel gesplittet wie ungesplittet derselbe Informationsgehalt gegeben ist.

Ich meine das jetzt wirklich nicht irgendwie böse, aber ich habe doch mittlerweile mehrmals erklärt, in welcher Denkweise es vollkommen logisch ist, Kreisel ungesplittet zu lassen. Wieso kommst du immer wieder mit „aber das ist doch falsch“?

Also nochmal:

Man kann den Kreisel als separate Straße betrachten, auf die man auffährt und die man später wieder verlässt. Also ähnlich wie eine Ringstraße um eine Stadt. Wenn man es so sieht, dann ist es nur logisch, diese Ringstraße so aufzuteilen, dass nur die durchfahrenen Teile in der Routenrelation sind. Da gebe ich dir vollkommen recht.

Man kann den Kreisel aber auch als Bauform einer Kreuzung und den Kreisel-Way als „erweiterten Kreuzungs-Node“ betrachten, was datenlogisch dadurch deutlich wird, dass dieser Way im Gegensatz zu normalen Straßen ein junction-Tag trägt. Wenn man es so sieht, dann ist es logisch, in jede darüber führende Route den gesamten Kreisel aufzunehmen, ohne ihn zu splitten, womit ausgedrückt wird: „es geht hier über den Kreisel“.

Dein Argument, dann braucht man ja gar nicht mehr aufzuteilen, sticht nicht, weil bei einer „normalen“ Abzweigung ein Router keine Chance hat, zu erkennen, wo die Route weitergeht (außer er schaut nach, unter Umständen kilometerweit, welcher der beiden Zweige tot endet). Bei einer Kreiselausfahrt muss er nur nachschauen, welcher der beiden Zweige junction=roundabout getaggt ist, und nimmt dann den anderen – denn da wird der Kreisel eindeutig wieder verlassen.

Außerdem entstehen – im Unterschied zum Nicht-Aufsplitten normaler highways – keine toten Enden, wenn Kreisel vollständig in Routenrelationen liegen, sondern es gibt einen weiterführenden Zweig und eine Rekursion. Wie gesagt, das Tagging macht an der Verzweigung schon klar, welches von beiden was ist.

Groschen jetzt gefallen? Es funktioniert technisch wie logisch einwandfrei.

–ks

PS: Sehe gerade in der Vorschau, Bicycle Tourer hat das um 06:56 auch schon geschrieben. Ich schicks trotzdem ab, dann hast du es zweimal :slight_smile:

Meine Zustimmung hast Du.

Grüße

Dafür.

–ks

Im Prinzip bin ich dafür (KISS Prinzip), aber bitte nicht nur die DE Version ändern.

Für eine internationale Änderung, muss da in einem größeren Forum die Zustimmung eingeholt werden bevor man das ändert? Oder kann man das einfach dort reinschreiben, wenn man es in DE reingeschrieben hat?

Danke und VG

Bicycle Tourer

Für eine kleine Änderung reicht es eventuell auf der Diskussionsseite von der Wiki-Seite die Meinung einzuholen.
Führend ist in der Regel die englische Version.

Meines Erachtens eine gute Zusammenfassung und Lösung von Bicycle Tourer.

Ja bitte. Und fett markieren. Und auch gerne schreiben warum, nämlich dass Router kein splitting brauchen und deswegen ein Kreisel wegen Relations nicht gesplittet werden muss.

Nachdem ich selbst einen Kreisel angelegt und wegen 2 Routen kompliziert gesplittet habe, da ich dachte Router brauchen das, und nun weiss, dass es nicht notwendig ist, halte ich die Lösung ihn als ein Element (“quasi-node”) einzutragen für eleganter und sinnvoller.

EDIT: Achj ja. Wie chriss66 geschrieben hat, vorher einen talk Eintrag machen.

Entscheidend ist die englische Version, die lokalisierten Versionen (DE etc.) sind Übersetzungen (sollten sie sein). Die tags sollten alle überall dasselbe bedeuten, zumindest hinsichtlich der dokumentierten Bedeutung im EN-Wiki.