KURVENGENUSS pur

wer Kurven will, sollte wissen wo sie sind

Font Size

Cpanel

Das GPX-Format – ein schneller Überblick

Die Tourenplanungssoftware sträubt sich vehement, die Datei mit der geplanten Tour zu öffnen. Im Navi ist die Datei mit der gerade übertragenen Tour nicht zu finden. Und nun? Jetzt ist es höchste Zeit, mal unter die GPX-Haube zu schauen.

GPX ist das Standard-Dateiformat für GPS-Daten. Entwickelt hat es die Firma Topografix. Die Dateien werden im allgemeinen mit der Endung *.gpx versehen und enthalten in strukturierter Form hauptsächlich Koordinaten (Längen- und Breitengrade) von Punkten auf der Erdoberfläche. Versehen mit zusätzlichen Informationen lassen sie die Tourenfahrerherzen höher schlagen.

GPX kann von nahezu jeder Tourenplanugssoftware zumindest gelesen werden. Die interne Struktur der Dateien basiert auf dem XML-Standard, der als reiner Text (UTF-8) daherkommt. UTF-8 ist quasi eine Erweiterung des ASCII-Zeichensatzes, der jedoch lediglich 256 Zeichen umfasst und daher mit nur einem Byte darstellbar ist. Die ersten 127 Zeichen sind bei ASCII und UTF-8 identisch. Da in diesen 127 Zeichen nahezu alle gebräuchlichen westeuropäischen Sonderzeichen, die Ziffern von 0 bs 9 und das Alphabet in Groß- und Kleinschreibung enthalten sind, unterscheiden sich zumindest englischsprachige Texte in beiden Zeichsätzen nicht. Deutsche Umlaute fehlen allerdings genauso wie das 'ß'. Dieses Manko behebt der UTF-8-Zeichsatz, da bis zu vier Byte pro Zeichen zur Verfügung stehen.

GPX-Dateien können mit jedem beliebigen Texteditor, der sich auf UTF-8 versteht, erzeugt, geöffnet, bearbeitet und gespeichert werden. Windows hat dafür bspw. 'Editor' oder 'WordPad' bereits an Bord. Wer ein anderes OS benutzt, kennt sicherlich den Editor seiner Wahl. Da sich der Dateiinhalt von GPX-Dateien dem Menschen nicht gerade auf den ersten und auch nicht auf den zweiten Blick erschließt, ist der Gebrauch geeigneter graphischer Software für die Darstellung der Daten in Karten üblich. Das erleichtert den Umgang damit erheblich. Ein kurzer Blick ins Innenleben von GPX kann alledings, wie eingangs schon erwähnt,  nicht schaden. Kleinere und auch größere Unfälle sind dann schnell behoben.

Das Innenleben - mal unter die Haube geschaut

GPX-Dateien enthalten definierte GPX-Elemente, in denen die eigentlichen Daten untergebracht sind. Der Strukturierung dienen, dem XML-Standard folgend, sogenannte Tags. Das einleitende Tag (nachfolgend als Beginn-Tag bezeichnet) markiert den Anfang und das abschließende Tag (nachfolgend als Ende-Tag bezeichnet) den Schluss eines GPX-Elements. Tags werden in spitzen Klammern notiert.

<Tag1>

    <Tag2>

         <Tag2.1 Daten2.1>

         </Tag2.1>

    </Tag2>

    <Tag3>Daten3</Tag3>

    <Tag4 Daten4 />

</Tag1>

Wie nebenstehend abgebildet, können Tags ineinander verschachtel verschachtelt sein, was bei GPX letzlich sogar die Regel ist. So beinhaltet bspw. Element 1(rot) alle weiteren Tags. Um in der Nomenklatur der Abbildung zu bleiben, bilden diese Tags sozusagen Daten1. Das Element 2.1 (blau) befindet sich innerhalb von Element 2 (grün) und entspricht daher Daten2. Daten2.1 steht direkt im Beginn-Tag des Elements 2.1. Diese Schreibweise ist eine weitere Auszeichnungsart. Die einzelnen Auszeichnungsarten hängen vom Typ der jeweiligen Daten ab.

Die Auszeichnungsart von Element 3 (violett) weicht nochmals von den bisherigen ab. Hier stehen die Daten zwischen Beginn- und Ende-Tag. Bei genauerer Betrachtung ist dies aber schon die bekannte Auszeichnungsart aus Element 1 und 2, nur dass hier keine weiteren Tags sondern Daten3 eingeschlossen sind. Element 4 (violett) zeigt eine Auszeichnungsart, bei der Bebinn- und Ende-Tag ein gemeinsames Tag bilden. Das Tag-Ende markiert hier der Slasch (/) am Schluss unmittelbar vor der abschließenden spitzen Klammer.

Tracks - die Fahrspuren

Anhand des folgenden kleinen und überschaubaren Beispiels soll die Struktur und der Inhalt einer GPX-Datei näher erläutert werden. Das mag zwar auf den ersten Blick zunächst etwas verwirrend aussehen, der Aha-Effekt stellt sich aber schnell ein.

