Node/Highway aus gegebenen Koordinaten (OVERPASS TURBO API)

Hallo,

ich habe mich bereits wund gesucht, finde aber nichts vernünftiges. Da es sich nicht um mein Hauptthema handelt, sondern nur um eine nützliche/notwendige Zusatzinformation möchte ich mich ungerne weiterhin mehrere Tage in Overpass QL einarbeiten.

Aufgabe: Zu einem gegebenen GPX Track die jeweiligen maximal erlaubten Geschwindigkeiten der Straßen ermitteln.

Gegeben: GPX Daten mit lat und lon zu jedem Punkt des Tracks.

Meine Herangehensweise: Ermitteln der Node ID zu den Punkten aus dem GPX Track (lat/lon gegeben), Way zu dem Node ermitteln, Tag Highway zu dem Node ermitteln, falls gegeben Tag maxspeed ermitteln, ansonsten reicht auch nur der Tag Highway.

Problem: Ich schaffe es nicht mal einen Punkt mit den gegebenen lat/lon Daten zu finden, geschweigedenn dem einen Way oder Highway-Tag zuzuordnen.

Ich hoffe, dass mir zumindest jemand erklären kann, wie ich einen Way zu gegebenen lat/lon Daten eines Punktes finde. Über Antworten würde ich mich sehr freuen (sowohl eine fertige Abfrage, als auch eine einfach Erklärung wie ich da süberhaupt anstellen kann).

Danke!!!

Grüße

PS: Ist in Verbindung mit meiner Masterarbeit, in welcher es um Steuerung von Fahrzeugen geht.

Nochmal zum Verständnis anders formuliert: Du hast eine Geokoordinate (lat/lon) und möchtest den dazu nächstgelegenen OSM-Node finden, der zu einem highway gehört? Eine gewisse Unschärfe musst du ja einbauen, da gemessene GPS-Daten ihre Ungenauigkeiten haben.

–ks

Hi, ich hab nach “snap point to feature OSM” gesucht, und eins der Ergebnisse war https://www.jamesrcroft.com/2015/06/snapping-gps-tracks-to-roads/, was sich beim Überfliegen relevant anhört.

Ja, dafür wäre Map Matching vermutlich das geeignete Verfahren, siehe:
GPS-Tracks auf einen Pfad mergen? - #6

Man kann aber tatsächlich auch mit einem gewöhnlichen Routing-Request, der als Start- und Ziel den selben Punkt enthält, die Eigenschaften des nächsgelegenen Wegstücks abfragen, z.B.:

http://brouter.de:443/brouter?lat=49.93678&lon=8.65632&layer=OpenStreetMap&lonlats=8.664286,49.940229|8.664286,49.940229&nogos=&profile=car-fast&alternativeidx=0&format=csv

Aber klar, bei “Map-Matching”, wenn man so eine Anfrage gleichzeitig für alle Punkte eines Tracks machen kann, hat man mehr Plausibiliät drin und liegt nicht ab un zu mal zufällig auf dem Feldweg neben der Autobahn…

Es gibt einige Android Apps die nichts anderes machen als die aktuelle Position an Overpass zu schicken, um mit “around:xyz” die entsprechende Geschwindigkeit an der aktuellen Position zu ermitteln.

Hier mal ein Beispiel: https://github.com/plusCubed/velociraptor/blob/master/app/src/main/java/com/pluscubed/velociraptor/api/osm/OsmLimitProvider.java

Leider erzeugt das alles einen ziemlichen Haufen Last auf dem Server, so dass diese Projekte in der Regel gerne ihre eigene Instanz dazu nutzen dürfen.

Noch ein anderer Ansatz:

Hier gibts auf Stackoverflow eine Antwort, die für einen Punkt genau das tut was du willst: https://stackoverflow.com/a/40996657/2168905

Bitte beachte aber die Limits “deiner” Overpass-Instanz, max 1 Request/Sekunde sollte aber gehen. Ich finde grade die Limits nicht…

Oh Mann war das einfach, scheint genau das zu tun was ich brauche, vielen Dank.
Auch an alle anderen ANtworten vielen Dank. Falls ich weitere Hilfe benötige, lasse ich von mir hören.