Autor Beitrag
pigfacejoe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 332
Erhaltene Danke: 1

Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
BeitragVerfasst: Di 26.02.13 15:37 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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 oder 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

Für diesen Beitrag haben gedankt: Martok