Navigation mit GPS, Glonass, Galileo und OpenStreetMap
Header

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.

Vor nicht allzu langer Zeit bin ich von einem befreundeten Geocacher angefragt worden, wie man denn einen Punkt ermitteln kann, der von drei gebenen Punkten exakt gleich weit weg ist. Geometrisch betrachtet ist dies das Problem des Umkreismittelpunktes.

Geometrische Lösung

In diesem speziellen Fall bedeutet es, dass der Umkreismittelpunkt der Schnittpunkt der Mittelsenkrechten eines Dreiecks aus unseren Drei Punkten ist. Betrachten wir nun das folgende fiktive Beispiel, bei dem wir den Punkt suchen, der von den drei Gipfeln (Munzenberg (A), Hohe Stückbäume (B) und Köpfle (C)) gleich weit weg ist. Bei den drei Gipfeln handelt es sich um zufällig ausgewählte Punkte in der Nähe meines Wohnortes.

Da wir das Problem bequem zu Hause auf der Couch angehen können, wollen wir Flopps Tolle Karte dafür nutzen.

Bild mit den drei Gipfeln

Ausgangslage

Als erstes habe ich die drei Gipfel als Marker eingegeben und der Übersicht halber benannt. Im folgeden werden nur noch die Buchstaben A, B und C benutzt.

Zur Konstruktion der Mittelsenkrechten müssen nun mindestens zwei der drei Verbindungslinien der Punkte A, B und C gezeichnet werden. Das folgende Bild zeigt die Strecken A-B und B-C. Diese entsprechen den Seiten eines Dreiecks, von denen aus jetzt die Mittelsenkrechten gezeichnet werden müssen.

Eingezeichnete Verbindungsstrecken

Drei Gipfel mit den Strecken A-B und B-C

Die Mittelsenkrechten sind besondere Punkte der ebenen Geometrie. Zum Zeitpunkt als dieser Artikel entstand, bot Flopps Tolle Karte noch keine Funktion für die Erstellung der Mittelsenkrechten. Aber, die erzeugten Linien verraten uns ihre Länge und den Azimut. Am Beispiel der Strecke A-B heißt dies konkret: Länge 2844 Meter und Azimut 31,5°. Der Schnittpunkt der Mittelsenkrechten lässt sich somit einfach projizieren (grüne Schaltfläche mit dem Pfeil im Punktemenü, halbe Strecke und gleicher Winkel eingeben).

Fusspunkte der Mittelsenkrechen

Fusspunkte der Mittelsenkrechten

Ausgehend von den Fusspunkten der Mittelsenkrechten D und E, werden jetzt die beiden Mittelsenkrechten projiziert. Zum Azimut der Strecke A-B müssen jetzt 90° addiert werden. Als Streckenlänge habe ich der Übersichtlichkeit wegen, eine Distanz von 4000 Meter gewählt. Die neuen Punkte F und G werden jetzt mit den Fusspunkten verbunden. Wir erhalten die Mittelsenkrechten D-F und E-G.

Umkreismittelpunkt H mit Radius

Umkreismittelpunkt H mit Radius

Den Schnittpunkt kann man nun per Hand absetzten und die Koordinaten ablesen. Als Kontrolle ob man alles richtig gemacht hat, wird nun entweder die dritte Mittelsenkrechte konstruiert, oder der Umkreis um den Punkt H wie im obigen Bild dargestellt gezeichnet.

Das gesamte Beispiel ist hier verfügbar.

Lösung auf dem GPS-Handgerät

Selbstverständlich funktioniert diese Lösung auch auf dem GPS-Handgerät. Die Stichworte sind Wegpunktprojektion und Routen.

Lösung mittels grafischer Software

Auch mit gängigen CAD- und GIS-Programmen kann die Lösung des Umkreismittelpunktes erfolgen. Je nachdem müssen allerdings die Koordinaten in ein anderes Koordinatensystem (bspw. UTM) umgeformt werden, da die Eingabe von Dezimalgrad sonst zu einem falschen Ergebnis führt.

Sonstige Lösungsansätze

Weitere Lösungsansätze dürfen gerne per Kommentarfunktion ergänzt werden.

Im Laufe der Jahrhunderte hat sich die Erkenntnis durchgesetzt, dass die Erde keine Scheibe ist. Spätestens seit Einführung Google Earth kann jeder das am heimischen Rechner in kurzer Zeit nachvollziehen. Man kann dank dieser Technologie in kurzer Zeit fremde Orte besuchen, sich einen Überblick verschaffen, Reisen planen,  und noch vieles mehr tun.

