Wege an Schnittpunkten trennen.

Moin.

Gibt es im OSM-Universum ein fertiges Stueckchen Software, mit dem “Ways” an “intersections” gesplittet werden koennen? Also, dass kein Node, der nicht Endpunkt eines Ways ist, Endpunkt eines anderen Ways ist.

Sowas ziemlich. Nur dass ich halt nicht Postgres nutzen will:

Ich versteh nicht ganz, was du meinst.

Willst du den durchgehenden Weg an allen Nodes in einzelne Segmente aufsplitten?
JOSM+utilsplugin2: Weg selektieren – Strg-Shift-N → Nodes sind selektiert – P → Weg ist in verbundene Segmente getrennt.

Oder willst du die shared nodes auftrennen, daß es nur noch übereinanderliegende einzelne Nodes sind? Dann nach P auch noch G drücken.

–ks

Ne, aus 2 Wegen A B C D E und C F G sollen 3 werden: A B C, C D E und C F G. Aber halt automatisch fuer ganze Ortschaften, Subsets, Kontinete, Planeten…

WARUM? Die OSM-Software kommt hervoragend mit nicht gesplitteten Wegen aus. Das gilt auch für Router, da diese intern bei der Verarbeitung der Daten die Ways an den Knoten auftrennen.

In Osm selber - also der Datenbank - ist das absolut unnötig.

Gruss
walter

@all Leute, erst “warum?” und dann erst “wie?” Das hatten wir doch erst vor einigen Wochen :frowning:

Um Routing geht es. Nur, sollte bereits etwas von einer Community Getestetes existieren mit dem bei einem XML/PBF-Subset die Wege gesplittet werden koennen, muss ich das nicht machen. DRY und so.

Schau dir mal diesen Beitrag vom Orangen Assistenten an, wenn du selbst was bauen willst… Die Importer diverser Open Source Router kann man sicher auch ausschlachten.

Grüße, Max

PS: Die Definition der Gefahrenzonen des Assistenten (“next if $attr{‘name’} =~ /katze/i;”) kann man für andere Anwendungen sicher nochmal überdenken…

Ich hab nicht allzuviel Ahnung von Routern aber soweit mit bekannt ist, erstellen die einen Graphen (Topologie) der Wege und dafür trennen sie diese an den Knotenpunkten auf. Klaro, da sie ja genau diese Teilstücke brauchen.

Gruss
walter, der froh ist, richtig geraten zu haben.

ach ja: Herzlich willkommen im Forum!

Okay, danke, ich dachte osmfilter o.ae. koennte sowas vielleicht und ich check es nur nicht… (Wuerde mich nicht wundern, nachdem ich 2 Tage gebraucht habe, um damit genau die Daten zu bekommen, die ich grundsaetzlich brauche.)

Ist ein komplexes, aber spannendes Thema. Falls mal Interesse besteht, gibt es hier wirklich sehr gute Videos mit Prof. Bast: http://ad-wiki.informatik.uni-freiburg.de/teaching/EfficientRoutePlanningSS2012

Gruss

Was Fertigest ist mir da nicht bekannt. Wenn’s für einen Router ist, wirst Du ja auch nicht an jeder Kreuzung von Ways splitten wollen, sonder nur an denen, an denen ein Way abbiegt, der vom von Dir benutzten Fortbewegungsmittel nutzbar ist.

Es gibt natürlich jede Menge exzellente Open Source-Software, die mit OSM Routing macht, z.B. project-osrm (C++), Graphhopper (Java), Routino (C), oder die pgrouting-Vorstufe osm2pgrouting. Alle von denen haben irgendwelchen Code, der eine solche Aufteilung vornimmt - wie gut das re-usable ist, weiss ich natürlich nicht.

Siehe dazu auch: https://help.openstreetmap.org/questions/19213/how-can-i-convert-an-osm-xml-file-into-a-graph-representation

Bye
Frederik