• Hallo Gast, wir suchen den Renner der Woche 🚴 - vielleicht hast du ein passendes Rennrad in deiner Garage? Alle Infos

GPX-Dateien editieren / Pausen rausschneiden

WilliW

Aktives Mitglied
Registriert
13 April 2010
Beiträge
1.781
Reaktionspunkte
1.015
Ort
In einem unbekannten Land...
Neuerdings habe ich Endomondo auf meinem Smartphone installiert und finde es ganz nett, alle gefahrenen Strecken mitzuschneiden und diese dann automatisch auf dem Server abgelegt zu wissen.

Was mir im Moment aber noch nicht so recht gefällt, ist der Umgang mit Pausen. Ob es nun eine kurze Trinkpause oder der Ampelstopp ist, Endomondo erkennt es nicht als Pause. Ich denke, dass das bei der Genauigkeit des GPS-Signals generell ein Problem ist und im Internet wird auch generell von der Option "Automatische Pausenerkennung" abgeraten. Im Endomondo-Portal kann ich immerhin noch die Dauer der gesamten Strecke editieren und dort die reine Fahrtzeit von meinem Radcomputer eintragen. Damit stimmen dann immerhin reine Fahrzeit und Durchschnittsgeschwindigkeit in der Übersicht der Radtouren mit der Realität überein.

Schöner wäre es aber, wenn es eine Software gäbe, mit der ich die GPX-Datei editieren kann. Ideal wäre eine Landkarte mit dem Track, bei dem man in die gefahrene Strecke hineinzoomen kann, dort die einzelnen GPS-Punkte sehen kann und dann die "Punktwolke", an der die Pause stattgefunden hat einfach herausschneiden kann. Der nach diesem Schnitt kommende Streckenabschnitt sollte dann zeitlich nahtlos an den vorangegangenen Abschnitt angehängt werden. Ok, ziemlich vielen Wünsche meinerseits...

Wie geht Ihr mit den Pausen um? Wer nutzt eigentlich noch Endomondo (oder etwas ähnliches)?
 

Anzeige

Re: GPX-Dateien editieren / Pausen rausschneiden
Streckentechnisch kein Problem mit Garmin Basecamp, aber die Zeiten bleiben erhalten! Dafür gibt es ja die Auswertung "Zeit in Bewegung" und Gesamtzeit in den entsprechenden Auswerteprogrammen.
 
Das GPX-Format ist eine Textdatei mit einem XML-Schema. Das sollte eigentlich ein leichtes sein, in einem Editor die Waypoints mit gleichen Werten (=keine Bewegung) zu finden. Auch könnte man diese recht easy die Uhrzeit editieren, aber man muss jeden nachfolgenden Zeitwert nachberechnen.

Könnte mir vorstellen, dass es Software dafür gibt, GPSBabel z.B. kann einen Timeshift. Vielleicht kann es das ja auch? Oder hier: GPX-Editor
 
Das GPX-Format ist eine Textdatei mit einem XML-Schema. Das sollte eigentlich ein leichtes sein, in einem Editor die Waypoints mit gleichen Werten (=keine Bewegung) zu finden. Auch könnte man diese recht easy die Uhrzeit editieren, aber man muss jeden nachfolgenden Zeitwert nachberechnen.

Könnte mir vorstellen, dass es Software dafür gibt, GPSBabel z.B. kann einen Timeshift. Vielleicht kann es das ja auch? Oder hier: GPX-Editor
Tja, wenn es so einfach wäre...

Zu Fuß wird man da nicht viel erreichen können, da die Textdatei zu umfangreich und unübersichtlich ist. Die einzelnen Koordinaten sind etwa im 2 Sekunden Takt abgespeichert. In meinem Beispielfile sind das 16000 Zeilen. In diesem File jetzt hintereinander liegende gleiche Wegpunkte zu finden, zumal die Zahlenwerte ja nicht direkt wie in einer Tabelle untereinander stehen? Lieber nicht...

Den GPX-Editor hatte ich mir schon vor meinem Posting angeschaut und das Tool liest immerhin schon mal die GPX-Datei ein und stellt den Track auf der Karte dar. Allerdings kann ich auch hier nicht mehrere Punkte grafisch herausschneiden. Mit dem Tool habe ich keine Möglichkeit gefunden, mein Problem zu lösen.

