Outdoor Navigation mit Linux und Garmin Legend HCx

November 1, 2009

HOWTO: OSM-Karte für QLandkarteGT aufbereiten

QLandkarteGT ist ein sehr nützliches Landkartenprogramm für Linux, dass in der Lage ist, GARMIN-Karten auf dem PC darzustellen. Das Programm ist darüberhinaus in der Lage, Tracks im gpx-Format vom Garmin zu importieren und auf der Karte darzustellen. Es stellt außerdem Möglichkeiten zur Verfügung, diese Tracks zu editieren (überflüssige Teile wegschneiden etc.). QLandkarteGT kann GARMIN-Karten (gmapsupp.img) nicht direkt darstellen, sondern benötigt hierfür eine *.tdb-Datei. Ich habe bisher keinen Weg gefunden, aus einer gmapsupp.img direkt eine *.tdb zu erzeugen. Was funktioniert, ist der Umweg über eine Openstreetmap-Karte (*.osm). Naja, eigentlich ist das ja auch die Quelle der imagesupp.img. Folgende Schritte sind also notwendig:

  1. Download einer Openstreetmap-Karte (z. B. von GEFABRIK)
  2. Erzeugung einer *.tdb-Datei mit folgendem Befehl
    mkgmap karte.osm --tdbfile --gmapsupp
  3. Ggf. muss man sich das Programm mkgmap zuvor noch installieren (Homepage)

Linux (Ubuntu) Vorbereitungen

Anschluss des Navis an den Rechner via USB und Zugriff über das Dateisystem:

  1. Die oben verlinkten Ubuntu Einstellungen durchführen
  2. Auf dem Navi “Hauptmenü | Einstellungen | Schnittstelle | USB Massenspeicher” aktivieren

Das Garmin HCx verfügt allerdings nur über eine USB 1.1 Schnittstelle, d. h. dieser Weg ist nur für das Kopieren kleinerer Dateien geeignet (z. B. von Waypoints im *.gpx-Format). Für größere Uploads empfiehlt es sich, die Speicherkarte über ein Speicherkartenlesegerät direkt zu beschreiben.

HOWTO: Daten vom Navi auf den Rechner holen (und umgekehrt)

Dafür gibt es viele Möglichkeiten:

1. Mit gpbsbabel (MarchK’s Tipps hierzu)

gpsbabel -D9 -w -i garmin -f usb: -o gpx -F WP.gpx
Holt alle waypoints vom Garmin.
gpsbabel -D9 -t -i garmin -f usb: -o gpx -F TP.gpx
Holt alle tracks vom Garmin.
gpsbabel -t -i gpx -f route.gpx -x simplify,count=500 \
         -o gpx -F route-simplified.gpx
Reduziert die Anzahl der Waypoints einer Route / eines Tracks auf 500.
gpsbabel -D9 -t -i gpx -f route.gpx -o garmin \
         -F usb: > debug.txt
Sendet route.gpx als Track zum Garmin.
gpsbabel -i gpx -f NAME.gpx -o garmin -F usb:
Sendet NAME.gpx (z. B. mit Waypoints oder Geocaches) zum Garmin.
gpsbabel -t -i garmin -f usb: \
         -o kml,points=0,line_color=ff0000ff \
         -F Track.kml
Holt tracks vom Garmin und konvertiert sie in KML.

Bei mir funktioniert das leider derzeit nur als root (dem Befehlsaufruf “sudo” voranstellen).

Die Optionen bedeuten:

  • -D9 = Debuglevel (damit man Fehlermeldungen erhält, falls was schief läuft)
  • -w = es geht um Waypoints
  • -t = es geht um Tracks
  • -i = input Typ
  • -f = input Datei (oder Gerät)
  • -0 = output Typ
  • -F = output Datei

sieht a bisserl kompliziert aus, ist aber eigentlich einfach und logisch.

HOWTO: Massenweise Geocaches von geocache.com holen und auf das Navi schieben

Hierfür eignen sich die genialen geo-xxx-Tools von Rick Richardson hervorragend. Homepage: http://geo.rkkda.com/ . In der Tool-Suite gibt es 5 Skripte, mit denen Geocache-IDs von geocache.com abgefragt werden können:

