User:JochenB/split nodes

From OpenStreetMap Wiki
Jump to navigation Jump to search

Folgend mein Textvorschlag für das Wiki betreffs Split-Node in Knotenpunktnetzwerken.

Knotenpunkte mit mehren Verknüpfungsknoten (Split-Nodes)

An einen Knotenpunkt treffen mehrere Verbindungen aufeinander. Die Relationen der Verbindungen werden so geführt, dass man lückenlos von jeder ankommenden Verbindung auf jede abgehende Verbindung wechseln kann.

Vor allen an größeren Kreuzungen kann das schwierig werden. Dort treffen Verbindungen mitunter in verschiedenen Knoten aufeinander. Der Knotenpunkt teilt sich auf mehrere "Split-Nodes" auf. Ursache ist häufig, dass Verbindungen je nach Fahrrichtung auf anderen Linien verlaufen (abgesetzte Radwege an jeder Seite der Straße).

Die Aufgabe ist, die Relationen trotzdem in allen möglichen Richtungen lückenlos zu verbinden. Dabei sollen Relationen vermieden werden, die Start und Ziel im gleichen Knoten haben (z. B. Relation "18-18" innerhalb des Knotenpunkts 18).

Folgend eine Schritt-für Schritt-Anleitung dafür. Dafür sind folgende Begriffe zu unterscheiden:

  • OSM-Node - der Knoten im OSM-Graph
  • Knotenpunkt - der nummerierte Knotenpunkt im Knotenpunktnetzwerk ("Radeln nach Zahlen")
  • Split-Nodes - OSM-Nodes, auf die sich ein Knotenpunkt aufteilt
  • Relation - route-Relation der Verbindung zweier Knotenpunkte. Die Relationen enthalten die Wege beider Fahrrichtungen. Die Fahrrichtungen werden hier in getrennten Schritten betrachtet:
    • zulaufend - Richtung von einem benachbarten Knotenpunkt
    • abgehend - Richtung zu einem benachbarten Knotenpunkt
  • Fahrweg - Wege einer Fahrrichtung

Der Knotenpunkt wird auf mehrere OSM-Nodes aufgeteilt, den "Split-Nodes". Die Split Nodes werden an jede Relation angebunden. Folgende Schritte werden dafür durchgeführt:

Schritt Beispiel 1: Knotenpunkt Nr. 2

mit 3 Verbindungen zu Nachbarknoten

Beispiel 2: Knotenpunkt Nr. 2

mit 4 Verbindungen zu Nachbarknoten

Nacheinander jede Relation betrachten

Es wird am Knotenpunkt nacheinander jede Relation betrachtet:

Im Beispiel 1:

  1. Verbindung vom / zum Nachbarknoten 1 (Relation 1-2)
  2. Verbindung von / zum Nachbarknoten 3 (Relation 2-3)
  3. Verbindung vom / zum Nachbarknoten 4 (Relation 2-4)

Im Beispiel 2:

  1. Verbindung vom / zum Nachbarknoten 1 (Relation 1-2)
  2. Verbindung vom / zum Nachbarknoten 3 (Relation 2-3)
  3. Verbindung vom / zum Nachbarknoten 4 (Relation 2-4)
  4. Verbindung vom / zum Nachbarknoten 5 (Relation 2-5)

Für jede dieser Relation werden die folgende drei Schritte durchgeführt:

Node networks-split nodes-suare example-step 0.png

Node networks-split nodes-rectangle example-step 0.png

1. Schritt: Split-Node markieren

Es wird der zulaufende Fahrweg betrachtet. Der Split-Node ist der erste OSM-Node, an dem der Fahrweg auf einen Fahrweg von/ zu einem anderen Knotenpunkt trifft.

Jeder Split-Node erhält die Nummer des Knotenpunkts mittels rcn_ref=*.

In den Beispielen:

  • A, B, C sind die Split-Nodes

Im Beispiel 2:

  • der Split-Node A ist Endpunkt von zwei zulaufenden Fahrwegen vom Knotenpunkt 3 und 4
Node networks-split nodes-suare example-step 1.png Node networks-split nodes-rectangle example-step 1.png
2. Schritt: Zulaufenden Fahrweg in die Relation aufnehmen:

