Moin,
auf der Suche nach einer Lösung, bei der ich aus einem GPX-File brauchbare Analyse-Werte errechnen lasse (Ziel: Anzeige im eigenen Blog) habe ich ein wenig experimentiert um auf Werte wie Durchschnittsgeschwindigkeit und tatsächliche aktive Zeit etc. zu kommen.
Wer bereits ein wenig im Thema ist, kann runterscrollen zu "Summa Summarum")
Als Referenz dienten mir die Auswertungen im Strava-Webinterface meiner Strava-Aufzeichnungen. Im Webinterface bekommt man ja die rohen/unverfälschten GPX Files zum Download. Im Vergleich dazu: Per Api auf Strava zuzugreifen ermöglicht einem nur einen "optimierten" GPS-Stream zu erhalten.
Wie vielen Leuten immer wieder auffällt, sind die Analyse-Daten unterschiedlicher Geräte sehr unterschiedlich. Dazu muss man sich nicht mal einen Vergleich zu anderen Portalen antun. Es reicht ja schon, wenn man mit einem identischen Gerät direkt nebeneinander zu zweit eine Strecke trackt. Am Ende spukt Strava unterschiedliche Analyse-Werte aus.
Hat mich bisher nicht sonderlich gestört. Doch nun will ich für die Anzeige auf meinem Blog automatisiert Analyse-Werte aus GPX Dateien erhalten/berechnen lassen und hab mir dafür Software angeschaut. Z.B. Waddle (PHP Parser mit Statistik-Ausgabe), gpxpy (python Parser mit Statistik-Ausgabe) oder auch direkt am Rechner tools wie "BikeExperience", "GPX-Viewer", etc.
Was dabei auffällt ist der starke Unterschied in den Werten. z.B. bei ein und dem selben GPX-Track kamen Höchstgeschwindigkeiten zwischen 22 und 38kmh und Durchschnittsgeschwindigkeiten von 4,8 bis 9,9 kmh bei der Analyse heraus. Und kein Tool und kein Parser war in all seinen Werten Deckungsgleich mit einer der anderen - geschweige denn mit den Werten von Strava.
Das machte mich natürlich stutzig und ich hab versucht mich ein wenig schlau zu lesen.
Nun. Am Ende läuft es darauf hinaus, dass bei ein und der selben Datenlage unterschiedliche Auswertungen darauf basieren, dass unterschiedliche Algorithmen zur Berechnung herangezogen werden. Im Prinzip kocht da jeder sein eigenes Süppchen. Manch einer ignoriert bei Durchschnittswerten, dass auch Pausen eingelegt werden. Die meisten ignorieren aufgezeichnete Höhendaten und generieren die Z-Achse auf Basis der 2d-Werte in Abgleich mit (online-)Datenbanken, etc.. etc..
Hinzu kommt, dass die Datenbasis schon extrem wackelig ist: Unsere Geräte zeichnen viel zu grobe Werte in viel zu groben Intervallen auf. Z.B. im Sekundenbereich statt Millisekunden. Dadurch entsteht ein Jitter und dicke Ausreißer wie z.B.: zwischen zwei Punkten mit konstanter Geschwindigkeit eine Erhöhung um 40% der Geschwindigkeit, etc..
Um das alles besser zu verstehen, hat mir dieser sehr aufschlussreiche Blog-Artikel geholfen: http://regex.info/blog/2015-05-09/2568
Schön ist auch, wie dort klar wird, dass Strava teils fast 300% bei den geleisteten Höhenmetern daneben liegt.
Insg. ist das natürlich alles stark herunter gebrochen. Das Thema gestaltet sich weit aus komplexer. Ich denke aber, dass es hier nicht tiefer ins Thema eingedrungen werden muss, als es der verlinkte Blog-Artikel schon tut.
Summa Summarum: Egal wo, egal wer, egal womit. Es ist immer eine sehr fehlerhafte Auswertung aufgrund einer sehr fehlerhaften Datenlage.
Nun denn, bis hier hin war es zur Erklärung für diejenigen die nicht im Thema sind.
Mir geht es um folgendes:
Es sollte durchaus möglich sein, Anhand von einem Profil wie "Mountainbike - Gelände" oder "Rennrad - Asphalt" oder "Wandern", etc. eine automatisierte Fehlerkorrektur von GPX-Files vornehmen zu lassen.
Klar ist, dass grobe Ausschläge immer geglättet werden müssen. Was dabei grob ist und was nicht, ist abhängig vom Bewegungsprofil. 5kmh Unterschied beim Wandern sind anders zu bewerten als beim Rennradfahren. Bei Rennrad kann in der Regel ein Abgleich der Höhendaten mit Datenbanken wie SRTM stattfinden. Bei Mountainbike ist klar, dass ein Jitter zu extrem fehlerhaften Gesamt-Höhenmeter führt und ein Abgleich mit externen Datenbanken zu weiteren Fehlern bzw. zu einer Potenzierung selbiger führt (siehe verlinktes Blog zum Thema "very-3D mountain pressed into a mostly-2D face".
Etc. etc.
Das Thema ist nicht neu und sicher viel diskutiert worden. Alleine der Umstand, dass hunderte verschiedene Dateiformate und Analysetools existieren, zeigt auf, wie viele Gedanken zu dem Thema existieren.
Ich hab mich auch heute mit jemanden darüber unterhalten, dessen Fachgebiet genau diese Fehlerbehaftung von Geo-Daten ist - Endanwender sind jedoch nicht sein Arbeitsbereich.
Nun möchte ich hier fragen, ob hier Erfahrungswerte zur Fehlerbereinigung (Jitter, Extremausschläge, etc.) existieren. Da mir das Web und auch der Fachmann nicht beantworten konnten, ob es dazu brauchbare Tools/Methoden gibt, die über eine theoretische Funktionsweise hinaus gehen.
Grundsätzlich sind für mich Tools, welche unter Linux per Script ansprechbar sind, am interessantesten.
Kennt ihr fertige Tools, die intelligent GPX-Files korrigieren?
Mit "intelligent" ist gemeint, dass diese nicht einfach nur Mittelwerte aus z.B. drei Wegpunkten generieren oder Spitzen pauschal wegbügeln. Es geht auch nicht darum von z.B. 5000 Wegpunkten eine pauschal geglättete Version von z.B. 500 Wegpunkten zu erhalten. Letzteres kann GPSBabel z.B. mit Standardfiltern. Ich hab mich mit GPSBabel noch nicht im Detail auseinandergesetzt, ob dort z.B. in Abhängigkeit des Profils (z.B. Wandern, Rennrad, MTB, etc.) unterschiedlich gefiltert werden kann. Vermutlich kann man hier Jitter recht gut wegfiltern ohne den Rest des Tracks zu verfälschen.
Was nicht in Frage kommt: Ein anderes Gerät als ein Smartphone oder eine Smartwatch zur Aufzeichnung zu nutzen. Einen dedizierten Tracker und/oder Navigator, welcher extra-Geld, Strom und Platz kostet, fällt einfach raus. Es ist klar, dass mit der vorhandenen Datenlage niemals ein perfektes Ergebnis entstehen kann. Daher geht es hierbei auch "nur" darum, aus der vorhanden Datenlage das Optimum heraus zu holen und nicht um eine bessere Aufzeichnung.
Wie macht ihr das?
auf der Suche nach einer Lösung, bei der ich aus einem GPX-File brauchbare Analyse-Werte errechnen lasse (Ziel: Anzeige im eigenen Blog) habe ich ein wenig experimentiert um auf Werte wie Durchschnittsgeschwindigkeit und tatsächliche aktive Zeit etc. zu kommen.
Wer bereits ein wenig im Thema ist, kann runterscrollen zu "Summa Summarum")
Als Referenz dienten mir die Auswertungen im Strava-Webinterface meiner Strava-Aufzeichnungen. Im Webinterface bekommt man ja die rohen/unverfälschten GPX Files zum Download. Im Vergleich dazu: Per Api auf Strava zuzugreifen ermöglicht einem nur einen "optimierten" GPS-Stream zu erhalten.
Wie vielen Leuten immer wieder auffällt, sind die Analyse-Daten unterschiedlicher Geräte sehr unterschiedlich. Dazu muss man sich nicht mal einen Vergleich zu anderen Portalen antun. Es reicht ja schon, wenn man mit einem identischen Gerät direkt nebeneinander zu zweit eine Strecke trackt. Am Ende spukt Strava unterschiedliche Analyse-Werte aus.
Hat mich bisher nicht sonderlich gestört. Doch nun will ich für die Anzeige auf meinem Blog automatisiert Analyse-Werte aus GPX Dateien erhalten/berechnen lassen und hab mir dafür Software angeschaut. Z.B. Waddle (PHP Parser mit Statistik-Ausgabe), gpxpy (python Parser mit Statistik-Ausgabe) oder auch direkt am Rechner tools wie "BikeExperience", "GPX-Viewer", etc.
Was dabei auffällt ist der starke Unterschied in den Werten. z.B. bei ein und dem selben GPX-Track kamen Höchstgeschwindigkeiten zwischen 22 und 38kmh und Durchschnittsgeschwindigkeiten von 4,8 bis 9,9 kmh bei der Analyse heraus. Und kein Tool und kein Parser war in all seinen Werten Deckungsgleich mit einer der anderen - geschweige denn mit den Werten von Strava.
Das machte mich natürlich stutzig und ich hab versucht mich ein wenig schlau zu lesen.
Nun. Am Ende läuft es darauf hinaus, dass bei ein und der selben Datenlage unterschiedliche Auswertungen darauf basieren, dass unterschiedliche Algorithmen zur Berechnung herangezogen werden. Im Prinzip kocht da jeder sein eigenes Süppchen. Manch einer ignoriert bei Durchschnittswerten, dass auch Pausen eingelegt werden. Die meisten ignorieren aufgezeichnete Höhendaten und generieren die Z-Achse auf Basis der 2d-Werte in Abgleich mit (online-)Datenbanken, etc.. etc..
Hinzu kommt, dass die Datenbasis schon extrem wackelig ist: Unsere Geräte zeichnen viel zu grobe Werte in viel zu groben Intervallen auf. Z.B. im Sekundenbereich statt Millisekunden. Dadurch entsteht ein Jitter und dicke Ausreißer wie z.B.: zwischen zwei Punkten mit konstanter Geschwindigkeit eine Erhöhung um 40% der Geschwindigkeit, etc..
Um das alles besser zu verstehen, hat mir dieser sehr aufschlussreiche Blog-Artikel geholfen: http://regex.info/blog/2015-05-09/2568
Schön ist auch, wie dort klar wird, dass Strava teils fast 300% bei den geleisteten Höhenmetern daneben liegt.
Insg. ist das natürlich alles stark herunter gebrochen. Das Thema gestaltet sich weit aus komplexer. Ich denke aber, dass es hier nicht tiefer ins Thema eingedrungen werden muss, als es der verlinkte Blog-Artikel schon tut.
Summa Summarum: Egal wo, egal wer, egal womit. Es ist immer eine sehr fehlerhafte Auswertung aufgrund einer sehr fehlerhaften Datenlage.
Nun denn, bis hier hin war es zur Erklärung für diejenigen die nicht im Thema sind.
Mir geht es um folgendes:
Es sollte durchaus möglich sein, Anhand von einem Profil wie "Mountainbike - Gelände" oder "Rennrad - Asphalt" oder "Wandern", etc. eine automatisierte Fehlerkorrektur von GPX-Files vornehmen zu lassen.
Klar ist, dass grobe Ausschläge immer geglättet werden müssen. Was dabei grob ist und was nicht, ist abhängig vom Bewegungsprofil. 5kmh Unterschied beim Wandern sind anders zu bewerten als beim Rennradfahren. Bei Rennrad kann in der Regel ein Abgleich der Höhendaten mit Datenbanken wie SRTM stattfinden. Bei Mountainbike ist klar, dass ein Jitter zu extrem fehlerhaften Gesamt-Höhenmeter führt und ein Abgleich mit externen Datenbanken zu weiteren Fehlern bzw. zu einer Potenzierung selbiger führt (siehe verlinktes Blog zum Thema "very-3D mountain pressed into a mostly-2D face".
Etc. etc.
Das Thema ist nicht neu und sicher viel diskutiert worden. Alleine der Umstand, dass hunderte verschiedene Dateiformate und Analysetools existieren, zeigt auf, wie viele Gedanken zu dem Thema existieren.
Ich hab mich auch heute mit jemanden darüber unterhalten, dessen Fachgebiet genau diese Fehlerbehaftung von Geo-Daten ist - Endanwender sind jedoch nicht sein Arbeitsbereich.
Nun möchte ich hier fragen, ob hier Erfahrungswerte zur Fehlerbereinigung (Jitter, Extremausschläge, etc.) existieren. Da mir das Web und auch der Fachmann nicht beantworten konnten, ob es dazu brauchbare Tools/Methoden gibt, die über eine theoretische Funktionsweise hinaus gehen.
Grundsätzlich sind für mich Tools, welche unter Linux per Script ansprechbar sind, am interessantesten.
Kennt ihr fertige Tools, die intelligent GPX-Files korrigieren?
Mit "intelligent" ist gemeint, dass diese nicht einfach nur Mittelwerte aus z.B. drei Wegpunkten generieren oder Spitzen pauschal wegbügeln. Es geht auch nicht darum von z.B. 5000 Wegpunkten eine pauschal geglättete Version von z.B. 500 Wegpunkten zu erhalten. Letzteres kann GPSBabel z.B. mit Standardfiltern. Ich hab mich mit GPSBabel noch nicht im Detail auseinandergesetzt, ob dort z.B. in Abhängigkeit des Profils (z.B. Wandern, Rennrad, MTB, etc.) unterschiedlich gefiltert werden kann. Vermutlich kann man hier Jitter recht gut wegfiltern ohne den Rest des Tracks zu verfälschen.
Was nicht in Frage kommt: Ein anderes Gerät als ein Smartphone oder eine Smartwatch zur Aufzeichnung zu nutzen. Einen dedizierten Tracker und/oder Navigator, welcher extra-Geld, Strom und Platz kostet, fällt einfach raus. Es ist klar, dass mit der vorhandenen Datenlage niemals ein perfektes Ergebnis entstehen kann. Daher geht es hierbei auch "nur" darum, aus der vorhanden Datenlage das Optimum heraus zu holen und nicht um eine bessere Aufzeichnung.
Wie macht ihr das?
Zuletzt bearbeitet: