Navigation mit GPS, Glonass, Galileo und OpenStreetMap
Header

Moderne Garmin GPS-Geräte wie bspw. die Modelle der eTrex- oder Oregon-Reihe können mit einer microSD-Karte erweitert werden. Dieser zusätzliche Speicher kann unter anderem für Karten, Wegpunkte, Tracks, Geocaches usw. benutzt werden. So lassen sich beispielsweise Speicherkarten für verschiedene Länder oder Aktivitäten (Geocachen, Wandern, Mountainbiken, …) vorbereiten und bei Bedarf schnell austauschen.

Gerade Neueinsteigern ist oft nicht klar, in welches Verzeichnis was gehört, oder wie die microSD-Karte vorbereitet werden muss, damit es nachher auf dem Gerät auch problemlos funktioniert. Dies ist nicht schwer und kann mit wenigen Schritten von jedem Anwender durchgeführt werden.

Vorbereitung des Gerätes und der Speicherkarte

Nach dem Kauf der Speicherkarte sollte diese zunächst einmal FAT32 formatiert werden. Dies kann mit Bordmitteln des jeweiligen Betriebssystems (Windows, Mac, Linux) erledigt werden. Idealerweise vergibt man jetzt auch gleich einen passenden Namen für die Speicherkarte.

Legt man die frisch formatierte Speicherkarte anschließend in das Gerät und startet dieses, so erstellt bspw. mein Oregon 650 einen Ordner Garmin auf der Speicherkarte und legt eine Textdatei (ld.txt) mit der Seriennummer des Gerätes ab.

Manuelles Erstellen der Ordnerstruktur

Hat man die Speicherkarte frisch formatiert, empfiehlt es sich, die benötigten Ordner direkt anzulegen. Hierzu benutzt man die nachfolgend aufgeführte Struktur.

\Garmin
    \Adventures
    \BirdsEye    
    \CustomMaps
    \DCIM
    \GeocachePhotos
    \GPX
        \Archive
        \Current
        \Nav
    \SQL

Je nach Gerät und Anwendung benötigt man allerdings nicht alle Ordner, bzw. das Gerät kann z.B. auf Grund einer fehlenden internen Kamera den Ordner DCIM nicht nutzen. In den Einstellungen des Gerätes kann die Speicherung auf der externen Speicherkarte aktiviert werden. Das Gerät legt den benötigten Ordner dann automatisch an.

Was kommt wo hin?

\Garmin ............... (Karten im Format "*.img")
    \Adventures ....... (Adventure-Dateien von Garmin.com)
    \BirdsEye ......... (Satellitenbilder und Rasterkarten)
    \CustomMaps ....... (Rasterkarten (Garmin CustomMaps))
    \DCIM ............. (Aufnahmen der internen Kamera)
    \GeocachePhotos ... (Spoiler-Bilder für Geocaches)
    \GPX .............. (Geocaches, Wegpunkte, Tracks und Routen)
        \Archive ...... (Automatische Archivierung)
        \Current ...... (Aktuelle Aufzeichnung)
        \Nav .......... (Spezielle Navigationsdaten)
    \SQL .............. (Systemdaten)

Hat man alle Daten am richtigen Ort, so muss man nur noch die Speicherkarte ins Gerät legen und einen Neustart ausführen.

Cacher-Grundausrüstung!

April 18th, 2014 | Posted by Sebastian in Geocaching - (0 Comments)

Man liest es immer wieder in diversen Foren, Blogs und Artikeln. Die Cacher-Grundausrüstung bestehe aus einem Stift und einem Smartphone mit Geocaching-Software. Mitnichten! Sie besteht aus einem Stift und dem ausgedruckten! Listing samt kleiner Übersichtskarte der Final-Location. Gerade bei urbanen Caches reicht dies vollkommen um unauffällig einen Fund zu verbuchen. Man fällt viel weniger auf, als wenn man wie ein ferngesteuerter Roboter über den Platz irrt. Ein riesen Vorteil, nicht zu unterschätzen.

Zu der erweiterten Cacher-Grundausrüstung gehört ein GPS-Gerät. In meinem Fall ist dies ein eTrex 10 und eine ordentliche topografische Karte 1:25.000.

Erweiterte Cacher-Grundausrüstung aus eTrex 10, Google Nexus 7, Topo-Karten und Kugelschreiber

Erweiterte Cacher-Grundausrüstung

Seit geraumer Zeit teste ich das eTrex 10 in Kombination mit einem Nexus 7 Zoll-Tablet und der Software Locus Pro zum Geochachen. Ich muss sagen, ich bin sehr angetan. Mit einem Griff in die Jackentasche ist das Gerät da. Je nach Situation habe ich das Display gesperrt und mit einem Griff ist das Display aktiv. Das große Display bietet zig Vorteile gegenüber all den kleinen Handgeräten mit Touchscreen usw. Sollte es rau werden, kommt das Tablet in den Rucksack und ich verwende das eTrex.

