Hallo,
nach einer erfolglosen suche im internet+hier im forum, stell ich die frage nun selbst.
ich arbeite an einem kleinen hobby projekt in php (wird später kostenlos für öffentlichkeit nutzbar). dort bin ich gerade dabei die gpx-tracks von osm auszuwerten (einfach per url importieren und die XML mit SimpleXML auszuwerten), aus dem track nehme ich die punkte, ermittle daraus den max/min lat+long & zeit. daraus berechne ich noch die distanz und die max/min geschwindigkeit.
so, nun bin ich an einem punkt angelangt wo meine ergebnisse nicht mit anderen programmen mit übereinstimmen.
zum vergleich habe ich mir ein paar gps-tracks heruntergeladen und mit GPX-Editor verglichen, zusätzlich habe ich noch ein Plugin für mein Google-Chrome Browser installiert: “OSM Track analyzer”, diese plugin sendet einfach nur die id vom gpx-track auf der osm-seite zu einem anderen server, dort wird dann gerechnet und man erhält ein ergebnis als json-string.
mit meinem ersten beispiel gpx-track klappte es hervorragend, bis ich ein paar andere tracks zum vergleich benutzt habe. dort habe ich festgestellt dass es auch fehler in so einem track gibt, als beispiel: zeitstempel bleibt stehen die position springt aber (kein 5Hz logger). diese fehler machen meine geschwindigkeits-berechnung kaputt!
mit folgendem beispiel track bekomme ich falsche ergebnisse:
http://www.openstreetmap.org/user/GPSSpeedLte/traces/1121834
mit “OSM Track analyzer” wird folgende anfrage gesendet: http://traces.osmosnimki.ru/stat?ids=1121834 und man erhält diese antwort:
{"1121834": {"distance": 7.6942417469700004, "maxspeed": 136.606497744, "minspeed": 49.899901457200002, "uselesspoints": 0, "timestop": "2011-10-17T12:14:11", "usefulpoints": 244, "timestart": "2011-10-17T12:10:07", "timespan": 243.0, "bbox": "BOX3D(-94.128559 37.076861 0,-94.042535 37.078931 0)", "avgspeed": 111.54090928700001, "transport": {"foot": 0.0, "auto": 98.367346938799997, "train": 0.409836065573771, "bicycle": 0.0, "avia": 0.0}, "trkid": 1121834}}
als max-speed steht dort: 136,6km/h, mein script rechnet aber 261.18 aus! nach kurzem debuggen stellte ich fest das am anfang bei den ersten zwei punkten, die position sich änderte obwohl die zeit stehen blieb. meine frage, wie kann ich diese “anfangs-synchronisations-” bzw. fehler-punkte ermitteln/filtern?
ich hatte schon versucht alle punkte die gleiche uhrzeit haben zu filtern, die geschwindigkeit blieb allerdings bei. und ausserdem würde ich die genauigkeit von 5Hz empfängern beschneiden (5 punkte in einer sekunde).
hat da jemand erfahrung, wie man solche ungültigen/fehlerhaften punkte erkennt? evtl. ein toleranzband aus geschwindigkeit bzw. entfernung zwischen den punkten?
Gruß
b1