DE:JOSM/Plugins/JunctionChecking

From OpenStreetMap Wiki
Jump to navigation Jump to search
Junctionchecking plugin

Einleitung

Das JunctionChecker Plugin dient zur Suche und Überprüfung von Kreuzungen im OSM-Straßennetz. Dabei arbeitet das Plugin aber nicht mit den originalen OSM-Daten, sondern wandelt diese erst in einen Channel-Digraphen um (siehe Kapitel Channel-Digraphen). Diese Channel-Digraph-Theorie wird von der SeresII-Arbeitsgruppe am Institut für Geoinformatik der Universität Münster entwickelt. Bei Kreuzungen handelt es sich um eine Teilmenge von Channels, die bestimmte Kriterien erfüllen müssen (siehe Kapitel Kreuzungen in Channel-Digraphen)

Features

Das entwickelte Plugin unterstützt folgende Features:

  • Umwandlung des OSM-Graphen in einen Channel-Digraphen
  • Anzeige des Channel-Digraphen
  • Überprüfung einer Teilmenge von Channels innerhalb eines erzeugten Channel-Digraphen auf die Kreuzungskriterien
  • Suche nach Kreuzungen in einer Teilmenge von Channels eines erzeugten Channel-Digraphen
  • Berücksichtigung bestehender Abbiegeverbote, welche in den OSM-Daten als Abbiege-Relation vorhanden sind

Übersicht über Channel-Digraphen / Kreuzungen in Channel-Digraphen

Channel-Digraphen

Kreuzungen in Channel-Digraphen

Eine n-Wege-Kreuzung ist ein induzierter Teilgraph von Channels mit den dazugehörenden LeadsTo-Relationen. Der Wert von n bezeichnet den Grad der Kreuzung, bei n=3 ist beispielsweise eine Kreuzung gemeint, die 3 Ein- und 3 Ausgänge besitzt. Eine Kreuzung muß 4 Kritierien erfüllen, um eine Kreuzung in einem Channel-Digraphen darzustellen:

  1. total reachability: Von jedem der n Eingänge gibt es (n-1) Abbiegemöglichkeiten zu (n-1) Ausgängen
  2. discreteness of navigational action Alle Ein- und Ausgänge der Kreuzung sind gates: Man kann über jeden Eingang die kreuzung betreten, aber nicht verlassen. Analog verhält es sich zu den Ausgängen.
  3. minimality IDie Kreuzung enthält keine kleinere n-Wege-Kreuzung
  4. minimality II Die Ein- und Ausgänge haben einen minimalen Knotengrad von 2, d.h. sie haben mehr als einen intern Vorgänger bzw. Nachfolger

Installation

Die Installation erfolgt wie bei anderen Plugins über das Plugin-Menü im Einstellungsmenü von JOSM oder durch manuelle Installation der jar-Datei

Anleitung zur Benutzung des Plugins

Nach der erfolgreichen Installation des Plugins kann es durch Klick auf den JunctionChecker-Button auf der linken Buttonleiste von JOSM aktiviert werden. Dabei öffnet sich ein weiteres Dialogfeld im rechten Bereich. Wenn noch keine Ebenen in JOSM geöffnet sind, sind alle Optionen und Buttons dieses Dialogfeldes ausgegraut.

Erzeugung eines Channel-Digraphen

Um einen Channel-Digraph zu erzeugen, muß zuerst eine OSM-Datenebene geöffnet werden. Dies geschieht auf dem üblichen Weg, entweder durch Öffnen einer .osm-Datei oder durch Herunterladen von OSM-Daten vom OSM-Server. Ist eine OSM-Datenebene geladen und als aktive Ebene ausgewählt, kann ein Channel-Digraph aus dieser erzeugt werden. Dabei kann folgende Option gewählt werden:

  • Berechnung der starken Zusammenhangskomponenten: nach Abschluß der Channel-Digraph-Erzeugung wird der Graph auf seine starken Zusammenhangskomponenten untersucht. Alle Channels, die dieses Kriterien nicht erfüllen, werden in der Digraph-Ebene violett dargestellt. Mit diesen Channels sollten keine Kreuzungsüberprüfungen durchgeführt werden, da es zu falschen Ergebnissen führen kann.

Überprüfung von Channels auf das Vorhandensein einer Kreuzung

Ist ein Channel-Digraph erzeugt worden, so können in dieser Ebene Channels markiert werden und diese markierten Channels können auf die Kreuzungskriterien getestet werden. Dazu muß ebenfalls der Grad der Kreuzung im Dialogfeld des Plugins ausgewählt werden. Der kleinste mögliche Grad ist 3 (Standardwert), nach oben gibt es keine theoretische Grenze, aber praktisch sollte man nicht über Grad 5 hinausgehen, da andernfalls die Rechenzeiten sehr lang werden. Es gibt 3 mögliche Ergebnisse:

  1. die markierten Channels repräsentieren eine Kreuzung. In diesem Fall wird, wenn die Option gewählt wurde, eine OSM-Relation in den original-OSM-Daten erzeugt. Die gefundene Kreuzung wird weiß dargestellt.
  2. die ausgewählten Channels erfüllen eine der drei einfachen Kreuzungskriterien nicht. Über ein Dialogfenster wird der Benutzer informiert, welche Regel genau verletzt wurde
  3. die ausgewählten Kreuzungen erfüllen die drei einfachen Kreuzungskriterien, aber nicht die Minimality-I-Bedingung: die markierten Channels enthalten mind. eine kleinere Kreuzung. Die Überprüfung auf Minimality-I bricht ab, sobald eine Teilmenge gefunden wurde, die die ersten drei Kreuzungskriterien erfüllt. Diese Teilmenge wird weiß markiert. Hierbei handelt es sich aber nur um einen Kreuzungskandidaten, der wiederum getestet werden muß: Diese Teilmenge wurde bisher nur auf die drei einfachen Kriterien getestet, Minimality-I muß aber ebenfalls noch überprüft werden, um sicherzugehen, dass diese Teilmenge wiederum keine noch kleinere Kreuzung enthält. Dazu müssen die weiß markierten Channels markiert werden und die Überprüfung muß erneut durch das Drücken des "Check"-Button gestartet werden.