Auf dem eTrex ist ein kleiner Kartenausschnitt der Region installiert, das wird demnächst mal durch selbst erstellte OSM-Karten ersetzt.

Koordinaten umrechnen

August 9th, 2013 | Posted by Sebastian in Geocaching - (2 Comments)

Die Webseite des LGL (Landesamt für Geoinformation und Landentwicklung Baden-Württemberg) bietet einen Umrechner für Koordinaten in verschiedenen Formaten. Für Geocacher sicher nicht ganz uninteressant.

So kann man Koordinaten wie folgt umrechnen:

  • Umrechnung von geografischen Koordinaten B,L,h nach geozentrischen Koordinaten X,Y,Z.
  • Umrechnung einer Position von Dezimalschreibweise in Grad, Minuten und Sekunden und wieder zurück.
  • Umrechnung von geozentrischen Koordinaten X,Y,Z nach geografischen Koordinaten B,L,h.

 

Efringen-Kirchen ausbalanciert

Juli 13th, 2013 | Posted by Sebastian in Opencaching - (0 Comments)

Inspiriert von Flopps Beitrag „Am Schwerpunkt von Freiburg“ hab ich mich gestern hingesetzt und den Schwerpunkt von Efringen-Kirchen berechnet. Da ich als Geodät beruflich vorbelastet bin, ging die Sache recht zügig über die Bühne. Doch wozu braucht man den Schwerpunkt von Efringen-Kirchen?

Auf der offenen Geocaching-Plattform Opencaching.de gibt es so genannte Safari-Caches. Bei diesem Cachetyp handelt es sich um einen virtuellen Cache. Kurz gesagt, es befindet sich keine physikalische Box und kein Logbuch vor Ort. Die Aufgabenstellung beinhaltet, zunächst diesen Ort zu finden und dann den Besuch mit einem Foto zu dokumentieren. Auf dem Foto sollen das GPS-Gerät und der besuchte Ort abgebildet sein.

Der Cache „Am Mittelpunkt“ von following ist genau so ein  Safari-Cache. Die Aufgabenstellung beschreibt mehrere Varianten zum Bestimmen des Schwerpunktes. Ich habe mich für die Berechnungsvariante entschieden. Die Daten stammen aus dem OpenStreetMap-Projekt und wurden mit JOSM, GPS-Babel oder GPSies, LibreOffice.org und Tincta bearbeitet.

Bild des Schwerpunktes von Efringen-Kirchen

Schwerpunkt von Efringen-Kirchen

Das Vorgehen ist wie folgt:

  1. Finden der Stadtgrenze von Efringen-Kirchen (Relation: Efringen-Kirchen (1130296))
  2. Laden der Relation mit JOSM und Speichern als GPX-Datei
  3. Konvertieren der GPX-Datei ins ASCII-Format (XML-Datei ginge in Java auch) mit GPSies oder GPSBabel
  4. Extrahieren der Koordinaten und Einfügen der ersten Zeile zusätzlich als letzte Zeile mit LibreOffice.org
  5. Speichern der Datei mit dem Texteditor
  6. Programmieren des Java-Codes mit Eclipse
  7. Cachen vor Ort

Da mir Python noch nicht so zügig von der Hand geht, hier mein Lösungsansatz in Java.

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
 * Das Programm Schwerpunkt berechnet den geometrischen Schwerpunkt eines Polygons
 * aus Koordinaten (x y). Die Punkte müssen der Reihe nach vorliegen und der erste 
 * und der letzte Punkt in der Liste sind identisch.
 * 
 * Siehe auch: <a href="https://de.wikipedia.org/wiki/Geometrischer_Schwerpunkt#Polygon">Wikipedia-Artikel</a>.
 * 
 * @author Sebastian aka Azimut400gon
 */
public class Schwerpunkt {

	/**
	 * Konstruktor ohne Parameter. Steuert den Programmablauf.
	 */
	public Schwerpunkt() {

		String dateiName = "Efringen-Kirchen.txt";

		/* Dateiaufbau
		 * ===========
		 * 
		 * 47.64511840	7.594074100 // Erster Punkt
		 * 47.64459570	7.593142100
		 * 47.64312320	7.594131000
		 * ...
		 * 47.64511840	7.594074100 // Erster Punkt wiederholt
		 */

		ArrayList<String> geleseneZeilen = datenLesen(dateiName); 

		double[] schwerPunkt = schwerpunktBerechnen(geleseneZeilen);

		System.out.println("Der berechnete Schwerpunkt hat die Koordinaten: \n");
		System.out.println(schwerPunkt[0] + " " + schwerPunkt[1]);

	}

