Einträge mit dem Tag ‘gpx’

Papierloses Cachen 2: Cachemate

Dirk am 27. März 2008

Im Artikel über papierloses Cachen habe ich bereits ein paar Worte über Cachemate verloren, ein (kommerzielles) Tool wie etwa auch GpxView oder GPXSonar. Es importiert GPX-Dateien oder LOC Dateien z.B. von opencaching.de oder geocaching.com oder von einem der diversen Tools wie Cachewolf, die die o.a. Seiten spidern und zeigt die Informationen über die in den GPX-Dateien an. Erstehen kann man das Tool hier, ich habe gute 5 EUR bezahlt, der Dollar steht für solche Käufe zur Zeit ziemlich gut.

Cachemate ÜbersichtDer nebenstehende Screenshot zeigt die Übersicht des Programms, so siehts nach dem starten aus (zumindest wenn man denn schon ein paar Caches auf den PDA geladen hat). Man sieht eine Liste der Caches. Diese ist eventuell gefiltert, filtern kann man nach Namen oder nach Entfernung zu einem bestimmten Punkt (wenn ein GPS am PDA angeschlossen ist, auch zu der aktuellen Position).

Der Cachemate interpretiert auch spezielle geocaching.com Tags im GPX-Format, z.B. sieht man hier in der ersten Spalte angezeigt, welche Caches Travelbugs enthalten. Der grüne Pfeil zeigt an, dass ich den Cache von der Reihe Kölnopoly Göthestraße bereits gefunden habe.

Unten in der Leiste sieht man einige Logos, unter anderem zwei mit rotem Pfeil. Diese beiden sind zum exportieren und importieren von GPX-Dateien. Den Import möchte ich hier noch etwas genauer beschreiben:

Import von GPX-Dateien