<?xml version="1.0"?>
<gpx version="1.0" creator="Viking -- http://viking.sf.net/"
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">
<trk>
  <name>Beispiel</name>
  <trkseg>
  <trkpt lat="49.742528075802362" lon="9.0192027282714839">
    <name>Eisensteinstrasse</name>
    <time>2013-09-01T14:21:17Z</time>
    <sym>Flag, Blue</sym>
    <ele>161</ele>
  </trkpt>
  <trkpt lat="49.70859050141194" lon="9.0858073425292964">
  </trkpt>
  <trkpt lat="49.684110518906351" lon="9.0820307922363277">
  </trkpt>
</trkseg>
</trk>
</gpx>

Für eigene Forschungen obigen Text per copy and paste in einer Datei speichern, dort bearbeiten und dann in Deiner Planungssoftware öffnen.

GPX-Dateien beginnen immer mit der Definition der XML-Version. Alle weiteren Daten nimmt das gpx-Element, das von den Beginn- und Ende-Tags <gpx ...> und </gpx> umschlossen ist, auf. Wichtig ist hier zunächt  die Angabe der GPX-Version - in diesem Beispiel Version 1.0. Die Version 1.1 hat zwar schon vor langer Zeit das Licht der Welt erblickt, wird aber von mancher Planungssoftware - so z. B. MapSource und BaseCamp von Garmin - nicht unterstützt. Die Navis von Garmin können jedoch damit umgehen - da sollten sich die Entwicklerteams vielleicht mal absprechen.

Innerhalb des Elements 'gpx' folgt zunächst das Element 'trk'. Es wird von den Tags <trk> und </trk> umschlossen. 'trk' steht für Track. Die nachfolgenden GPX-Daten gehören also zu einem Track.  Ein Track ist eine chronologische Liste von Trackpoints, die eine Strecke beschreiben. Als nächstes folgt die Bezeichnung der Strecke im Element name. Dieses Element bildet oft den Beginn von Verwirrungen bei Nutzern von gpx-Dateien aus fremden Quellen (Downloads, etc.). Oftmals wird den Tracks, die weitergegeben werden, hier kein Name zugewiesen. Und die Nutzer gehen davon aus, dass der Dateiname auch der Name des Tracks ist. Das ist jedoch nicht der Fall. Die mit einer solchen Datei gefütterte Planungssoftware oder das Navi entwickeln dann Kreativität und verleihen dem ganzen einen für den Nutzer auf den ersten Blick nicht erschließbaren Namen. Im Ergebnis findet der Nutzer den Track in seinem Navi nicht, weil er denkt, es sei unter dem Dateinamen auffindbar, da die Geräte den Namen des Tracks allermeistens aus dem besagten Tag in der Datei ermitteln, und der kann dann recht zufällig ausfallen.

Ein Track <trk> kann aus einem oder mehreren Tracksegmenten - <trkseg> - bestehen, die wiederum die einzelnen Tags mit den Trackpoints enthalten - <trkpt Daten></trkpt>. Die darin angegebenen Daten geben die Koordinaten bestehend aus lat (Latidude = Breitengrad) und lon (Longitude = Längengrad) der jeweiligen Trackpoints an. Damit ist jeder Trackpoint eindeutig beschrieben. Innerhalb der Elemente für die Trackpoints können noch weitere Informantionen untergebracht sein. Stellvertretend sind einige davon dem ersten Trackpoint in obigem Beispiel zugeordnet.

Das Element name ermöglicht es, dem Trackpoint z. B. eine Ortsbezeichnung  - hier Eisensteinstrassw - zuzuordnen. Eine Zeitangabe folgt aus time. Mit sym wird festgelegt, welches Symbol an der Position des Trackpoints dargestellt werden soll. Die Höhenangabe übernimmt das Element ele. Wie gesagt, das sind zusätzliche Angaben, die nicht zwingend vorhanden sein müssen.

Routes - die Fahrstrecken

Will man anstelle eines Tracks eine Route beschreiben, ist eine solche aus obigem Beispiel schnell abgeleitet.

<?xml version="1.0"?>
<gpx version="1.0" creator="Viking -- http://viking.sf.net/"
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">
<rte>
  <name>Beispiel</name>
   <rtept lat="49.742528075802362" lon="9.0192027282714839">
    <name>Eisensteinstrasse</name>
    <time>2013-09-01T14:21:17Z</time>
    <sym>Flag, Blue</sym>
    <ele>161</ele>
  </rtept>
  <rtept lat="49.70859050141194" lon="9.0858073425292964">
  </rtept>
  <rtept lat="49.684110518906351" lon="9.0820307922363277">
  </rtept>
</rte>
</gpx>

Für eigene Forschungen obigen Text per copy and paste in einer Datei speichern, dort bearbeiten und dann in Deiner Planungssoftware öffnen.

