Impressum   

Hintergrund

Straßensituation Am Bonner Stammtisch hatten wir uns Ende 2010 über Routingprobleme bei Straßen unterhalten, die von einem Ausbau mit Mittelstreifen zu einer "normalen" zweispurigen Straße übergehen. Routing-Services wie z.B. OpenRouteService.org würden bei solchen Situation hemmungslos ein Wenden am gemeinsamen Knoten der drei Wege (hier blau markiert) empfehlen. Als prominentes Beispiel mußte die Einfahrt des Godesberger Stadttunnels und die Godesberger Allee herhalten.

Natürlich entbrannte die Frage, ob diese Stellen mit einer Abbiegeverbotsrelation getaggt werden müssen oder der Router diese Situation von allein erkennen muß. Für mich stand mehr die Frage im Raum, ob man überhaupt in den Kartendaten entsprechende Hinweise auf kritische Situationen erkennen kann.

Vorgehen

Ich habe seit längerem ein PHP-Script, dass eine osm-Datei in eine MySQL-Datenbank mit den Tabellen node,relation, way (benannt nach den OSM-Objekten), deren Beziehungen zu einander (relation_way, way_node) und als wichtigstes Analyseobjekt die Beschreibungen der Objekte in der Tabelle tag (englisch Beschriebung und nicht die deutsche Zeiteinheit).

Nach dem Kontrollieren der Eintragsungsweise von Einbahnstraßen (siehe entsprechenden Beitrag), habe ich mir eine Tabelle tmp_oneway mit sich in einem Punkt treffende Einbahnstraßen erstellen. Dabei war es egal, ob die Straßen dort endeten oder begannen, nur sich kreuzende Einbahnstraßen müssen nicht berücksichtigt werden. Anschließend wurden alle Wege, die nicht mit dem Schlüssel highway bezeichnet waren, gelöscht (hauptsächlich Wasserwege und Eisenbahnstrecken).

Anschließend wurde die eigentliche Grundtabelle tmp_knoten erstellt, in dem die Menge der Punkte mit sich treffenden Einbahnstraßen auf die Kreuzung mit einem anderen Weg reduziert wurde. Diese Wege mußten nicht zwingend eine Einbahnstraße sein, aber die Wege mussten mit dem Schlüssel highway gekennzeichnet sein. Im Datenbestand vom 10.01.2011 reduzierte sich die Menge von 231.899 auf 89.104 Punkte mit dieser Beschaffenheit.

Formel Schnittwinkel Problem Schnittwinkel Danach wurde der Winkel ε zwischen den beiden Einbahnstraßen bestimmt. Dazu musste auf die Koordinaten der Punkte der Einbahnstraßen und die mathematische Formel (Quelle der Grafik: Wikipedia) zurückgegriffen werden. Leider wird mit dieser Formel nur den kleinste Winkel zwischen zwei Geraden und nicht zwischen den Vektoren bestimmt. Die Formel bestimmt in beiden Fällen einen Winkel von 5° Grad, jedoch nur die rechte Situation ist die gesuchte, kritische Situation. Um die ungewünschten Punkte auszusortieren, wurde der Abstand zwischen den "zweiten" Punkten der Einbahnstraßen und den Längen der Einbahnstraßen bestimmt. Im linken Fall ist dieses Verhältnis beinahe 1 im rechten Fall nahezu 0 (es gibt Fälle, wo der Abstand exakt 0 ist, aber hier liegt ein weiterer Fehler von teilweise übereinanderliegenden Wegen vor).

Ergebnis-Liste

Die Tabelle der potentiellen Wegkreuzungen wurden auf einen Winkel zwischen den Einbahnstraßen von weniger als 40° Grad und einem Längenverhältnis kleiner 0.98 reduziert. Zur Aufbereitung der übrig gebliebenden 18.076 Wegkreuzungen wurde eine Liste von Städten (Knoten, die mit dem Tag "place=city" gekennzeichnet sind) nach dem Abstand (also nicht dem Stadtgebiet) zugeordnet. Auf speziellen Wunsch wurde Bonn dabei in die Stadteile Graurheindorf, Medinghoven, Pennenfeld und Tannenbusch aufgeteilt.

Update

Ein Fehler bei der Verlinkung von Relationen wurde beseitigt. In den Detaillisten sind jetzt die Aufrufe für die Editoren JOSM und Potlach eingebaut.

Teilweise sind auch highway=pedestrian vorhanden, der Straßentyp und der Wegname werden als erste Entscheidungshilfe jetzt mit eingeblendet. Die Abfragemöglichkeit wurde ausgebaut, da die Daten veraltet sind (vom 25.12.2011).

DatumKnotenRestriktionen
10.01.201118.076365
22.01.201118.160367
11.02.201118.372430
18.02.201118.433433
24.05.201119.496603
09.09.201120.7921.178
25.12.201121.8231.679

Bei Fragen, Anregungen oder Verbesserungsvorschlägen können Sie mich gerne über E-Mail , OSM intern oder am Bonner Stammtisch kontaktieren.