Nach dem Klick auf das Importicon klickt man nochmal auf Start, um den Import von GPX bzw. LOC-Dateien zu bestätigen, und wählt dann eine entsprechende Datei aus (wie im nebenstehenden Bild. Nachdem man die angeklickt hat, erledigt Cachemate den Rest, die in der Datei enthaltenen Waypoints werden importiert und in der internen Datenbank abgelegt.

In der Übersichtsliste erscheinen ab sofort alle in dem Track enthaltenen Caches.

Weiterhin bietet Cachemate die Möglichkeit, die Liste nach der Entfernung zur aktuellen Position zu filtern. Hat man am PDA kein GPS-Gerät angeschlossen, kann man die aktuelle Position auch manuell angeben, es werden dann nur die Caches im Umkreis um die dort angegebene Position angezeigt. Weiterhin kann das Tool natürlich auch nach Namen suchen oder nach bestimmten Kriterien sortieren.

Die verschlüsselten Hints werden auch verschlüsselt angezeigt, können bei Bedarf aber auch entschlüsselt werden.

Google Maps Karte einbinden (Teil 2)

Dirk am 21. März 2008

Im letzten Artikel habe ich beschrieben, wie man eine einfach Google Maps Karte in seine eigene Webseite integriert. Aufbauend auf dem Artikel werden wir nun eine erweiterte Karte generieren, diesmal wird eine Linie mit mehreren Punkte erzeugt.

In dem Artikel erwähnte ich ja bereits, dass man eine Polyline zwischen beliebig vielen Punkten einzeichnen kann. Folgende Methode nutzten wir, um eine Polylines zwischen zwei Punkten einzuzeichnen:

var polyline = new GPolyline([
    new GLatLng(50.864803, 7.003784),
    new GLatLng(50.936255, 6.959152)
], "#ff0000", 10);

Auf ähnliche Weise wollen wir nun eine Tour aus einer GPX-Datei in der Karte anzeigen. Zunächst sehen wir uns dazu einen Ausschnitt aus einer GPX-Datei ein. GPX ist ein XML-basiertes Format, und damit auch menschenlesbar:

  <trk>
    <name>ACTIVE LOG</name>
    <trkseg>
      <trkpt lat="50.8832728" lon="6.9834976">
        <ele>44.3580322</ele>
        <time>2008-03-18T13:13:50Z</time>
      </trkpt>
      <trkpt lat="50.8832509" lon="6.9833117">
        <ele>44.8386230</ele>
        <time>2008-03-18T13:13:59Z</time>
      </trkpt>
      <trkpt lat="50.8832505" lon="6.9832326">
        <ele>44.3580322</ele>
        <time>2008-03-18T13:14:03Z</time>
      </trkpt>
      <trkpt lat="50.8832217" lon="6.9831215">
        <ele>43.3966064</ele>
        <time>2008-03-18T13:14:08Z</time>
      </trkpt>
      [...]
    </trkseg>
  </trk>

Ich habe den Anfang der GPX-Datei weggelassen, wir steigen direkt in das XML-Tag <trk> ein. Dieses Element enthält einen vom GPS aufgezeichneten Track. Innerhalb des <trkseg> Knotens sieht man alle <trkpt> Knoten, dieses sind die einzelnen vom GPS aufgezeichneten Position, inklusive Uhrzeit (diese kann zum Beispiel genutzt werden, um Fotos mit den Koordinaten zu verknüpfen, beim sogenannten Geotagging). Hat man das GPS-Gerät also so konfiguriert, dass solche Tracks aufgezeichnet werden, könnte man sich die Datei in einem Texteditor öffnen, die Koordinaten rauskopieren und dann in Liste von GLatLng Objekte kopieren, etwa so:

var polyline = new GPolyline([
    new GLatLng(50.8832728, 6.9834976),
    new GLatLng(50.8832509, 6.9833117),
    new GLatLng(50.8832505, 6.9832326),
    new GLatLng(50.8832217, 6.9831215)
], "#ff0000", 10);

Das ist natürlich bei langen Tracks recht langwierig, außerdem wird das Skript dadurch sehr lang. Daher bietet Google die Möglichkeit, Polylines über eine andere Methode zu erzeugen. Die Punkte werden dazu nach einem bestimmten Algorithmus enkodiert. Der Algorithmus wird hier erklärt. Das muss man aber nicht unbedingt verstehen, denn hier gibt es ein Tool zum Erzeugen der enkodierten Version. Das Erzeugen der Polyline sieht dann so aus:

var encodedPolyline = new GPolyline.fromEncoded({
    color: "#ff0000",
    weight: 10,
    points: "mcquHy}ri@Bb@?NDT",
    levels: "BBBB",
    zoomFactor: 32,
    numLevels: 4
});

Der fett markierte Teil stellt nun die vier oben definierten Punkte dar. Die Beispieldatei zu diesem Teil gibts hier.

Mit diesem Rüstzeug kann man dann die Umwandlung der GPX-Datei angehen. Manuell ginge das jetzt schon, automatisieren sollte man das jetzt noch irgendwie. Dazu gibt es ziemlich viele Wege. Möglich wäre zum Beispiel eine XSL-Transformation, die die GPX-Datei in eine Reihe von Punkte umwandelt (also quasi alle unnötigen XML-Tags entfernen). Oder man liest die GPX-Datei direkt per Javascript ein und erzeugt damit on the fly die Polyline, ein Beispiel wie man das machen kann findet sich hier. Oder man schreibt sich ein Programm in einer beliebigen Programmiersprache, welches die Umwandlung vornimmt.

Das habe ich gemacht: Mit den Informationen, die ich bereits bei der Recherche für den Artikel über Geotagging gesammelt hatte, ging das Recht schnell. GPX-Datei mit XML-Beans einlesen, eine Klasse zur Encodierung der Polyline ergoogeln und einbinden, ein kleines Webmodul stricken, welches genau die Umwandlung durchführt und in XML aufbereitet, diese XML-Information über JQuery (mit AJAX) einlesen, fertig. Dazu später mehr…

Google Maps Karte einbinden (Teil 1)

Dirk am 19. März 2008

Ich wollte meine Beiträge zu den Geocaching - Touren, die wir so machen, mit eine Grafik der gelaufenen Wege anhübschen. Google Maps bietet dazu gute Möglichkeiten, man braucht nicht viel, nur einen Google-Maps-API Key, und eine Seite, auf der die Tracks aufgebaut werden. Diese Seite integriert man dann einfach in den Beitrag per IFrame oder verlinkt sie, fertig.

Als Referenz für diese Artikelreihe sollen folgende Quellen dienen:

Zunächst braucht man also eine einfache HTML-Seite, die die Karte ausliefert. Der grobe Rahmen sieht so aus:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html 	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:v="urn:schemas-microsoft-com:vml">
<head>
	<title>Google Maps</title>
	<script src="jquery.js"></script>
	<script src="jquery.xpath.js"></script>
	<script src=".../maps?file=api&v=2&key=xxx">
	</script>
	<script type="text/javascript">
		var map;
		function initialize() {
 		if (GBrowserIsCompatible()) {
 			//hier gehts weiter
 		}
 	}
	</script>
</head>
<body onload="initialize()" onunload="GUnload()">
	<div id="map" style="width:500px;height:500px;">
	</div>
</body>
</html>

Eingebunden werden die Hauptbibliothek von JQuery, das XPath Plugin (werden später benötigt) und die Google Maps API.

Dieser Artikel zeigt zunächst einige kurze Beispiele für Google Maps (siehe dazu auch die Developer Guide, dort sind Beispiele für die einzelnen Funktionen angegeben). Der Code kann einfach oben an die Stelle “hier gehts weiter” reinkopiert werden - die Datei kann man lokal einfach abspeichern und öffnen, dafür wird noch kein Google API Code benötigt:

Map anlegen, bei Köln zentrieren und Maßstab festlegen (Zoom gibt quasi den Maßstab an, hohe Zahlen ist weiter weg, kleine Zahlen nah dran)

map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(50.889391,6.977005));
map.setZoom(13);

