// GlobalSat DG-100 unter Linux nutzen

Um Rennradfahrten oder Alpentouren aufzuzeichnen verwende ich einen GlobalSat DG-100 GPS-Datenlogger (Produktvideo). Der Logger verfügt über internen Speicher für 60.000 Trackpoints und hält mit den mitgelieferten Akkus 20 Stunden durch. Über einen Schalter an der rechten Seite kann ein Logginginterval aus drei Modi ausgewählt werden. Die Schalterbelegung (A, B und C) kann frei konfiguriert werden.

Für Windows stellt der Hersteller natürlich ein Setuptool bereit. Dieses ist in meinen Augen ein Beispiel für schlechte Windowssoftware und dem entsprechend nicht gerade angenehm zu bedienen. Der Linuxuser kann auf Tools wie globdog-dg100, dg100util, DG100 GPS Driver oder GPSBabel zurückgreifen.

Konfiguration des Loggers: globdog-dg100

Zur Konfiguration des Loggingformats und Intervalls verwende ich globdog-dg100. Dieses Tool bietet darüber hinaus die Möglichkeit die Tracks exportieren und den Logger als GPS-Maus zu verwenden.
Zunächst habe ich die Intervalle wesentlich verkleinert. In Mode C wird in meinen Einstellungen jede Sekunde ein Trackpoint gesetzt, was sich gut für Autofahrten und Rennradtouren eignet (hier ein Beispiel), in Mode B alle 5 Sekunden. Mit dieser Einstellung hält der Logger problemlos drei Tourentage in den Alpen durch (hier ein Beispiel).
Außerdem habe ich das Format so geändert, dass nun auch die Geschwindigkeit und die Höhe mitgeloggt werden und nicht nur die Position wie in der Standardeinstellung.

Export der Tracks: GPSBabel

Alle oben aufgezählten Tools können Tracks vom Logger exportieren. Meine Wahl fiel aber auf GPSBabel, da ich eine einfache CLI-Lösung benötige, die in Shellskripte integriert werden kann. GPSBabel bietet eine sehr einfache Möglichkeit die Tracks als GPX zu exportieren:

$ gpsbabel -t -i dg-100 -o gpx /dev/ttyUSB0 outputfile.gpx          # Track exportieren, aber nicht löschen
$ gpsbabel -t -i dg-100,erase -o gpx /dev/ttyUSB0 outputfile.gpx    # Track exportieren und löschen
$ gpsbabel -t -i dg-100,erase_only /dev/ttyUSB0                     # Track löschen

Dabei werden leider über den Knopf an der Vorderseite gesetzte Waypoints ebenfalls als Trackpoints exportiert – was mich nicht stört, da ich diese Funktion nicht verwende.

// GPSBabel: CSV in GPX umwandeln

Von der letzten Alpentour habe ich ein Haufen GPS-Tracks in Form von CSVs, die ich in GPX-Dateien umwandeln möchte, damit ich sie in meinem lokalen phpMyGPX hochladen kann. Für die Konvertierung bietet sich das Tool GPSBabel an. Meine CSVs haben folgende Stuktur:

name               , latitude, longitude, elevation
08/09/2013 10:42:29, 46.46014,   9.93731, 1873.90
08/09/2013 10:42:30, 46.46015,   9.93730, 1873.40
08/09/2013 10:42:31, 46.46015,   9.93730, 1873.00

Die Syntax für GPSBabel lautet:

$ gpsbabel [options] -i INTYPE -f INFILE -o OUTTYPE -F OUTFILE

Für INTYPE und OUTFILE muss ein passendes Format ausgewählt werden. Dies wäre für OUTFILE natürlich gpx, für INFILE habe ich zuerst xcsv und schließlich unicsv gewählt.

Erster Ansatz: XCSV Format

Zunächst habe ich ein im folgenden ersichtliches XCSV Style File erstellt, um die Daten mit dem XCSV Format zu konvertieren. Die Dokumentation zu den Parametern findet sich in der Dokumentation von GPSBabel.

# gpsbabel XCSV style file

DESCRIPTION	Comma separated values
SHORTLEN	8

#
# FILE LAYOUT DEFINITIIONS:
#
FIELD_DELIMITER		COMMASPACE
RECORD_DELIMITER	NEWLINE
BADCHARS		COMMA

#
# INDIVIDUAL DATA FIELDS, IN ORDER OF APPEARANCE:
#
IFIELD 		GMT_TIME,		"",	"%m/%d/%Y %H:%M:%S"	#08/10/2013 13:49:14
IFIELD		LAT_HUMAN_READABLE, 	"", 	"%08.5f"
IFIELD		LON_HUMAN_READABLE, 	"", 	"%08.5f"
IFIELD  	ALT_METERS,		"",	"%3.0fM"

Mein Ansatz war dann den CSV-Track in ein GPX-File umzuwandeln:

$ gpsbabel -i xcsv,style=test.style -f test.csv -o gpx -F test.gpx

…was aber eine GPX-Datei mit Waypoints zurückgibt. Leider kann GPSBabel mit XCSV nur Waypoints lesen:

$ gpsbabel -t -i xcsv,style=test.style -f test.csv -o gpx -F test.gpx
XCSV attempt to read test.csv as a track or route, but this format only supports waypoints on read.  Reading as waypoints instead.

Also habe ich probiert die Waypoints beim Umwandeln gleich in einen Track zu „transformieren“:

$ gpsbabel -i xcsv,style=test.style -f test.csv -x transform,trk=wpt -o gpx -F test.gpx

Diese Lösung war aber auch nicht von Erfolg gekrönt war – es kamen wieder nur Waypoints raus :-(

Die Lösung: Universal csv Format

Zum Glück bin ich dann auf das Universal csv Format von GPSBabel gestoßen, was die Spalten direkt an der Headline erkennt und CSV-Dateien auch als Tracks lesen kann. Dazu musste ich die erste Zeile der CSV-Datei wie folgt ändern:

utc_t              , lat     , lon      , elevation
#name               , latitude, longitude, elevation
08/09/2013 10:42:29, 46.46014,   9.93731, 1873.90
08/09/2013 10:42:30, 46.46015,   9.93730, 1873.40
08/09/2013 10:42:31, 46.46015,   9.93730, 1873.00

Anschließend konnte ich ein erstes Testfile erfolgreich konvertieren:

$ gpsbabel -t -i unicsv -f test.csv -o gpx -F test.gpx

Das Ergebnis ist eine brauchbare GPX-Datei des Tracks:

<?xml version="1.0" encoding="UTF-8"?>
<gpx
  version="1.0"
  creator="GPSBabel - http://www.gpsbabel.org"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://www.topografix.com/GPX/1/0"
  xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
<time>2013-08-13T18:40:02Z</time>
<bounds minlat="46.415400000" minlon="9.924930000" maxlat="46.460160000" maxlon="9.941560000"/>
<trk>
<trkseg>
<trkpt lat="46.460140000" lon="9.937310000">
  <ele>1873.900000</ele>
  <time>2013-08-09T10:42:29Z</time>
</trkpt>
(...)

Um das nun nicht mit jeder Datei einzeln machen muss, konvertiere ich die CSV-Files, die ich einem extra Order abgelegt habe, mit einer einfachen For-Schleife:

$ for i in $(ls *.csv) ; do gpsbabel -t -i unicsv -f $i -o gpx -F ${i%csv}gpx ; done
Hello World!

This is the personal website of Christoph Winkler.
Here you will find a sort of blog and some information about me and my projectshave fun!

Recent Comments
Latest Tweets
QR-Code: aktuelle Seiten-URL
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 3.0 Unported