Ich habe deshalb gestern mal spasseshalber ein kleines Programm geschrieben, mit dem ich meinen Beispieltrack in das Mathematik-Programm Scilab einlesen kann und habe dabei festgestellt, dass die Pause-Funktion von Endomondo scheinbar doch ganz gut funktioniert! Allerdings fehlt der Bereich der Pause ganz einfach in der Liste der Trackpoints, ohne dass an der Stelle ein neues Tracksegment begonnen wird. Wenn man z.B. 5 Minuten an einer Stelle verharrt hat, da sieht es hinterher im GPX-File so aus, als wäre man an den Pausenpunkt herangefahren und hätte sich dann 5 Minuten lang ganz langsam bis zum nächsten Trackpunkt nach der Pause bewegt. Der Schnitt über die ganze Strecke wird damit natürlich ganz schön nach unten gezogen.

GPSBabel ist ein prima Tipp, hatte ich noch nicht gefunden. Mit dem Tool kann man Phasen finden, in denen kein Kontakt zum Satelliten bestand und an der Stelle den Track Splitten. Das werde ich mal ausprobieren. Wie Endomondo dann das GPX-File einliest, wenn es aus unterschiedlichen Segmenten besteht, weiß ich aber auch nicht.

Alternativ werde ich die Manipulation selbst in Scilab programmieren. Das Einlesen war die Hauptarbeit. Jetzt die Phasen automatisch herausschneiden, in denen der 2 bis 3 Sekunden Takt deutlich überschritten ist, einen zusammenhängenden Track darzu erstellen und dies wieder als GPX-File auf die Platte schreiben, ist nicht schwer. Falls es mit GPSBabel nicht geht, werde ich das mal in Angriff nehmen. Wenn jemand daran Interesse hat, kann ich das Ergebnis gerne auch mal hier Posten.
 
Tja, wenn es so einfach wäre...

Zu Fuß wird man da nicht viel erreichen können, da die Textdatei zu umfangreich und unübersichtlich ist. Die einzelnen Koordinaten sind etwa im 2 Sekunden Takt abgespeichert. In meinem Beispielfile sind das 16000 Zeilen. In diesem File jetzt hintereinander liegende gleiche Wegpunkte zu finden, zumal die Zahlenwerte ja nicht direkt wie in einer Tabelle untereinander stehen? Lieber nicht...

Öhm ja. Zu Fuß im Editor macht das keinen Spaß. Man sollte schon eine Programmiersprache benutzen, die eine XML-Bibliothek hat. Scilab dafür herzunehmen find ich schon mutig. Respekt! Ich hätt wahrscheinlich eher mit perl oder ruby rumgemacht. Du hast sicher festgestellt, dass in dem Format trotzdem eine saubere Struktur dahintersteht, die sich leicht parsen und anpassen läßt?!

habe dabei festgestellt, dass die Pause-Funktion von Endomondo scheinbar doch ganz gut funktioniert! Allerdings fehlt der Bereich der Pause ganz einfach in der Liste der Trackpoints, ohne dass an der Stelle ein neues Tracksegment begonnen wird. Wenn man z.B. 5 Minuten an einer Stelle verharrt hat, da sieht es hinterher im GPX-File so aus, als wäre man an den Pausenpunkt herangefahren und hätte sich dann 5 Minuten lang ganz langsam bis zum nächsten Trackpunkt nach der Pause bewegt. Der Schnitt über die ganze Strecke wird damit natürlich ganz schön nach unten gezogen.

Das hab ich oben gemeint mit "jeden nachfolgenden Zeitwert nachberechnen". Die Differenz der rausgeschnittenen Zeit muss sich in jedem Punkt niederschlagen, dann stimmt auch die Fahrzeit und der Schnitt wieder.
 
Öhm ja. Zu Fuß im Editor macht das keinen Spaß. Man sollte schon eine Programmiersprache benutzen, die eine XML-Bibliothek hat. Scilab dafür herzunehmen find ich schon mutig. Respekt! Ich hätt wahrscheinlich eher mit perl oder ruby rumgemacht. Du hast sicher festgestellt, dass in dem Format trotzdem eine saubere Struktur dahintersteht, die sich leicht parsen und anpassen läßt?!
Danke für das "mutig", aber so schlimm ist das dann doch nicht. Mit drei sscanf's ist ein Trackpoint eingelesen, noch eine Schleife drumherum, dann waren alle Koordinaten, Zeitpunkte und Höhenangaben eingelesen. Ab dem Moment, wenn die Daten erst einmal eingelesen sind, haben dann Scilab, Matlab und Co extreme Vorteile, weil man die ganze Mathematik und Plotterei abgenommen bekommt. Und ein bißchen Visualisierung ist schon notwendig, um ein paar Regeln aufzustellen, wann welcher Bereich wie herausgeschnitten und neu angeheftet werden soll. Wenn es nur um das Einlesen gegangen wäre, hätte ich aber auch in die Richtung Scriptsprache gedacht.