Karte auf Satellitenansicht umstellen und einige Controller hinzufügen

map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setMapType(G_SATELLITE_MAP);

Marker hinzufügen

marker=new GMarker(new GLatLng(50.892802,6.96722))
map.addOverlay(marker);

Linie zwischen zwei Punkten (Luftlinie von mir zuhause bis in die Innenstadt)

var polyline = new GPolyline([
    new GLatLng(50.864803, 7.003784),
    new GLatLng(50.936255, 6.959152)
], "#ff0000", 10);
map.addOverlay(polyline);

Mit dem Werkzeug an der Hand ist es eigentlich schon fast fertig. Jetzt könnte man für jede Tour eine solche Seite anlegen, und alle Wegpunkte in eine GPolyline (dem Konstruktur wird ein Array von Punkten übergeben, es kann also eine beliebig lange Linie erzeugt werden) hinzufügen.

Einfacher wäre natürlich, wenn man die GPX-Datei, die von den meisten Navis erzeugt werden, irgendwie direkt einbinden könnte. Dafür braucht man aber etwas Anwendungslogik: Die GPX-Datei muss eingelesen werden und in ein Google-Maps lesbares Format umgewandelt werden (also zum Beispiel in eine Reihe von GLatLng Punkten, oder in eine enkodierte Version dieser Punktmenge). Wie man das machen kann (mithilfe einer kleinen Java-Applikation und JQuery) zeige ich in dem nächsten Artikel.

Hier die oben aufgebaute Beispielseite, eingebunden im IFrame:

Diese Seite könnt ihr auch hier aufrufen, und Euch dort den Source ansehen. Dort ist der API Key von geocologning.de eingebunden, dieser funktioniert natürlich nur unter meiner Domain.

Unterwegs in Wesseling Urfeld

Dirk am 16. März 2008

