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.