geo-found	gibt Geocache-IDs aus (gefunden von irgendeinem geocache.com-User)
geo-placed	gibt Geocache-IDs aus (platziert von irgendeinem geocache.com-User)
geo-nearest	gibt Geocache-IDs der nächstgelgegenen Geocaches aus
geo-newest	gibt Geocache-IDs der neuesten Geocaches aus (in einem Land)
geo-keyword	gibt Geocache-IDs aus, die ein "keyword" enthalten.

Optionen für die geo-xxx-Tools können sowohl auf der Kommandozeile übergeben werden, als auch in der geo-Konfigurationsdatei “.georc” abgelegt werden. Dies empfiehlt sich für Standardoptionen, die ständig gebraucht werden. Bei mir sieht diese Datei folgendermaßen aus:

# .georc Konfigurationsdatei für geo-xxx tools
PASSWORD="xxx"
USERNAME="schreberpeter"
LAT=n52.24.059
LON=e09.45.503
 

Wann immer von einem der geo-xxx-Tools ein Username und ein Passwort sowie eine Positionsangabe benötigt wird, werden diese Informationen aus dieser Datei übernommen (sofern nicht explizit entsprechende Optionen auf der Kommandozeile übergeben werden). Bei dem folgenden Aufruf sind diese Optionen daher implizit schon gesetzt (spart  ‘ne Menge Schreibarbeit):

geo-nearest -n 5

Der Aufruf holt die IDs der Geocaches, die den angegebenen Koordinaten (meinem zu Hause) am nächsten liegen. Die Rückgabe des Aufrufs:

GC1V522 52.40087 09.75447 Geocache-multi
GC10WW9 52.39773 09.75958 Geocache-multi
GC1TV9N 52.39868 09.75387 Geocache-regular
GC1J494 52.39618 09.76368 Geocache-unknown
GC17Y55 52.39750 09.74917 Geocache-unknow 

Die anderen Tools liefern entsprechende Rückgaben. Mit Hilfe des Tools “geo-gpx” kann ich mir jetzt für eine (oder mehrere) GeoCache IDs (GXxxxxx) Detail-Informationen im gpx-Format holen:

geo-gpx -ogpx -OGC1V522.gpx GC1V522

Der Befehl liefert als Rückgabe eine Datei “GC1V522.gpx” mit alle Informationen, die ich auch auf den Webseiten von geocaching.com zum Geocache “GC1V522″ abfagen kann (im gpx-Format; einem XML-Format). Diese gpx-Datei kann nun problemlos mit gpsbabel (s. o.) auf das Navi laden.

Die folgenden beiden Befehle verketten den Vorgang: es werden in einem Schritt die 500 nächstgelegenen Geocache-IDs geholt und und die Detail-Informationen für alle 500 Geocaches in die Datei nearest.gpx geschrieben. Diese wird dann mit gpsbabel auf das Navi kopiert:

geo-gpx -ogpx -Onearest.gpx $(geo-nearest -n 500 | awk '{print $1}')
sudo gpsbabel -i gpx -f nearest.gpx -o garmin -F usb:

Und Schwubs, hat man 500 Geocaches auf dem Navi :-)

Jetzt brauchen wir noch die ausführlichen Beschreibungen Human-readable (also z. B. im HTML-Format, damit diese mit einem Browser betrachtet werden können). Hierfür gibt es zwei Möglichkeiten:

1. HTML aus GPX mit gpsbabel (diese Variante hat schwerwiegende Nachteile, s. u.)

gpsbabel -D9 -i gpx -f nearest.gpx -o html -F nearest.html # Lösung problematisch, besser: gpx2html !

Nachteil der gpsbabel-Lösung: Es wird eine (ggf. sehr große) HTML-Datei erzeugt. Das kann zu Schwierigkeiten führen, diese auf leistungsschwächeren Pocket-PC’s mit angemessener Geschwindigkeit (oder überhaupt) darzustellen. Außerdem ist es bei mir in mehreren Fällen vorgekommen, dass nur einige der GeoCaches in die HTML-Datei aufgenommen wurden und die Erstellung dann abgebrochen wurde. Dabei kam es nicht zu Fehlermeldungen, sodass ich das erst unterwegs bemerkt habe (zu meinem besonderen Verdruß, weil ich vom Geocachen unverrichteter Dinge wieder heim kehren musste).