Gestern war nochmal etwas schöneres Wetter, da sind Michi und ich nochmal losgezogen und haben ein paar Caches erbeutet, und zwar in einem Stadtteil von Wesseling, nämlich Urfeld. Dort hat gismogizmo so einige Caches verborgen, vermute mal schwer das er aus der Ecke kommt ;). Das Geocachen da war ganz interessant, direkter Blick auf die Wesselinger Industrie, nicht umsonst heißen die Caches Shell 1 - 3. Shell 1 war schnell gefunden, Shell 2 hatte die Michaela schonmal versucht, ist aber irgendwie gescheitert, müssen wir später nochmal schauen. Shell 3 haben wir dann auch noch gestartet, sind zu Fuß noch zu dem Schild, an dem die Infos stehen, haben die Zielkoordinaten ins Navi getippt und dann in die Zielrichtung. Hatten dann leider keine Zeit mehr, noch im Wald rumzukrabbeln und den Cache zu finden, muss man also auch nochmal hin. Wobei es da dermaßen gestunken hat, dass man sich das doch genau überlegen sollte, ob das sein muss.

Auch von gismogizmo ist der Vorsicht Hochwasser - Cache, da der auch direkt in der Nähe war, haben wir den auch gesucht und gefunden. Ein Multi, wobei die Entfernung von der ersten zur zweiten Station knappe 3m sind, da hätte man sich eventuell auch eine sparen können.

Trotzdem danke an gismogizmo fürs fleißige verstecken! Hier unser Track, los gings am Wesselinger Bahnhof (oben links), dann mit dem Auto zum Parkplatz (etwa unten rechts). Dann zu Fuß rumgelaufen und gesucht, auf dem Rückweg noch bei der Sparkasse vorbei und noch zu Meckes: Track ansehen. Die Karte habe ich mithilfe von Google Maps erzeugt, dort gibt es eine API, mithilfe derer man alle möglichen Karten erzeugen kann, ich beschreibe später mal, wie man das machen kann. Einen Key dafür gibts bei Google kostenlos. Den eingezeichneten Track habe ich aus der GPX-Datei erzeugt, den mein GPS eTrex Vista HCx aufgezeichnet hat. Ich habe nun auch eine Karte bei dem Beitrag zur Wahner Heide eingestellt, die zugehörige GPX-Datei hat noch das Gerät von Michi aufgezeichnet, da hatte ich noch keins.

Strommast im Urfelder Feld:

Strommast

Papierloses Cachen mit dem IPAQ PDA

Dirk am 11. März 2008

Wo ich nun schon so ein hochmodernes Navi besitze, hätte ich eigentlich gedacht, dass man auf dem Vista HCx auch Cachebeschreibungen ablegen kann, damit man zum Geocachen keine Zettel mehr mitnehmen muss. Weit gefehlt, wenn ich das richtig sehe, geht das nicht. Es gibt zwar eine eigene Kategorie für Geocaches, doch das sind auch nur Waypoints, mit nem Namen und ner Position.

Also bin ich alleine mit diesem Gerät doch noch weit entfernt vom papierlosen Cachen, ich bräuchte noch immer die Ausdrücke (oder heißt es im Plural auch Ausdrucke? naja, egal ;) ) der Caches. So hab ich mir das aber nicht vorgestellt, als technikaffiner Cacher möchte ich das natürlich vermeiden. Also muss ein Programm her für meinen PDA, ein IPAQ 3970 (schon etwas betagt, ähnlich wie der 3950, nur mit Bluetooth, noch von Compaq, wurde inzwischen von HP übernommen).

Zwei kostenfreie Programme konnte ich finden, einmal GpxView und GPXSonar (dessen eigentliche Seite wohl schon länger offline ist). Beides eigentlich genau Programme, die die Funktion, die ich haben wollte, unterstützen. Nämlich die GPX-Dateien, die man sich z.B. bei opencaching.de aus Suchanfragen generieren kann (und auf geocaching.com auch, nur braucht man da ne Premiummitgliedschaft, die ich noch nicht habe), auslesen und auf dem PDA anzeigen, mit Beschreibung und Logs und allem. GpxView ist auf meinem PDA leider gar nicht gestartet, GPXSonar zwar schon, das Tool konnte dann aber offenbar weder Cachebeschreibung noch Logs ausgeben.