Suche nach Kreuzungen innerhalb einer Teilmenge von Channels

Die Suche verläuft ähnlich wie die Überprüfung. Auch hier muß der Grad der zu suchenden Kreuzungen angegeben werden, praktischerweise sollte man auch hier keinen Grad größer 5 auswählen. Auch bei der Suche müssen Channels markiert werden. Ist dies geschehen, startet man die Suche durch Drücken des "Search"-Buttons. Nach durchlaufener Suche erhält der Benutzer eine Meldung über die Anzahl der gefundenen Kreuzungen.

Erzeugung von OSM-Kreuzungs-Relationen

Werden bei der Überprüfung einer Teilmenge oder bei der Suche Kreuzungen gefunden, können OSM-Relationen des Typs "junction" in der Original-OSM-Datenebene erzeugt werden. Zum An/Abschalten dieser Funktion dient die Schaltfläche "produce OSM-relation: junction". Standardmäßig ist diese Funktion aktiviert. Diese Relation besteht aus den Mitgliedern der Kreuzung, sowie dem Kreuzungsgrad n. In der Original-OSM-Datenebene stehen die Channels nicht mehr zu Verfügung, so dass die OSM-Ways in die Relation übernommen werden, aus welchen die Channels erzeugt wurden. Hierbei findet aber ein Informationsverlust statt, da aus einem OSM-Way grundsätzlich mehr als ein Channel erzeugt wurde. Aus dieser Tatsache können Kreuzungs-Relationen resultieren, die im OSM-Graph betrachtet aus der gleichen Menge OSM-Ways bestehen.

Beispiel für die Untersuchung einer Kreuzung

ursprüngliche Channelauswahl

Zum besseren Verständnis wird eine Beispieluntersuchung an einer Kreuzung in der Stadt Münster durchgeführt. Der Channel-Digraph wurde für einen hinreichend großen Ausschnitt um die Kreuzung erzeugt, um sicher zu stellen, einen streng verbundenen Channel-Digraphen am Bereich der Kreuzung zu haben. Der Grad der Kreuzung Koldering/Weseler Straße ist offensichtlich n=3, man kann aus 3 Richtungen auf die Kreuzungen zufahren, und es existieren ebenso 3 Möglichkeiten, die Kreuzung wieder zu verlassen. Das linke Bild zeigt die Auswahl aller markierten Channels, mit der die Überprüfung durch Drücken des "Check"-Buttons gestartet wird.


ursprüngliche Channelauswahl

Das Bild zeigt das Ergebnis der Überprüfung, es wurde ein kleinerer Kreuzungskandidat gefunden. Hierbei kann es sich um eine Kreuzung handeln, getestet wurden aber bisher 3 von 4 Kreuzungskriterien, die alle erfüllt sind: total reachability, discreteness of navigational action und minimality II. Aber die markierte Teilmenge kann wiederum eine kleinere Kreuzung enthalten. Um dies zu überprüfen, muß die Teilmenge ebenfalls überprüft werden. Dies geschieht durch Auswahl der bisher weiß markierten Channels und starten einer erneuten Überprüfung.


ursprüngliche Channelauswahl

Das Ergebnis der erneuten Überprüfung ist eine kleinere Teilmenge des Kreuzungskandidaten. Auch diese Menge muß erneut einer Prüfung unterzogen werden, aber in dem Fall wird keine kleinere Kreuzung gefunden, es handelt sich hierbei also um eine echte Kreuzung.

Aber wie kommt es zu diesem Ergebnis, die ursprüngliche Auswahl der Channels schaut intuitiv richtig aus, und auch besser als die gefundene? Bei dieser Kreuzung existiert nur eine Abbiegevorschrift, die in den OMS-Daten als Relation eingetragen ist und vom Plugin erkannt wird. Dabei handelt es sich um die in den beiden letzten Bildern eingetragene: Durch diese Abbiegevorschrift muß die Rechtsabbiegespur von Eingang E1 zur Kreuzung gehören, andernfalls gäbe es keine Möglichkeit von E1 die Kreuzung über den Ausgang A2 wieder zu verlassen. Würden die beiden fehlenden Abbiegevorschriften (eingatragen im 1. Bild) ebenfalls in den Daten vorhanden sein, würde die ursprüngliche Channel-Auswahl eine Kreuzung ergeben, da es nicht möglich wäre, innerhalb dieser Menge eine kleinere Kreuzung zu finden.


ToDo

  • Auswahl der Channels im Layer: Auch Channels auswählen, die im vom Benutzer aufgespanntem Rechteck liegen (bisher muß Start- oder Endpunkt des Channels in diesem Rechteck liegen)

Bugs

  • kommt es bei der Berechnung der starken Zusammenhangskomponenten zu einem Absturz von JOSM, kann das Starten von JOSM mit folgendem (zusätzlichen) Parameter helfen: java -jar -Xss30M josm-latest.jar
  • gefundene Kreuzungen werden nicht sofort weiß dargestellt, sondern erst nachdem die Ebene neu gezeichnet werden muß

weiterführende Links

Kontakt

Den Author des Plugins kontaktieren: mail