2. HTML aus GPX mit geo-Tools (gpx2html)

gpx2html *.gpx

Die gpx2html-Lösung hat gleich mehrere Vorteile (weshalb ich sie präferiere und empfehle):

  • Die Syntax des Aufrufs ist deutlich einfacher.
  • Es können mit einem Aufruf gleichzeitig HTML-Dateien für mehrere geocaching-gpx-Dateien erzeugt werden
  • Diese werden nicht in einer (ggf. riesigen) HTML-Datei zusammengefasst, sondern für jeden GCxxxxx wird eine eigene HTML-Datei erzeugt, sodass das Lesen auch auf schwachbrüstigen Rechnern keine Schwierigkeiten macht.
  • Da hierbei ein Verzeichnis mit (u. U. sehr) vielen HTML-Dateien entsteht (und so etwas kann auf Pocket-PCs dann auch wiederum zu Schwierigkeiten führen), wird eine Hauptseite “index.html” angelegt, von der aus die einzelnen GCxxxxx.html Dateien verlinkt werden. Dieses Layout lässt sich performant und komfortabel auch auf leistungsschwächeren Geräten lesen.
  • Als Convenience-Funktion werden zusätzliche Indizes erstellt:
    • Nach ID sortiert
    • Rückwärts nach ID sortiert
    • Nach Datum des letzten Logs auf geocaching.com sortiert
    • Liste von Geocaches mit Travel Bugs
    • Liste der noch nie gefundenen Geocaches
  • In die HTML-Dateien werden auch alle Log-Einträge aufgenommen (die manchmal ja zum Auffinden des Caches durchaus nützlich sein können)

Die HTML Beschreibungen der Geocaches kann man sich auf seinen Palm schieben, auf sein Nokia-Tablet, sein Netbook oder was immer man beim Geocachen so mitnimmt. Und hat dann alle ausführlichen Informationen (samt aller Hints!) immer dabei. Cool :-)

HOWTO: Routen erstellen und (als Track) auf den Garmin laden

  1. Route auf Openrouteservice.org erstellen.
  2. Diese als gpx-Datei downloaden.
  3. Route auf max. 500 Waypoints kürzen. Das geht so:
    gpsbabel -t -i gpx -f route.gpx -x simplify,count=500 -o gpx -F route-simplified.gpx
  4. Route als Track auf den Garmin laden. Das geht so:
    gpsbabel -D9 -t -i gpx -f route-simplified.gpx -o garmin -F usb: > debug.txt
  5. Ein Upload als Route empfiehlt sich nicht (weil der Garmin das dann als hunderte von Waypoints darstellt und die Sache damit sehr unübersichtlich wird).

HOWTO: Koordinaten für eine Adresse finden

Weitere Ressourcen

Todo

5 Responses to “Outdoor Navigation mit Linux und Garmin Legend HCx”

  1. Hallo, sehr schöne zusammenfassung was mit Linux/Garmin alles geht. Aber zu geo hab ich mal eine Frage, geht das nur mit einen Premium-Account von gc.com?

    Gruß Jochen

  2. Hallo das geo-xxx Tool ist Super, leider findet er bei mir dos2unix nicht, habe Ubuntu 9.10 drauf. Gibts da eine Lösung?

    Gruß jochen

  3. [...] http://blog.p-mt.net/archives/353 [...]

  4. Hallo Jochen,

    Folgende bash Aliases sollten das Problem lösen (eintragen z. B. in /etc/bash.bashrc oder in /etc/profile)
    alias dos2unix=’recode ibmpc..lat1′
    alias unix2dos=’recode lat1..ibmpc’

    … bei Aufruf welchen Programms hast Du das Problem? … Ist mir noch nicht unter gekommen.

    Liebe Grüße, Peter

  5. Hallo Jochen,

    ja, manche geo-tools setzen einen Premium-Account bei gc.com voraus. Hat mich auch gestört. Ich war aber zu faul für andere Lösungen und habe mich aus Bequemlichkeit freigekauft.

    Liebe Grüße, Peter

Leave a Reply