	/**
	 * Liest die Koordinaten aus der Textdatei zeilenweise ein und gibt sie als 
	 * <code>ArrayList<String></code>-Objekt zurück.
	 * @return ArrayList<String> mit den gelesenen Zeilen als String
	 */
	private ArrayList<String> datenLesen(String dateiName) {

		String zeile = null;
		ArrayList<String> zeilen = new ArrayList<String>();

		try {
			FileInputStream fis = new FileInputStream(dateiName);
			BufferedReader leser = new BufferedReader(new InputStreamReader(fis));

			try {
				while ((zeile = leser.readLine()) != null) {
					zeilen.add(zeile);
				}
			} catch (Exception e) {
				System.err.println("Datei konnten nicht geschlossen werden.");
			} finally {
				fis.close();
			}

		} catch (Exception e) {
			System.err.println("Fehler beim Lesen der Datei: "+ dateiName);
		}

		return zeilen;

	}

	/**
	 * Berechnet den geometrischen Schwerpunkt der eingelesenen Datei und gibt 
	 * diesen als double-Feld zurück.
	 * @return Berechneter Schwerpunkt als double [x, y]
	 */
	private double[] schwerpunktBerechnen(ArrayList<String> zeilen) {

		double[][] pkt = new double[zeilen.size()][2];

		StringTokenizer st = null;

		for (int i = 0; i < zeilen.size(); i++) {

			st = new StringTokenizer(zeilen.get(i));

			if (st.countTokens() == 2) {
				pkt[i][0] = Double.parseDouble(st.nextToken());
				pkt[i][1] = Double.parseDouble(st.nextToken());
			} else {
				System.err.println("Falsches Format in der Eingabedatei.");
			}

		}

		// Flächenberechung  mit Gauß'scher Trapezformel
		// https://de.wikipedia.org/wiki/Gaußsche_Trapezformel
		double a = 0d;

		for (int i = 0; i < pkt.length-1; i++) {
			a += (pkt[i][0] * pkt[i+1][1]) - (pkt[i+1][0] * pkt[i][1]);
		}

		a += (pkt[pkt.length-1][0] * pkt[0][1]) - (pkt[0][0] * pkt[pkt.length-1][1]);

		a /= 2.0;

		// Berechnung des Schwerpunktes
		// https://de.wikipedia.org/wiki/Geometrischer_Schwerpunkt#Polygon
		double x_S = 0d, y_S = 0d, hilf = 0d;

		for (int i = 0; i < pkt.length-1; i++) {
			hilf = (pkt[i][0] * pkt[i+1][1] - pkt[i+1][0] * pkt[i][1]);
			x_S += (pkt[i][0] + pkt[i+1][0]) * hilf;
			y_S += (pkt[i][1] + pkt[i+1][1]) * hilf;
		}

		hilf = (pkt[pkt.length-1][0] * pkt[0][1] - pkt[0][0] * pkt[pkt.length-1][1]);
		x_S += (pkt[pkt.length-1][0] + pkt[0][0]) * hilf;
		y_S += (pkt[pkt.length-1][1] + pkt[0][1]) * hilf;

		x_S /= 6d * a;
		y_S /= 6d * a;

		double[] schwerpunkt = {x_S, y_S};

		return schwerpunkt;

	}

	/**
	 * main()-Methode - Einstiegspunkt des Programms.
	 */
	public static void main(String[] args) {

		//Schedule a job for the event-dispatching thread:
		//creating and showing this application's GUI.
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				new Schwerpunkt();
			}
		});
	}

}

Statistiken – Project Geocaching!

Februar 24th, 2013 | Posted by Sebastian in Geocaching - (0 Comments)
Bildschirmaufnahme

Es gibt neben dem Schachspiel wohl kaum ein Hobby (Fitnessfanatiker mit ihren Endomondo-Apps ausgenommen), bei dem die Statistik so wichtig ist wie beim Geocachen. Umfangreiche Statistiken rund um das Thema Geocaching können mit Hilfe der Webseite https://project-gc.com zu verschiedenen Themen erzeugt werden.

Der unten stehende Screenshot zeigt die Entwicklung der Geocacher in Deutschland. Sehr interessant wie sich die Zahl der Jahre 2012 und 2013 entwickelt.

Bildschirmaufnahme

 

Natürlich kann man sich auch seine eigenen Statistiken erzeugen, hierzu wird das eigene Geocaching-Profil mit Hilfe der LiveAPI verknüpft. Die eigene Statistik kann dann via HTML ins Profil eingebunden werden…