Dank den Bemühungen der Geheimdienste der Verfügbarkeit von preiswerten GNSS-Geräten (Smartphones, GPS-Handempfänger, Daten-Logger) kann man seine Position auf der Erde in kurzer Zeit bestimmen und die zurückgelegte Strecke als Track aufzeichnen. Zusätzlich gibt es das schier unendliche Angebot an aufgezeichneten oder generierten Strecken. Mit Hilfe dieser Tracks oder Routen, die man sich auf den Handempfänger herunterladen hat, läuft man den Weg nach, oder fährt die Strecke mit dem Rad, Auto, Boot, etc. ab.

Mit Einführung des Social-Networks möchte man diese Daten vielleicht auch mit seinen Freunden teilen. Dazu sollten sie entsprechend visualisiert werden. Mit Hilfe von Konvertern (GPSBabel, …) können die Daten dann im KML-Format für Google Earth aufbereitet werden. Doch oftmals stellt sich die Frage, wie bekomme ich die Fläche einer gelaufenen Runde, oder eines Gebietes in Google Earth dargestellt.

Nun, zunächst müssen die Punkte so exportiert und gespeichert werden, dass man diese in Google Earth darstellen kann. Hierzu bieten sich verschiedene Formate an. Das auf den Handempfängern weit verbreitete GPX-Format, oder eine einfache Textdatei oder Tabelle.

Mit Hilfe der Online-Konverter von Mapsdata oder earthpoint können diese Aufgaben und noch vieles mehr erledigt werden.

 

GNSS-Satelliten-Verfügbarkeit

September 30th, 2013 | Posted by Sebastian in Allgemein - (0 Comments)

Die Verfügbarkeit der aktuellen GNSS-Satelliten kann auf der Webseite von Trimble angezeigt werden. Der interessierte Nutzer kann je nach Standort die Verfügbarkeit der Satelliten, die Bedingungen der Ionosphäre, usw. anschauen und GNSS-Kampagnen planen.

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.

 

GNSS-Messgeräte, Navigationsgeräte und Handempfänger sind mittlerweile stark verbreitet. Viele Anwender haben den Nutzen erkannt und können ihre Dienstleistungen ohne GNSS heute nicht mehr anbieten. Dem professionellen Anwender stehen systembedingt vielfältige Kontrollmöglichkeiten offen, die dem Hobby- oder Gelegenheitsnutzer bisher verschlossen waren.

Doch seit geraumer Zeit wird hier Abhilfe geschaffen. Dazu werden Geodätische Referenzpunkte geschaffen, die öffentlich zugänglich gemacht werden. Die notwendigen Informationen zu den Koordinaten des Punktes werden direkt vor Ort dauerhaft vermarkt und können im Internet über entsprechende Webseiten abgerufen werden.

Die zuständigen Vermessungsämter und Landesbehörden stellen hierzu in den Landkreisen die Punkte her und die Informationen zur Verfügung.

Baden-Württemberg

Bayern

Berlin

Thüringen

Wer einen solchen Referenzpunkt kennt, hinterlässt bitte einen Kommentar, dann kann ich die Liste entsprechend ergänzen.

Edit: Diese Liste ist in der OSM-Wochennotiz 159 verlinkt. Dankeschön.

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();
			}
		});
	}

}

In diesem Artikel habe ich bereits beschrieben, wie man den USB-Datenlogger Holux M-241 per USB an den Mac anschließt und Daten auslesen kann. In diesem Artikel wird beschrieben, wie die Verbindung mit Bluetooth funktioniert.

Koppeln via Bluetooth

Damit die Koppelung des Macs und des Holux M-241 möglich ist, muss zunächst Bluetooth am Logger aktiviert werden (Einstellungen -> Bluetooth -> EIN). Im Anschluss daran wird Bluetooth am Mac eingeschaltet (via Menüleiste) und die Option “Bluetooth Gerät konfigurieren…” gewählt.

Bildschirmfoto Holux M-241 gefunden

Bildschirmfoto Holux M-241 gefunden

Nachdem der Logger gefunden wurde, muss er verbunden werden.

Bildschirmfoto automatisches Kennwort

Bildschirmfoto automatisches Kennwort

Das hierzu notwendige Kennwort wird automatisch gesetzt.

Bildschirmfoto der erfolgreichen Verbindung

Bildschirmfoto der erfolgreichen Verbindung

Auslesen mittels HoudahGPS

Die aufgezeichneten Daten werden mit dem Programm HoudahGPS ausgelesen.

Bildschirmfoto HoudahGPS

Bildschirmfoto HoudahGPS

Damit dies funktioniert, werden die in der obigen Bildschirmaufnahme gezeigten Einstellungen (Port: Serial / Bluetooth und Name: HOLUX_M-241-SPPSlave) gewählt.

 

