DE:Using filters with GPSBabel
Diese Seite beschreibt, wie man mit dem Programm GPSBabel mittels Filter GPX-Spuren editieren kann. Weitere Information zum Thema findet sich hier (englisch).
GPSBabel ist ein Kommanozeilenprogramm. Programme mit graphischen Benutzeroberflächen finden sich auf dieser Seite.
Einführung
GPSBabel kann GPX-Dateien filtern. Das Programm kann Spuren, Routen und Wegpunkte modifizieren. Nicht alle Filter stehen für alle drei Datenarten zur Verfügung, bitte ggf. vorher capabilities page (englisch) prüfen, ob die benötige Funktion vorhanden ist.
Der Filterparameter wird zwischen Eingabe- und Ausgabedatei angegeben, und zwar in folgendem Format:
-x <filter_name>,<filter_parameter1>,<filter_parameter2>...
Parsingfehler in JOSM
GPSBabel kann GPX-Dateien erzeugen, die JOSM nicht laden kann. Es erscheint folgende Fehlermeldung:
Im Fehlerfenster: ''Could not parse file'' Auf der Konsole: ''The prefix "gpxdata" for element "gpxdata:hr" is not bound''.
In diesem Fall kann man sich damit behelfen, alle Strings "gpxdata:" aus der GPS-Datei herauszufiltern. Auf einem UNIX-System geht das mittels folgendem Befehl:
sed 's/gpxdata://g' IN.gpx > OUT.gpx
Punkte innerhalb eines angegebenen Radius einschließen
Das folgende Filter arbeitet mit zwei GPX-Dateien als Eingabe und Ausgabe. Es gibt alle Wegpunkte der Dateien way_iii.gpx und way_rino.gpx, die sich in einem Radius von 5 Meilen um 40.75N, 119.25 W herum befinden, in eine Datei merge.gpx aus.
gpsbabel -i gpx -f way_iii.gpx -f way_rino.gpx \ -x radius,distance=5M,lat=40.75,lon=-119.25 \ -o gpx -F merge.gpx
Punkte innerhalb eines angegebenen Radius ausschließen (Datenschutz)
Wenn Du Spuren hochlädst, könntest (oder solltest) Du Dir Gedanken darüber machen, daß Anfangs- und Endpunkte Deiner Weges einfach und genau bestimmt werden können und die genauen Zeiten dazu. Das ist Dir möglichweise nicht recht, weil das Orte sind, an denen Du oder Deine Familie leben und arbeiten.
Die folgende Eingabe schließt alle Wegpunkte innerhalb eines Kreises von 1 km Radius um diese "privaten Orte" aus. Bitte passe Deine Koordinaten und den Radius an die von Dir gewünschten Werte an.
gpsbabel -i gpx -f in.gpx \ -x transform,wpt=trk,del \ -x radius,distance=1K,lat=40,lon=10,nosort,exclude \ -x transform,trk=wpt,del \ -o gpx -F out.gpx
Man kann mehrere Kreise filtern, den Befehl "-x radius" also mehrfach angeben, z.B.:
- wenn Du mehrere Brennpunkte hast (Zuhause, Arbeitsplatz, Freunde ...)
- Glaubst Du, daß sie hinter Dir her sind? Wenn Du Deine Spuren mit genau einem Kreis filterst und mehrere Spuren hochlädtst, ist es ziemlich einfach, sich das abgeschnittene Stück Weg dazuzudenken und so Deinen Brennpunkt zu finden. Wer das fürchtet, kann ja mehrere Filterkreise mit wechselnden Mittelpunkten um den eigentlichen Brennpunkt herum anordnen.
Alle gespeicherten Spuren entfernen
Auf Garmin-Geräten kann man alte Spuren komprimiert speichern. Diese Spuren werden stets heruntergeladen, wenn sie nicht weggefiltert werden. Weil sie ohne Zeitstempel und komprimiert gespeichert sind, können sie in JOSM Ärger machen, wenn man Bilder georeferenzieren will. Das folgende Filter behält nur die Spuren, die im Titel das Wort ACTIVE aufweisen.
-x track,name="ACTIVE *"
Doppelte und nahe Punkte löschen
Zum Löschen doppelter Punkte benutzt man folgendes Filter:
-x duplicate,location
Zum Löschen von Punkten, die nicht weiter als 5 Meter vom vorherigen Punkt entfernt sind, verwendet man folgendes Filter:
-x position,distance=5m
Bogenfilter
Man kann mit folgendem Filter eine Spur zu einer GPSBabel-Bogendatei konvertieren und dann Wegpunkte basierend auf ihrer Nähe zu diesem 'Bogen' oder zu dieser Route herausfiltern:
'-x arc filter'.
Spuren vereinfachen
Man kann mit GPSBabel ganz einfach eine Spur auf eine vorgegebene Anzahl Wegpunkte vereinfachen. Je nach Spur beeinträchtigt das die Genauigkeit kaum. Auf meinen Fahrradtouren zeichnet mein GPS-Empfänger 2 Punkte/s auf. Ich konnte ohne große Auswirkungen eine Spur von 8000 Punkten auf 400 Punkte eindampfen, ja sogar auf 100.
gpsbabel -i gpx -f way_iii.gpx \ -x simplify,count=400 \ -o gpx -F merge.gpx
Eine andere Option ist das "Übersprech"-Filter. Es löscht Punkte aus der Spur, die nahe genug an einer Linie zwischen den beiden Nachbarpunkten liegen. Die Form der Gesamtspur beeinträchtigt das kaum. Vergleicht man die beiden Kompressionsverfahren, dann dampft das obige Filter eine Spur auf eine bestimmte Anzahl Punkte ein (und akzeptiert dabei eine gewisse Verschlechterung der Form der Spur), während das folgende Filter in jedem Fall die Form der Spur erhält, unabhängig von der Zahl der Wegpunkte. Punkte werden gelöscht, wenn sie weniger als 1 Meter (0,001 kilometer) außerhalb der Spur liegen.
gpsbabel -i gpx -f way_iv.gpx \ -x simplify,crosstrack,error=0.001k \ -o gpx -F merge.gpx
Auch mit Potlatch kann man eine Spur vereinfachen. Das geht so: Spur auf OSM hochladen, dann "bearbeiten" clicken (und zwar bei der Spur, nicht oben auf der Seite), und dann auf Track clicken, wenn Potlatch anläuft.
Unsichere Punkte entfernen
-x discard,hdop=4
Zeitfilter
Nur Daten ausgeben, die nach 2008-07-23 20:00 aufgezeichnet sind:
gpsbabel -t -w -i garmin -f /dev/ttyUSB0 -x track,start=2008072320 -o gpx -F waypoint.gpx
Spuren zusammenführen
Man kann mit folgendem Befehl mehrere GPX-Dateien zu einer zusammenführen (Das führt die Spuren nicht echt zusammen, sondern erzeugt eine Datei, die mehrere Spuren enthält):
gpsbabel -t -i gpx -f track1.gpx -f track2.gpx -f track3.gpx -o gpx -F combined-tracks.gpx
Statt jede einzelne GPX-Datei einzeln aufzuführen, kann man auch ein Skript wie dieses verwenden.
#!/bin/bash # append multiple gpx files easily gpsbabel -i gpx $(echo $* | for GPX; do echo -n " -f $GPX "; done) \ -o gpx -F appended.gpx