Mega Star in OpenStreetMap

Was ist eigentlich ein OSM Mega Star? Das habe ich mich heute Abend gefragt. Laut dem OpenStreetMap Wiki ist ein Mega Star ein Award, also eine Auszeichnung für eine besondere Leistung. Im Fall eines Mega Stars besteht die Leistung im Hochladen von einer Million GPS Trackpunkten.

Ich habe mich also gefragt wie viele Punkte ich eigentlich selbst schon hochgeladen habe. Bei OSM bin ich schon ein paar Jahre dabei, in Thailand gehöre ich mit zu der Gruppe die OSM dort aufgebaut hat. Da dürfte schon einiges zusammengekommen sein.

Leider kann man bei OSM zwar eine Liste seiner hochgeladenen Traces anzeigen, da steht auch bei jedem einzelnen Trace dabei wie viele Punkte es sind. Aber eine Gesamtsumme wird nicht angezeigt.

Die Lösung auf dem Server

Mit Ruby und Ruby On Rails kenne ich mich kaum aus, daher verstehe ich den Web-Sourcecode nicht besonders. Es sieht aber so aus als ob zu jedem einzelnen Trace in der Datenbank steht wie viele Punkte es sind. Da müsste es auch möglich sein die Summe beim Useraccount mit abzuspeichern. Das letzte Datenbankschema im Wiki ist von 2009, da ist noch nichts derartiges vorhanden. Es müsste an der Stelle nach einem Upload an der die Anzahl Punkte in die Tabelle mit den Traces geschrieben werden auch der Summenzähler aktualisiert werden. Somit wäre es eine sehr günstige Datenbankoperation den aktuellen Zähler abzufragen. Man könnte sogar die Zahlen für die einzelnen Sichtbarkeitsstufen der Traces getrennt erfassen. Dann könnte zusätzlich noch ein Hinweis kommen dass man seine Traces auch nachträglich auf IDENTIFIABLE, zumindest aber auf TRACKABLE stellen sollte.

Die lokale Lösung

Aber das sind bislang alles Wünsche, davon ist nichts umgesetzt und ich kann kein Ruby. Trotzdem wollte ich wissen wie viele Punkte es bei mir sind.

Eine Option wäre gewesen einfach von Hand die Seiten aufzurufen und die Punkte zusammenzuzählen. Aber das ist etwas das ein Computer doch eigentlich viel besser kann. Und für mich eine gute Gelegenheit mal anzusehen wie das eigentlich in Perl programmiert werden würde.

Einkaufsliste

Was wird dazu benötigt?

  • Ein perl Interpreter. Bei mir war es Perl 5.12 von ActiveState
  • das LWP Modul mit https Unterstützung. War bei mir schon mit dabei
  • ein paar Zeilen Perl. Mein Script count-tracepoint.pl gibt es unten

Bei allen alten Perl Hasen entschuldige ich mich schon mal für den Quelltext. Mag nicht besonders schön sein, aber er erfüllt seinen Zweck.

Das Script loggt sich zuerst auf dem Server ein und merkt sich den Session Cookie. Dann wird in einer Schleife so lange die Liste der Traces abgefragt bis keine weiteren Points mehr gefunden werden. Am Schluss gibt es eine Ausgabe der gefundenen Punkte.

Script ausführen

Um das mit dem eignen Account auch zu machen müssen die Voraussetzungen der Einkaufsliste erfüllt sein. Das Script lokal abspeichern und mit einem Editor den Benutzernamen und das Passwort in der Datei eintragen:

# INSERT YOUR USERNAME
my $username = 'myuser';
my $password = 'mypassword';

Dann eine Eingabeaufforderung öffnen und das Perl Script ausführen. Dazu muss Perl im Suchpfad sein, alternativ den Pfad auf das Binary mit angeben.

d:\osm>perl count-tracepoint.pl
login as stephankn
Requesting page 1 ... 445249 points found
Requesting page 2 ... 154337 points found
Requesting page 3 ... 119236 points found
Requesting page 4 ... 137129 points found
Requesting page 5 ... 107643 points found
Requesting page 6 ... 107542 points found
Requesting page 7 ... 185317 points found
Requesting page 8 ... 22868 points found
Requesting page 9 ... 0 points found
Found a total of 1279321 points on 8 pages

Damit steht fest: Ist bin deutlich über der Million drüber. Bis jetzt wolle mir leider niemand den Mega Star Award geben. Aber vielleicht ist das ja das gleiche wie überall bei OSM. Wenn man etwas will muss man es selbst machen.

