Geocaching auf Kommandozeile

Dieser Blogeintrag ist primär für mich selbst, damit ich nicht später nicht wieder alles neu raussuchen muss.

Bei der Suche nach einer Möglichkeit, alle Caches einer Umgebung als gpx-Datei abspeichern zu können (für das Outdoor-Navi und das Smartphone), ohne die wirklich katastrophale und darüberhinaus kostenpflichtige Variante der Personal Queries von Groundspeak zu verwenden, bin ich auf “geo-*: Rick Richardson’s Linux tools for geocaching” gestoßen.

Als Kurzzusammenfassung kann ich schonmal festhalten: kein Clicki-Bunti (oder wie der Autor schrieb: “clickly-clicky-scroll-clicky-clicky messes”), sondern wirklich ein brauchbarer Werkzeugkasten für alle möglichen cachologischen Bedürfnisse.

Unter Linux tar-Archiv herunterladen, auspacken, kompilieren. Sollte in etwa so aussehen:

# als root
cd /opt
wget http://geo.rkkda.com/geo-13-05-05-10-32-06.tar.gz
tar xvfz geo-*.tar.gz
chown -R {user} geo

# als {user}
cd /opt/geo
make
PREFIX=/opt/geo make install
export PATH=${PATH}:/opt/geo/bin

Dann die Datei $HOME/.georc (wird automatisch beim ersten Aufruf eines der Tools generiert) editieren/ausfüllen. Achtung: beim Passwort berücksichtigen, dass Sonderzeichen prozentkodiert werden müssen (hat mich einigen Code-Review gekostet, das herauszufinden).

Wenn alles glattgegangen ist, kann man nun z.B. alle max. 500 Geocaches vom Typ “traditional” im Umkreis von 5 Meilen um das Zentrum von Ottawa (N45.422069, W75.684801) folgendermaßen suchen:

geo-nearest -f -m -s -n500 -r5M -H /tmp/geo/ottawa 45.422069 -75.684801 trad
# -f          Do not report any found or unavailable caches
# -m          Do not report any members-only caches
# -s          Output short names for the caches (gpsbabel option)
# -n num      Return "num" caches [20]
# -r radius   Display only caches with radius (e.g. -r 25M)
# -H htmldir  Also fetch the printable HTML pages (slowly)

Durch das “-H” werden die Druck-HTML-Seiten geladen und gespeichert (während des Programmlaufes zunächst in $HOME/.geo/caches; erst wenn alle Seiten geladen wurden, werden die Dateien ins angegebene HTML-Verzeichnis kopiert – um einen Fortschritt zu sehen, muss man also erstgenanntes Verzeichnis überwachen).

Um nun aus diesen HTML-Dateien eine GPX-Datei zu erzeugen, ist ein weiterer Schritt nötig:

geo-html2gpx -b -w /tmp/geo/ottawa/*.html > /tmp/geo/ottawa.gpx
# -b          Normalize output by postprocessing with gpsbabel
# -w          Do not add "Additional Waypoints" to the GPX output

Das “-b” ist wichtig! Nur dann kann man die GPX-Datei auch unter Android in c:geo einlesen, was ungemein wichtig ist, falls man in ein Gebiet ohne Netzabdeckung fährt (oder wie in meinem Fall in ein Gebiet, für das man keine SIM-Karte hat).

Bin bis jetzt begeistert von den Tools und gespannt, wie weit ich in Kanada mit den generierten GPX-Dateien komme…