Kreisel und Routen, Kreisel in DE:wiki

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.