Das hab ich oben gemeint mit "jeden nachfolgenden Zeitwert nachberechnen". Die Differenz der rausgeschnittenen Zeit muss sich in jedem Punkt niederschlagen, dann stimmt auch die Fahrzeit und der Schnitt wieder.
Ja, so muss man das machen.

Mit GPSBabel geht es übrigens nicht in einem Rutsch. Man kann zwar den Gesamttrack regelbasiert über die Zeitdifferenz bei den Pausenpunkten in einzelne Abschnitte aufteilen. Diese Segmente werden dann aber in Endomondo als unterschiedliche Touren behandelt. Einen zeitlichen Offset kann ich nur auf die gesamte Datei anwenden. Natürlich könnte man jetzt aus der einen Datei mehrere Segmente machen, diese in einzelne Dateien verteilen, jede Datei mit dem entsprechenden Offset versehen und am Ende alles wieder zusammenführen. Da kann man es aber dann auch gleich selbst stricken und hat dann deutlich mehr Kontrolle darüber, was als Pause interpretiert wird und was nicht.
 
oder man stellt seinen Edge auf Autopause und hat dann die Gesamt- und die netto Fahrzeit und kann sich diesen unnötigen Aufwand schlicht sparen!
Tja, dann macht der Garmin Edge das offensichtlich etwas geschickter als mein Blackberry mit Endomondo. Hilft mir aber jetzt nicht so recht weiter, außer dass Du mich mit der Anmerkung vielleicht auf die Idee für ein Weihnachtsgeschenk gebracht hast:). Und im übrigen: Manchmal machen die unnötigen Dinge ja auch ein bißchen Spaß, oder?
 
Und im übrigen: Manchmal machen die unnötigen Dinge ja auch ein bißchen Spaß, oder?

Halt uns mal auf dem Laufenden, ich hab da auch noch so ein Projekt im Kopf, nämlich das Verheiraten von GPX-Koordinatendaten aus nem Onlinetool mit den aufgezeichneten Daten meines HAC5 (Speed, TF, Höhe, Temp etc.) anhand der Höhenlinie. Sollte eigentlich auch klappen.
 
...

Schöner wäre es aber, wenn es eine Software gäbe, mit der ich die GPX-Datei editieren kann. Ideal wäre eine Landkarte mit dem Track, bei dem man in die gefahrene Strecke hineinzoomen kann, dort die einzelnen GPS-Punkte sehen kann und dann die "Punktwolke", an der die Pause stattgefunden hat einfach herausschneiden kann. Der nach diesem Schnitt kommende Streckenabschnitt sollte dann zeitlich nahtlos an den vorangegangenen Abschnitt angehängt werden. Ok, ziemlich vielen Wünsche meinerseits...
...

Habe jetzt die Beiträge nur überflogen. Ist dir GPS-Track-Analyse.NET bekannt? Erfüllt m.E. einen Teil Deiner Wünsche. Das Editieren ist übersichtlich mit Kartendarstellung möglich.
www.gps-track-analyse.de
 
Was noch geht ist Sporttracks. Wenn man sich erstmal an die SW gewöhnt hat ist es wirklich nett.
Ich editiere nach dem Fahren die Pausenpunkte maunell rein, da ich von der Autopause nicht viel halte. Dann kann ich in Aktive und Ruhe Runden unterteilen und auswerten.
 
na das kann man dann auch mit mytourbook machen, da habe ich meine Auswertung und kann auch beliebige Markierungen zusätzlich einbauen und auch einzelne Trackpunkte editieren.
dann muss ich acuh nicht mehr mit mehreren Programmen jonglieren.
 
