GPX Track mit OSM Attributen ergänzen

Hallo zusammen,

derzeit arbeite ich an einem größeren Projekt. Ich nehme während der Autofahrt mit Hilfe eines GPS Loggers und anderen Sensoren verschiedene Daten auf. Diese Daten sind somit einer Latitute und Longitude Koordinate zugewiesen.

Nun würde ich gerne die Daten um weitere Parameter aus der OSM-Datenbank befüllen (z.B. mit Tag: highway, maxspeed. lanes, surface etc.).

Ist es möglich nur die gefahrenen GPS Punkte mit ausgewählten Attribute aus der OSM-Datenbank zu befüllen (wie bei einer manuellen Eingabe der Koordinaten http://nominatim.openstreetmap.org/details.php?place_id=77610981)

Die spätere Auswertung sollte im Idealfall über Matlab geschehen.

Hoffe ich konnte mein Problem verständlich beschreiben. Ggf. gehe ich auch an das Problem falsch heran und ihr kennt eine elegantere, schlauere Lösung.

Vielen Dank schon mal für eure Antworten.

Beste Grüße.

Hallo sheldor,
herzlich willkommen im Forum.
So ganz verstehe ich Dein Anliegen nicht, auch die Nominatim Darstellung ist mir bisher noch nicht begegnet.

Soviel kann ich aber sagen:

  1. Deine GPS Punkte stimmen lagemäßig nicht mit OSM Punkten (nodes) überein. Du müsstest also einen Algorithmus implentieren, der zu einem Deiner GPS Punkte einen geeigneten ( nächsten?) OSM Punkt bestimmt.
  2. Bei Straßen stecken die meisten Eigenschaften an Ways, die wiederum aus nodes aufgebaut sind. Oder schlimmer noch
    an Relationen.

Vielleicht kannst Du das Ziel Deiner Aktion erläutern, dann wir Dir sicher geholfen.

OSRM bietet einen Match-Service an, um deine GPX-Punkte möglichst plausibel auf OSM zu mappen: https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#match-service

Mit diesem Ergebnis könntest du dann per Overpass API die entsprechenden Ways nachladen und von dort die zusätzlichen Attribute extrahieren. Grob vergleichbar mit dem was ich mal hier geschrieben habe: https://gis.stackexchange.com/questions/244090/query-for-way-that-connects-two-intersections/244291#244291

Vielen Dank schonmal für eure Antworten.
Ich versuche nochmal genauer das Problem zu beschreiben. Die Aufgabe ist das Blickverhalten von Autofahrern zu untersuchen. Dafür habe ich unter anderem schon ein Eye-Tracking-System und einen GPS-Logger im Auto funktionsfähig in Betrieb genommen. Mit Hilfe einer von mir definierten Strecke (ca. 2-3 h Autofahrt auf Autobahn, Landstraße und Stadtverkehr) nehme ich somit die Blickrichtung der Probanden auf (für alle Probanden ist es die gleiche Strecke). Da sich das Blickverhalten unterscheidet, je nach Straßenparameter (Anzahl der Spuren, Ampel, Kreuzung, etc.), wäre es für mich nun Ideal, wenn ich auf meinen aufgezeichneten Parameter (Blickrichtung und GPS-Koordinate) zusätzlich die Straßeninformationen hätte.
Ideal wäre dann eine Tabelle welche aus Latitude, Longitude, Blickrichtung, Lanes, Highway, etc. besteht. Daraus könnte ich dann das situationsabhängige Blickverhalten mit Hilfe von Matlab auswerten.

Um ggf. den Aufwand und die Komplexität zu reduzieren, ist mir auch eine Lösung Recht, welche nur die Attribute/Tags der definierten Strecke enthält.

Meine bisheriger Idee war mit Hilfe von JOSM die OSM-Daten der GPS-Spur herunterzuladen und darüber irgendwie die Attribute heraus zu exportieren. Mir fehlt aber etwas das Wissen auf diesem Gebiet. Daher bin ich über jede Idee, Anregung oder Lösung dankbar.

Die OSM Daten entlang der GPS Spur zu erhalten ist kein Problem:
entweder mit JOSM stückweise runterladen und dann lokal abspeichern oder
aus der Spur einen “Schlauch” als polygon berechnen und dann aus einem Bundeslandextrakt http://download.geofabrik.de/europe/germany.html mit osmosis das interessante Teilgebiet rausschneiden. Dabei oder mit osmfilter kann man alles rauswerfen, was nicht interessiert.

Dann geht es ans OSM Eingemachte: die geograph. Koordinaten stehen nur an Punkten (nodes), die Wege referenzieren Punkte und enthalten die Dich interessierenden Parameter. Da die OSM Daten als Klartext xml Datei gespeichert werden können, ist jedwede Weiterverarbeitung machbar, kann aber aufwendig werden.

Ich halte Deinen Ansatz nur bedingt für zielführend: ein großer Teil der Aufmerksamkeit des Fahrers wird wahrscheinlich durch die aktuelle Situation wie andere Verkehrsteilnehmer, Wetter etc. beansprucht werden. Das ist aber auf keinen Fall in OSM drin, kann aber mit einer Dash -Cam parallel erfasst und in die Auswertung eingebaut werden.

In JOSM kann man mit Rechtsklick auf die GPX Ebene zwar “OSM-Daten entlang dieser Spur herunterladen”, aber nur grob nach Bereich. Es gibt noch ein Conflation Plugin (siehe auch Conflation), das hier aber vermutlich nicht ganz passt.

Hab selbst keine Erfahrung damit, aber wie mmd schon geschrieben hat, ist das Stichwort hierzu wohl “Map Matching”. Ergänzend hier ein paar Links:

GraphHopper
Digitalizing GPX Points or How to Track Vehicles With GraphHopper
Map Matching API

Mapbox (OSRM, siehe auch #3)
Matching GPS traces to a map
Clean vehicle traces with the Map Matching API

Mapzen (Valhalla)
Map Matching is ready to Flex

Von diesen Anbietern gibt es jeweils sowohl eine kommerzielle API mit kostenlosem Kontingent, als auch die dahinterstehende Routing Engine mit Map Matching als Open Source.

Mapzen hat eine Demo zum Testen.