Entwickler-Ecke

Programmiersprachen (Client) - GPS Koordinaten zu möglichst genauer Route verbinden


pigfacejoe - Di 26.02.13 15:37
Titel: GPS Koordinaten zu möglichst genauer Route verbinden
Hallo zusammen,
ich verzweifle seit Wochen an folgendem Problem:

Ich habe einen GPS Peilsender im Auto, welcher die gemessenen GPS Daten via Internet an ein entgegennehmendes PHP Skript sendet, dieses schreibt die Koordinaten in eine DB weg und tut sonst prinzipiell nichts.

Nun würde ich gerne die GPS-Daten zu einem Track zusammenbasteln und auf einer OSM Karte anzeigen - dies klappt soweit auch wunderbar. Nun das Problem:
Der Peilsender im Auto sendet alle 10 sekunden => Wenn ich die GPS Daten einfach zu einem Track zusammenbastel, dann erhalte ich einen Track mit "Ecken und Kanten" (Kurven werden abgeschnitten usw.)
Ich möchte jedoch einen möglichst genauen Track. Da die Gesamtstrecke auch nur mittels "Luftlinien-Entfernungen" zwischen jeweils zwei GPS Koordinaten berechnet wird, ist die approximierte Gesamtstrecke oftmals stark abweichend von der tatsächlich gefahrenen Gesamstrecke.

Kennt jemand eine Möglichkeit, zwischen den gemessenen GPS Koordinaten zu "interpolieren", sprich durch den kürzesten Pfad zwischen diesen beiden Punkten über eine Strasse zu verbinden und dadurch möglichst genaue Entfernungsberechnungen zu erhalten? Es muss ja eine Lösung geben, da bestehende Tracking-Angebote ja genau das machen...ich habe allerdings so langsam keine Idee mehr wie ich das umsetzen könnte und zähle auf eure Hilfe :)

Momentan nutze ich die Leaflet API, eine Map-API die mit OSM Karten arbeitet.

Vielen Dank und liebe Grüße,


Martok - Mi 27.02.13 00:38

Du kannst schlecht Daten synthetisieren, die du nicht hast ;)

Ins Blaue geraten würde ich vermuten, dass andere Angebote die gemessenen Punkte als Stützpunkte verwenden und dazwischen von einem Routenfinder die Straßen-Strecke berechnen lassen. Ist sogar relativ schnell, da die Punkte nur maximal ein paar hundert Meter auseinander liegen und man deswegen mit recht wenig Suchtiefe auskommen sollte.


Yogu - Mi 27.02.13 01:08

Du bist nicht alleine ;) Such mal nach Suche bei Google SHORTEST PATH BETWEEN TWO POINTS OSM, z.B. Shortest Path using interpolated OSM points [http://gis.stackexchange.com/questions/6978/shortest-path-using-interpolated-osm-points] oder Calculate time and distance between two LatLng points with a JSON response [https://help.openstreetmap.org/questions/12946/calculate-time-and-distance-between-two-latlng-points-with-a-json-response].

Im Prinzip sind es zwei Teilaufgaben:

  1. Anhand der aufgenommenen Punkte zu OSM-Knoten auswählen (dabei evtl. darauf achten, dass die Punkte auf einer Straße liegen, und nicht plötzlich ein Feldweg-Punkt neben der Autobahn erwischt wird). Das ist vermutlich nicht ganz einfach.
  2. Die Routen zwischen diesen Punkten berechnen. Das ist eine Standardaufgabe, da wirst du wahrscheinlich einiges finden.

Grüße,
Yogu