Halt uns mal auf dem Laufenden...
So, habe gestern mal ein wenig in die Tasten gegriffen und bin eigentlich ganz zufrieden. Mit etwas mehr als 100 Zeilen Scilab-Code wird jetzt folgende gemacht:
1. Einlesen der GPX-Datei. Allerdings nur nach dem Muster, wie ich es von Endomondo bekomme (Track mit einem Segment, Trackpoints, auf <trkpt> folgen in den beiden nachfolgenden Zeilen direkt <ele> und <time>. Falls die Tour von einem anderen Programm als Endomondo als Liste von Waypoints oder Route abgespeichert wird (habe nur ganz kurz in die GPX-Spezifikation geschaut), müsste hier noch einmal angepasst werden.)
2. Bestimmung Wegstrecke und der Geschwindigkeit zwischen den einzelnen Trackpunkten.
3. Heraussuchen aller Geschwindigkeiten oberhalb von 70km/h (laut GPS bin ich ein Mal auf 460km/h gekommen, nicht schlecht für einen nicht-Profi, oder?:D ) und unterhalb von 13km/h.
4. Bilden der Durchschnittsgeschwindigkeit ohne Berücksichtigung der unter 3. herausgesuchten Geschwindigkeiten.
5. Ersetzen der Geschwindigkeit an den unter 3. herausgesuchten Stellen durch die unter 4. berechnete Durchschnittsgeschwindigkeit.
6. Bilden eines neuen Zeitverlaufs über die Distanz zwischen den einzelnen Trackpunkten und der dortigen Geschwindigkeit, die eben jetzt an den Ampelstopps und Pausenstellen auf die Durchschnittsgeschwindigkeit während der normalen Fahrt korrigiert ist.
7. Rausschreiben des neuenGPX-Files, bei dem die Wegpunkte genau die gleichen wie beim Originalfile sind, jedoch die Zeitpunkte gemäß Punkt 6 korrigiert berechnet wurden.

Schritt 5 ist der entscheidende: Wenn über Autopause eine Pause erkannt wurde, dann fehlt in dem Track eine Zeitspanne. Der erste Punkt nach der Pause ist vielleicht 20 Meter von dem Platz der Pause entfernt, im Track sieht es aber so aus, als hätte ich bis dorthin 5 Minuten gebraucht. Wenn ich nun auf diesen 20 Metern die mittlere Geschwindigkeit ansetze, dann verhält sich das hinsichtlich des Gesamtschnitts neutral.

In meinem ersten Beispiel habe ich mit den Geschwindigkeitsgrenzen 70km/h und 13km/h automatisch 4 Ampelstopps und 3 Trinkpausen rausgeschnitten. Die automatisch dargestellten Eckpunkte entsprechen in der korrigierten Form hinsichtlich Fahrzeit und Schnitt ziemlich exakt dem, was am Ende auf meinem Radcomputer stand (60.3 km, 2h:00m:40s Fahrtzeit und 30,09km/h Schnitt).
Gesamtstrecke : 60.092704
Gesamtzeit (unkorrigiert) : 02h:08m:34s
Gesamtzeit (korrigiert) : 01h:59m:41s
Schnitt (unkorrigiert) : 28.044301
Schnitt (korrigiert) : 30.126204

Für eine Stunde rumbasteln an dem Skript kann ich nun auf Knopfdruck automatisch einen beliebigen GPX-Track um Ampelstopps und Pausen kürzen. Je nach Strecke muss ich vielleicht an der Min-Geschwindigkeit ein bißchen rumschrauben, bis die korrigierte Fahrtzeit mit der am Radcomputer erfassten Fahrtzeit übereinstimmt. Beim nächsten Mal werde ich die Tour ohne die automatische Erfassung der Pausenzeiten fahren. Bin gespannt, da müsste das Tool eigentlich auch vernünftig mit umgehen können.

Wenn das Korrigieren auf Knopfdruck nicht möglich gewesen wäre, hätte ich wahrscheinlich das Erfassen der Touren mit dem Smartphone schnell wieder drangegeben. Was nützt es mir, wenn eine mit 30km/h gefahrene Tour je nach Ampelphasen und Pausenzeiten mal mit 26km/h, mal mit 28km/h erfasst wird? Wer das Skript haben möchte, kann es gerne von mir bekommen. Ist aber eher etwas für die computeraffineren Nerds unter uns...:)
 
Du kannst auch die Datei mit dem TCX Converter per Time GAP (am besten 15/0) - Ändere Track - Ändere Zeitspanne - korrigieren. Der Converter findet dann alle Pausen und bereinigt sie.

Das dauert alles nur ein paar Sekunden.
 
Du kannst auch die Datei mit dem TCX Converter per Time GAP (am besten 15/0) - Ändere Track - Ändere Zeitspanne - korrigieren. Der Converter findet dann alle Pausen und bereinigt sie.

Das dauert alles nur ein paar Sekunden.
Besten Dank für den Link. Habe nur mal ganz kurz in das Programm reingeschaut, sieht ganz vernünftig aus.

Nachdem ich mir aber selbst jetzt was programmiert habe, bin ich eigentlich wunschlos glücklich. Die Korrektur geht auch innerhalb weniger Minuten vonstatten und dadurch, dass ich alles in der mathematischen Umgebung Scilab zur Verfügung habe, habe ich auch den vollständigen Durchgriff und kann die Parameter zur Pausenerkennung an die entsprechenden Strecken anpassen.
 
Zurück
Oben Unten