Wie unschwer zu erkennen ist, wurden lediglich folgende Elemente umbenannt:

<trk> und </trj nach <rte> und </rte>

<trkpt ...> und </trkpt> nach <rtept ...> und </rtept>

Und das Element trkseg entfernt, da kein äquivalentes Element für Routen existiert.

Garmin-Navis akzeptieren nur Strecken im Route-Format. Mit solchen im Track-Format können sie nicht umgehen. Als XML-Dialektist GPX durch eigene Elemente erweiterbar. Diese Möglichkeit nutzt z. B. Garmin in den von ihren Produkten erzeugten GPX-Dateien. Solche Erweiterungen gehören allerdings nicht zum GPX-Standard und werden von Nicht-Garmin-Produkten einfach ignoriert. Die Darstellung reduziert sich dann auf die standardkonformen Elemente einer 'garminerzeugten' GPX-Datei. Obiges Beispiel verdeutlicht zudem, dass die Attribute wie name, time, etc. für Tracks und Routen identisch sind.

Waypoints - nur nichts links liegen lassen

Mit Waypoints werden einzelne Wegpunkte beschrieben. Das können z. B. markante Stellen entlang der Strecke sein, ein Hotel für die Nacht oder was auch immer man als Punkt beschreiben möchte. Wie sich der geneigte Leser sicherlich schon denkt, lässt sich auch das schnell aus unserem Beispiel ableiten.

<?xml version="1.0"?>
<gpx version="1.0" creator="Viking -- http://viking.sf.net/"
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">
  <wpt lat="49.742528075802362" lon="9.0192027282714839">
    <name>Eisensteinstrasse</name>
    <time>2013-09-01T14:21:17Z</time>
    <sym>Flag, Blue</sym>
    <ele>161</ele>
  </wpt>
  <wpt lat="49.70859050141194" lon="9.0858073425292964">
  </wpt>
  <wpt lat="49.684110518906351" lon="9.0820307922363277">
  </wpt>
</gpx>

Für eigene Forschungen obigen Text per copy and paste in einer Datei speichern, dort bearbeiten und dann in Deiner Planungssoftware öffnen.

Was hat sich gegenüber unserem Ausgangsbeispiel nun geändert?

Die Elemente trk und trkseg sind ersatzlos weggefallen, weil es keine analogen Elemente für Waypoints gibt, was auch ziemlich sinnfrei wäre. Nur die Elemente trkpt wurden in <wpt ...> und </wpt> umbenannt. Das war's dann auch schon. Wobei es natürlich wenig Sinn macht,  Waypoints nicht zumindest mit Namen zu versorgen.

Alles in einer Datei - handlich verpackt

Der Inhalt aller drei Dateien lässt sich selbstverständlich auch in einer Datei zusammengefassen. Da sowohl die XML-Version als auch das Element gpx unverändert blieben, können die restlichen Inhalte einfach oberhalb von </gpx> in eine Datei kopiert werden.

<?xml version="1.0"?>
<gpx version="1.0" creator="Viking -- http://viking.sf.net/"
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">
<trk>
  <name>Beispiel</name>
  <trkseg>
  <trkpt lat="49.742528075802362" lon="9.0192027282714839">
    <name>Eisensteinstrasse</name>
    <time>2013-09-01T14:21:17Z</time>
    <sym>Flag, Blue</sym>
    <ele>161</ele>
  </trkpt>
  <trkpt lat="49.70859050141194" lon="9.0858073425292964">
  </trkpt>
  <trkpt lat="49.684110518906351" lon="9.0820307922363277">
  </trkpt>
</trkseg>
</trk>


<rte>
  <name>Beispiel</name>
   <rtept lat="49.742528075802362" lon="9.0192027282714839">
    <name>Eisensteinstrasse</name>
    <time>2013-09-01T14:21:17Z</time>
    <sym>Flag, Blue</sym>
    <ele>161</ele>
  </rtept>
  <rtept lat="49.70859050141194" lon="9.0858073425292964">
  </rtept>
  <rtept lat="49.684110518906351" lon="9.0820307922363277">
  </rtept>
</rte>


<wpt lat="49.742528075802362" lon="9.0192027282714839">
    <name>Eisensteinstrasse</name>
    <time>2013-09-01T14:21:17Z</time>
    <sym>Flag, Blue</sym>
    <ele>161</ele>
  </wpt>
  <wpt lat="49.70859050141194" lon="9.0858073425292964">
  </wpt>
  <wpt lat="49.684110518906351" lon="9.0820307922363277">
  </wpt>
</gpx>

Für eigene Forschungen obigen Text per copy and paste in einer Datei speichern, dort bearbeiten und dann in Deiner Planungssoftware öffnen.

Das sollte zunächst einmal für das Verständnis der Struktur von GPX-Dateien - für den Hausgebrauch sozusagen - reichen. Wer sich eingehender mit dem Thema beschäftigen möchte, der sei auf die Seite der Enwickler von GPX - die Firma Topografix - verwiesen.