GeoSetter Positionskorrektur beim Photomapping mit OpenStreetMap

GeoSetter ist eines meiner Lieblingstools für das Photomapping mit OpenStreetMap. Damit kann ich rasend schnell die Bilder sortieren die ich beim Photomapping geschossen habe.

Da es passieren kann das meine Kamera – eine Sony DSC-HX5V – noch keinen gültigen GPS Fix hatte führt das dazu dass die Bilder die letzte bekannte Position zugewiesen bekommen. Für normale Bilder eine tolle Sache, beim Photomapping stört das gewaltig. Glücklicherweise ist die Kamera so schlau und vermerkt das in den EXIF-Daten.

Das lässt sich dann später mit Tools wie dem GeoSetter korrigieren.

Zusätzlich zum GPS in der Kamera zeichne ich die Tracks beim Mapping mit einem speziellen GPS Logger auf. Ich verwende den Transystem i-Blue 747.

Wenn die Empfangslage schwierig ist hat der Logger eine bessere Position als die Kamera. Daher möchte ich später im Editor beide Positionen angezeigt bekommen.

Vorbereitung

Mit Hilfe von GeoSetter ist das ganz einfach. Zuerst erzeuge ich eine Kopie meiner Bilder. Die Originale möchte ich behalten um später eine “zweite Meinung” bezüglich der Position zu haben. Dann benenne ich die Kopien der Bilder um. GeoSetter bietet mir da das passende Werkzeug “Bilddateien umbenennen“. Ich füge hier einfach die Zeichenkette “_logger” an den Dateinamen an.

Bilddateien umbenennen

Koordinaten anpassen mit GeoSetter

Als nächstes lasse ich die Koordinaten des Bildes an die des Loggers anpassen. Das funktioniert deswegen weil Logger und Kamera die GPS Uhrzeit verwenden. In den Bildern steht die genau Zeit in den EXIF Daten drin. Damit kann man aus dem GPX-Track des Loggers die Position holen. Da ich sowohl die Kamera als auch den Logger trage befinden sich beide zur gleichen Zeit am gleichen Fleck.

Ich markiere im GeoSetter die GPX Dateien in der Auswahl die für die Anpassung der Koordinate verwendet werden sollen. Dann die Bilddateien markieren und die Funktion “Synchronisierung mit GPS-Datendateien” wählen.

Da die Uhrzeit der Kamera von GPS kommt und ich nur die Bilder synchronisieren will bei denen auch wirklich zeitgleich ein Logger verwendet wurde habe ich den Schwellenwert für die maximal zulässige Zeitdifferenz sehr kurz gewählt. Alles innerhalb dieser Zeitspanne für das es keine exakte Position gibt wird ggf. auf den ersten, bzw. den letzten Trackpunkt gesetzt. Gleichzeitig lasse ich auch noch die Zeitzone in die EXIF-Daten schreiben.

Synchronisierung mit GPS-Datendateien

Sollte ich Bilder haben bei denen der Logger nicht bereit war (oder einfach nicht eingeschaltet ;)) so bemerkt GeoSetter das und teilt mir das in einer Statusmeldung mit.

keine passende Position

In meinem Fall gab es vier Bilder zu denen ich keinen passenden GPX Track habe und bei denen ich mich auf die GPS-Position der Kamera verlassen muss. Damit ich später nicht durcheinanderkomme kann ich die Bilder wieder löschen. Nicht vergessen: zu Beginn habe ich eine Kopie angelegt. Die geänderten Dateien zeigt das Programm in rot an. Für die restlichen Bilder übernimmt GeoSetter die neuen Koordinaten nach einem Klick auf das Diskettensymbol “Alle Änderungen in Bildern speichern”.

geänderte Dateien

Verwenden im Editor

Für das Editieren der OpenStreetMap Daten verwende ich JOSM. Dort kann ich einfach die Dateien und GPX-Tracks per Drag’n’Drop anzeigen lassen. Falls die Position eines Bildes im Kamera GPS und im Logger deutlich abweicht muss ich mich eben für eine Position entscheiden. Da sich zusätzlich auch Bing Luftbilder einblenden lassen ist das meiner Meinung nach eine der besten Möglichkeiten Daten zu erfassen. Durch den eingebauten Kompass ist auch gleich klar in welche Richtung man fotografiert hat. JOSM zeigt das durch einen kleinen Pfeil an.

Anzeige in JOSM

Die GPX-Dateien müssen übrigens auch manchmal vor dem Upload bereinigt werden. “Punktewolken” stören nur beim Editieren. Aber das ist ein anderer Artikel.