Der zulaufende Fahrweg endet am ersten Split-Node des Knotenpunkts.

Node networks-split nodes-suare example-step 2.png Node networks-split nodes-rectangle example-step 2.png
3. Schritt: Abgehenden Fahrweg in die Relation aufnehmen:

Der abgehende Fahrweg soll die Verbindung zu den anderen Relationen herstellen. Er beginnt dazu an einem Split-Node, wo ein zulaufender Fahrweg aus Schritt 2 endet.

Idealerweise wird der Start des abgehenden Fahrwegs so gewählt, dass in seinem Verlauf durch den Knotenpunkt alle anderen zulaufenden Fahrwege angebunden werden

Im Beispiel 1:

  • Die Fahrwege nach 1, 3 und 4 binden alle zulaufende Fahrwege von anderen Knoten an:
    • der Fahrweg nach 1 im Split-Node B (von 4 kommend) und A (von 3 kommend)
    • der Fahrweg nach 3 im Split-Node C (von 1 kommend) und B (von 4 kommend)
    • der Fahrweg nach 4 im Split-Node A (von 3 kommend) und C (von 1 kommend)

Im Beispiel 2:

  • Die Fahrwege nach 3 und 5 binden alle zulaufende Fahrwege von anderen Knoten an:
    • der Fahrweg nach 3 im Split-Node C (von 1 kommend), B (von 5 kommend) und A (von 4 kommend)
    • der Fahrweg nach 5 im Split-Node A (von 3 und 4 kommend) und C (von 1 kommend)


Mitunter ist es nicht möglich, alle zulaufenden Fahrwege auf einmal anzubinden. Dann werden weitere abgehende Fahrwege in die Relation aufgenommen, mit denen die restlichen Split-Nodes angebunden werden. Es gibt dadurch mehrere "Tentakel" am Beginn der Relation. Die Tentakel holen Radfahrer/ Wanderer von anderen zulaufenden Relationen ab.

Im Beispiel 2:

  • Die Fahrwege nach 1 und 4 haben jeweils zwei "Tentakel".
    • der Fahrweg nach 1:
      • ein Tentakel vom Split-Node A (von 3 und 4 kommend)
      • ein Tentakel vom Split-Node B (von 5 kommend)
    • der Fahrweg nach 4:
      • ein Tentakel vom Split-Node A (von 3 kommend)
      • ein Tentakel vom Split-Node C (von 1 kommend)

Es wird dabei in Kauf genommen, dass die Wege in der Relation keine durchgehende Wegekette mehr ergeben.


Hinweis: Die abgehenden Fahrwege sind bis zum letzten Split-Point Einrichtung-Fahrwege. Bitte vergesst nicht, die Fahrrichtung anzugeben. Dazu bekommen die Wegelinien des Fahrwegs folgende Rollen in der Relation:

  • Role forward: Fahrrichtung in Richtung der Wegelinie
  • Role backward: Fahrrichtung entgegen der Richtung der Wegelinie

Je nach Führung durch den Knoten können auch zulaufende Fahrwege Einrichtungs-Fahrwege sein. Dann sind auch dort diese Rollen zu vergeben.

Node networks-split nodes-suare example-step 3.png Node networks-split nodes-rectangle example-step 3.png

Qualitätschecks:

  • Es gibt es maximal so viele OSM-Node mit rcn_ref=*, wie es Relationen zu Nachbarknoten gibt.
  • In jeder Fahrrichtung durch den Knoten gibt es nur einen Wechsel der Relationen.
  • In jeder Fahrrichtung durch den Knoten gibt es nur mindestens einen OSM-Node mit rcn_ref=*.
  • An jedem OSM-Node mit rcn_ref=* endet mindestens ein zulaufender Fahrweg einer Relation.
  • An jedem OSM-Node mit rcn_ref=* beginnt mindestens ein abgehender Fahrweg einer Relation.
  • An jedem endenden zulaufenden Fahrweg befindet sich ein OSM-Node mit rcn_ref=*
  • An jedem endenden zulaufenden Fahrweg schließen sich die abgehenden Fahrwegen aller anderen Relationen an
  • ... (weitere?)