Liste aller Kreuzungen einer Stadt

Ich habe jetzt bei der Suche im Forum nichts gefunden.

Ich möchte eine Liste aller (Straßen-)Kreuzungen einer Stadt haben.

Mein Vorgehen bis jetzt war, die Liste aller Straßen nehmen. Dann alle ways mit den Namen herunterladen und dann die Straßenpunkte miteinander vergleichen und schauen oder der Punkt zu zwei Wegen gehört.

Ist leider irgendwie aufwendig und brauch ganz schön lange.

Gibt es eine schneller besser Lösung?

swus

Das, was lange braucht, ist das Herunterladen. Nimm ein Extrakt (.osm.pbf) von dem Gebiet, in dem die Stadt liegt, nimm “osmium”, um daraus die Stadt auszuschneiden, dann nimm nochmal “osmium”, um nur die Straßen und Wege auszuschneiden, dann lies die resultierende Datei auf einmal ein.

Das könnte zum Beispiel alles auf einer einzigen Linux-Befehlszeile so aussehen (hier für die Stadt Marburg):


curl http://download.geofabrik.de/europe/germany/hessen-latest.osm.pbf |
   osmium extract --bbox 8.62,50.73,8.86,50.86  - --strategy simple -F pbf -f pbf | 
  osmium tags-filter - -R -F pbf -f xml w/highway |
  grep "<nd"|
  sort |
  uniq -c|
  sort -rn

raus kommt eine Liste mit allen Nodes in Marburg und zu wieviel Straßen sie gehören:


      7     <nd ref="370212858"/>
      7     <nd ref="1010749416"/>
      6     <nd ref="537138833"/>
      6     <nd ref="512669418"/>
      6     <nd ref="422865710"/>
...

Dauert 30 Sekunden inkl. Download. Alles was vorn mehr als eine “1” hat, wird von 2 oder mehr Wegen benutzt.

Falls Du nun die Koordinaten dieser Nodes wissen willst, kommst Du nicht mehr ganz mit einer Zeile aus und musst die hessen-latest.osm.pbf zwischenspeichern, dann kannst Du Dir mit “osmium getid” die Nodes mit den so gefundenen IDs ausgeben lassen.

Falls Du Fußwege etc. ignorieren willst, musst Du die “w/highway”-Bedingung etwas präziser formulieren, das geht aber auch noch.

Was ein bisschen knifflig ist, sind “pseudo”-Kreuzungen, wo ein Way aufhört und ein anderer anfängt. Die würden in der Liste oben mit einer “2” erscheinen. Um das richtig zu machen und die zu ignorieren (nicht aber einen Punkt, an dem ein Way aufhört und ZWEI andere anfangen) musst Du dann wohl doch ein paar Zeilen Programmcode schreiben :wink:

Bye
Frederik

Das geht auch ganz einfach per Overpass query: https://forum.openstreetmap.org/viewtopic.php?pid=693269#p693269