Ein kommerzieller Anbieter, nämlich smittyware.com , bietet auch eine alternative, nämlich den Cachemate. Das Programm wird für diverse Plattformen angeboten, unter anderem auch für Windows Pocket PC, und das läuft auf meinem PDA (um genau zu sein Windows Mobile 2003). Mit der kostenlosen Variante kann man maximal 10 Caches importieren, dann ist Schluss. Da der Preis des Tools aber grade noch so zu stemmen war (5,49 EUR), habe ich mich zum Kauf hinreißen lassen. Wenige Minuten später besaß ich den Key, und ich konnte die 500-Cache große Datei von opencaching.de importieren (dabei ist GPXSonar übrigens abgeschmiert).

Das ganze sieht dann etwa so aus:

PDA 3970 mit Cachemate

Wahner Heide - unsere zweite Tour

Dirk am 20. Februar 2008

Die zweite Runde zog uns in die Wahner Heide, südlich vom Köln-Bonner Flughafen, bei Troisdorf. Inzwischen konnten wir noch einen dritten Mitstreiter, den Kai, anfixen. Losgezogen sind wir letztes Wochenende, am Samstag den 16.2. Die Fahrt dahin war etwas kompliziert, die Suche nach dem Parkplatz, den wir uns vorher ausgesucht hatten, war am schwierigsten:

Suche auf der Karte

Danach waren wir aber doch sehr erfolgreich. Drei Caches haben wir gefunden, einen Mystery-, einen Multi- und einen normalen Cache.

Der Mystery-Cache

Des Kaisers Hofmathematiker hat uns einige Berechnungen gekostet, viele Zeilen Java wurden programmiert, letzten Endes konnte Kai uns eine realistische Lösung präsentieren. Und siehe da, wir haben das Ding gefunden. Die Aufgabe war wirklich schwierig, man sollte durch drei vorgegebene Punkte ein gleichseitiges Dreieck legen, so dass dessen Flächeninhalt maximal ist. Und die östliche Ecke war die Lösung. Und wir wurden mit einem großen Cache belohnt (gefunden hat ihn Michi):

Hofmathematiker Cache

Der Cache war mitten im Wald, doch so einige Meter ab vom Weg, obwohl uns viele Schilder warnten:

Warnung vor dem Wald

Der tote Baum

Den nächsten hab ich gefunden, unter Einsatz meines Lebens musste ich einen steilen Abhang herunterklettern und fand dann neben einem toten Baum 2 was wir suchten. Als ich den Cache sicher erreicht hatte, haben sich meine Mitsucher auch zu mir runter getraut. Nach dem bergen und loggen hatten wir uns eine Pause verdient.

Der Multi

Nach diesen beiden erfolgreichen Suchen haben wir uns noch an einen 6km Marsch getraut, um den Heideblick 2 zu genießen. Die Wegpunkte waren sehr gut zu finden, hat auch nochmal großen Spaß gemacht, vor allem, wo so ein traumhaftes Wetter war. Wir waren auch nicht die einzigen, die diesen Weg verfolgten, haben tatsächlich schon wieder ein paar andere Cacher getroffen. Am Ende wurde Michi mit einer kleinen Metallschachtel belohnt, musste dafür aber einige Fingerpuppen zurücklassen.

Multi in der Wahner Heide

Ich wohne nun schon seit bald 6 Jahren hier in Köln, war noch nie in der Wahner Heide, und das war eine echte Bereichung. Eine richtig schöne Gegend ist das, hier noch ein paar Fotos:

Astgabel Pfütze zugefrorener Teich Wald komisches Ding am Baum alter Baum

Nachtrag (16.3.2008) - Hier ein Track der Tour in der Wahner Heide