Der Holux M241 ist ein  kleiner GPS-Datenlogger, der mit einer AA-Batterie betrieben wird und auf Grund seiner Größe perfekt in jeden Rucksack passt.

Es gibt zwei Wege den Logger mit dem Mac zu verbinden. In diesem ersten Artikel beschreibe ich den Weg via USB. In einem weiteren Artikel geht es um die Bluetooth-Verbindung.

Von Haus aus passiert zunächst nichts, wenn man den Logger per USB an einen Mac anschließt. Apple hat keine Treiber für diesen Chipsatz an Bord. Somit muss man selbst aktiv werden.

Installation benötigter Treiber

Ein guter Einstieg für die Suche ist die Holux-Webseite. Es hat Treiber für verschiedene Betriebssysteme, Firmware-Updates, Tools und Manuale.

Bildschirmaufnahme der Holux-Webseite (16.06.2013

Bildschirmaufnahme der Holux-Webseite (16.06.2013

Wir nehmen den “USB Cable Driver Mac” und installieren diesen. Hierzu sind die Administrator-Rechte am Mac nötig. Alternativ kann man den Treiber auch von der Webseite des Chipsatz-Herstellers herunterladen. Dieser ist neueren Datums, funktioniert genauso wie der ältere Treiber.

Bildschirmfoto des Installationsdialogs

Bildschirmfoto des Installationsdialogs

Im Anschluss an die Installation muss der Mac neu gestartet werden.

Die richtige Software zum download der GPS-Daten

Am einfachsten funktioniert der Download der aufgezeichneten GPS-Daten mit dem Programm HoudahGPS.

HoudahGPS in Aktion

HoudahGPS in Aktion

Unter Type wählt man den richtigen Empfänger aus (“Holux M-241″) und unter Port “USB”. Mit einem Klick auf “Acquire” kann man die Daten jetzt vom per USB-Kabel angeschlossenen Empfänger herunterladen.

Das OpenTopoMap-Projekt hat das Ziel, eine topografische Karte auf Basis von OpenStreetMap-Daten zu erzeugen. Das Projekt verfolgt, unterstützt durch die Uni Erlangen, das ehrgeizige Ziel dem Nutzer ein gewohntes Kartenbild zu präsentieren.

Bildschirmaufnahme der OpenTopoMaps

Bildschirmaufnahme der Webseite OpenTopoMaps.org

Die Wikipedia schreibt hierzu:

Die topografische Karte (auch topographische Karte oder Landkarte) ist eine mittel- bis großmaßstäbige Karte, die zur genauen Abbildung der Geländeformen (Topografie) und anderer sichtbarer Details der Erdoberfläche dient. Das Gelände wird meist durchHöhenlinien dargestellt, ergänzt um markante Höhenpunkte (Gipfel, Sättel usw.) und den Verlauf der Gewässer.

Zum Inhalt solcher Karten gehören auch Straßen, Bahnlinien, größere Gebäude, die Umrisse von Ortschaften und andere technische Sachverhalte wie Grenzen, Wasser- oder Stromleitungen. Alle diese geografischen Objekte werden entsprechend demMaßstab lagerichtig und vollständig durch ein System kartografischer Zeichen wiedergegeben.

Wegen ihrer grundlegenden Bedeutung für die Wirtschaft, Verwaltung und Verteidigung eines Landes gehören die Herausgabe, Laufendhaltung und Führung eines flächendeckenden Systems topografischer Karten zu den öffentlichen Aufgaben (amtliche topografische Karten). Ähnliche Karten werden aber auch – meistens für begrenzte, touristisch interessante Gebiete – von derVerlagskartografie herausgegeben.

Die Erstellung einer topografischen Karte basiert nicht nur auf einer guten Datengrundlage (OSM-Daten), sondern auch auf so genannten Generalisierungsmechanismen. Bei der händischen Erzeugung von topografischen Karten wird diesem Punkt die größte Aufmerksamkeit gewidmet. Es ist eine Menge Erfahrung nötig, bis eine gute Karte entsteht. Gerade die Zusammenfassung und Verdrängung von Objekten (Häuser, Autobahnen, Flüsse), die Position der Beschriftungen (Orts- und Straßennamen) und die Beschriftung von Flächen (Seen, Wälder) ist sehr zeitintensiv.

Für die automatisierte Erzeugung der Karte ist hierzu noch viel Arbeit notwendig. Am Lehrstuhl für Grafische Datenverarbeitung der Uni Erlangen werden hierzu die notwendigen Studienarbeiten angeboten.