Ich habe lange gesucht wie ich am besten meine Kontakte aus Xing in das Google Adressbuch importieren kann. Die beste Lösung scheint ein Eigenbau zu sein. Weiterlesen
Plugins mit Codestyling Localization übersetzen
WordPress Plugins können mit dem Codestyling Localization Plugin sehr einfach übersetzt werden. Voraussetzung ist, dass der Autor des Plugins die übersetzbaren Texte bereits gekennzeichnet hat und diese im .po Format vorliegen.
Weiterlesen
BT747 Einstellungen für i-Blue 747A+ GPS Datenlogger
Meine BT747 Einstellungen für den Transystem i-Blue 747A+ GPS Bluetooth Datenlogger möchte ich hier vorstellen.
In der Vergangenheit habe ich immer sehr erfolgreich meine GPS Tracks mit einem i-Blue 747 aufgezeichnet. Nachdem ich den Datenlogger bei meinem letzten Mapping-Trip in Thailand an ortsansässige OSM Neueinsteiger verschenkt hatte musste ich mir einen Ersatz suchen. Bei Ebay konnte ich das aktuelle Nachfolgemodell 747A+ ersteigern. Im Vergleich zum Vorgänger ist der modernere GPS Chip MT3329 enthalten, der nun 66 Kanäle verwendet, einen doppelt so großen Speicher hat und AGPS für einen schnelleren Fix unterstützt.
Die Gelegenheit hat sich angeboten dann gleich zu dokumentieren wie ich den Logger passend für OpenStreetMap konfiguriere. Die Anleitung bezieht sich hier auf den 747A+, das Programm funktioniert aber mit vielen Loggern die auf dem gleichen Design basieren. Unter anderem Geräte von Royaltek und Qstarz. Für andere Logger wird das Programm nicht funktionieren, die prinzipielle Vorgehensweise sollte aber die gleiche sein.
Die Software
Ich verwende auf dem PC die OpenSource Software BT747 die sämtliche Werkzeuge bietet um den Logger zu konfigurieren und auszulesen. Die Software kann entweder per Java Webstart gestartet werden oder lokal installiert werden. Sie läuft auf jedem System das Java kann, zusätzlich auf j2me und windows ce Geräten.
Nach dem Anstecken (Einschalten) an USB fordert einen Windows auf Treiber zu installieren. Die Treiber für alle Windows Versionen bis Windows 7 gibt es direkt beim Hersteller. Windows 8.1 installiert automatisch einen passenden Treiber.
Die Einstellungen
Bevor es los geht muss der Logger natürlich per USB verbunden und eingeschaltet (auf LOG) werden. Mit dem Connect Knopf links unten kann man die USB Verbindung herstellen.
In den Device settings stelle ich die Parameter ein wie häufig der Logger Daten aufzeichnet und welche Daten gespeichert werden.
Beim Zeitformat wähle ich die normale UTC Zeit und Zusätzlich Millisekunden da ich häufiger als ein mal pro Sekunde logge. Irgendwie muss das ja in den Daten unterscheidbar sein. Also UTC Time und Miliseconds anwählen.
Für OpenStreetMap benötige ich nur die Koordinate, also Latitude und Longitude. Geschwindigkeit und Richtung kann später JOSM alleine berechnen, das brauche ich nicht. Auch auf die Höhe verzichte ich. Dadurch passen mehr Daten in den Speicher und so sonderlich genau ist die Höhenangabe bei GPS auch nicht. Für Höhenangaben zu Bergen verlasse ich mich lieber auf die Infotafeln vor Ort.
Weil ich später nur die „guten“ Daten in meinem Track haben will speichere ich den GPS Fix Type, HDOP und NSAT mit ab. Mit diesen Daten lässt sich erkennen wie gut die berechnete Position ist. Im Fix Type vermerkt der Logger ob er überhaupt eine Position über GPS ermitteln konnte. NSAT sind die Anzahl an Satelliten die der Empfänger gesehen hat. Je mehr Satelliten empfangen werden desto höher ist die Chance auf eine gute Positionsbestimmung. Ich nehme diese Angabe mit ins Log weil ich der reinen HDOP nicht ganz traue und Peilungen mit wenigen Satelliten auch ausschließe. Wenn man sich nur auf das HDOP verlässt kann man ohne diese Daten nochmal ca. 5% mehr Punkte speichern. Der HDOP Wert gibt an wie gut der berechnet Wert ist. Unter 1.0 sind die Punkte richtig gut, bis 2 kann ich sie noch akzeptieren. In JOSM lassen sich die HDOP Genauigkeitswerte auch als Kreise um die GPS-Punkte herum anzeigen.
Mit dem Reason RCR protokolliert der Logger mit warum etwas aufgezeichnet wurde. Da ich Tastendrücke auf den Marker erkennen will muss ich das mit aufzeichnen.
Mittels Set Format & Erase wird der Speicher entsprechend den neuen Einstellungen formatiert. Daten die vorher drauf waren werden dabei gelöscht und sollten vorher gespeichert werden. Aber bei den vielen Warnhinweisen der Software kann man das nicht übersehen.
Mit dem Schalter Use SBAS WAAS lassen sich Ionosphären Korrekturdaten verwenden um die Genauigkeit der Positionsbestimmung nochmal zu steigern. Diese sind unter den Kürzeln WAAS, EGNOS und MSAS bekannt. Die Korrekturdaten haben eine begrenze räumliche Gültigkeit und sind in Nordamerika, Europa und Japan gültig. Da mit den Korrekturdaten auch eine Information über den Gültigkeitsbereich gesendet wird sollte es kein Problem sein das immer eingeschaltet zu lassen. Es gibt allerdings Gerüchte dass manche Logger diese Prüfung nicht sauber implementieren. Wenn man also sicher außerhalb eines versorgten Gebietes ist kann man zur Sicherheit das auch ausschalten. Nicht vergessen mit dem Set Schalter die Einstellung zu speichern.
Bereits gesammelte Daten will ich auf keinen Fall überschreiben, daher stelle ich den Logger so ein dass er aufhört wenn der Speicher voll ist. Stop when full. Der Logger zeigt das mit einer rot leuchtenden LED an. Bei einem Rest von 20% fängt die an zu Blinken. Mit meinen Einstellungen reicht das für 18 Stunden Aufzeichnung. Danach muss ich mit Computer oder Smartphone die Daten auslesen.
Ich möchte zweimal pro Sekunde die Position aufzeichnen um auch in einer Kurve noch genügend Datenpunkte zu haben um ohne Luftbild den Straßenverlauf ahnen zu können. Für diese 2Hz Updates stelle ich auf Fix every 500 ms. Damit hat der Logger intern zwei mal pro Sekunde eine Position berechnet. Die weiteren Einstellungen legen fest wann diese ins Log geschrieben werden. Die Bedingungen sind alternativ. Mit Time every 1.0 seconds ist jede Sekunde ein Eintrag im Log, auch wenn der Logger nicht bewegt wird. Die Zahl kann auch etwas größer gewählt werden. Mit Distance every 1.0 m wird ein Punkt geloggt wenn sich die Position um mehr als einen Meter verändert hat. Das kann bei meinen Einstellungen also bis zu zwei mal pro Sekunde sein. Am Schluss speichere ich die Einstellungen mit Set.
Der Abstand zwischen zwei Punkten bei einer gegebenen Geschwindigkeit lässt sich einfach berechnen. Die Geschwindigkeit in Kilometern pro Stunde wird einfach durch 3,6 geteilt. Dann hat man Meter pro Sekunde. Das teilt man durch die Anzahl Punkte die pro Sekunde aufgezeichnet werden und schon hat man den Abstand zwischen zwei Punkten. Beispielsweise wird bei einer Geschwindigkeit von 72 km/h und 2Hz Loggingfrequenz alle 10 Meter ein Punkt geloggt.
Hilfsdaten
Damit das Gerät schneller eine erste Position hat, im englischen TTFF -Time To First Fix- genannt kann man die Bahndaten der Satelliten schon im Gerät ablegen. Das sind berechnete Daten die um so ungenauer werden je weiter in der Zukunft die Daten liegen. Der Logger unterstützt Bahndaten für bis zu sechs Tage in der Zukunft. Diese Assisted-GPS Daten bekommt das Programm aus dem Internet. Mit Upload APGS data to device werden die Daten geladen und auf den Logger gespeichert. Kurz bevor ich auf Tour gehe lasse ich die AGPS Daten aktualisieren.
Die Filter Einstellungen
Eventuell kommt es bei der Erfassung der Daten draußen im Gelände zu Situationen in denen der Empfang nicht besonders gut ist und die GPS Tracks entsprechend schlecht sind. Ich denke dass solche schlechten GPS Punkte in OSM mehr schaden als nützen, deswegen möchte ich sie nicht hochladen. Um Dateien zu bekommen bei denen das erst gar nicht enthalten ist lassen sich in BT747 Filterbedingungen einstellen die festlegen welche Daten in die Ausgabedatei übernommen werden und welche nicht.
Unterschieden werden drei Arten von Filtern. Man Kann festlegen was als Trackpoint (also die normalen Brotkrumenpunkte) mitgenommen wird, was für die Waypoints (wenn ich den Marker drücke) gilt und welche Einstellungen auf alles angewendet werden.
Ich stelle Trackpoints auf SPS, DGPS, PPS, RTK, FRTK und die Log Reason auf Time, Button, User. Ist etwas mehr als tatsächlich gebraucht wird aber ich will erst mal alle Punkte haben. Die Ausnahme sind Punkte bei denen der Logger schon erkennt dass es keine gültige Position ist (das wären vor allem No fix und Estimate).
Für die Waypoints gilt es entsprechend.
Spannend wird es bei den gemeinsamen Filtern. Da ich die 2D Genauigkeit HDOP mit aufzeichnen lasse kann ich auch danach filtern. Bei HDOP Werten schlechter als 1.98 will ich die Punkte nicht im Trace haben. Schlechte Werte können auftreten wenn nur Satelliten sichtbar sind die in einer sehr ungünstigen Geometrie zueinander stehen. Da dann die Position mit hoher Wahrscheinlichkeit ungenau ist will ich das später auch nicht im Editor sehen. Dann weiß ich wenigstens woran ich bin. Die Einschränkung auf Positionen mit mindestens 4 Satelliten bei NSAT geht in die gleiche Richtung. Die „kleiner-gleich“ Zeichen sind hier etwas missverständlich. Es landen Werte im Trace mit einem HDOP kleiner als dem angegebenen Wert und mit Satelliten größer dem angegebenen Wert. Selbst wenn die Werte diese Filter passieren kann es bei ungünstiger Empfangslage zum Beispiel Reflexionen an Gebäuden geben die die Position verfälschen. GPS Positionen sind als immer mit gesundem Misstrauen zu sehen.
Das Dateiformat
Im Reiter für das Ausgabeformat habe ich fast alle Felder markiert. Daten die es nicht gibt werden nicht in die Ausgabedatei geschrieben. Das reguliert sich von selbst.
Einige Punkte möchte ich gesondert erläutern. Die Zeitzone lasse ich auf UTC +0 laufen (TimeZone UTC +0). Da ich häufig zwischen verschiedenen Zeitzonen wechsle könnte es sonst zu leicht passieren dass die falsche Zeit verwendet wird. Von der Position her kenne ich die Zeitzone. So ist eine spätere Zuordnung kein Problem. Pro Track lasse ich eine einzelne Datei schreiben (One file per track). So kann ich verschiedene Strecken die ich an einem Tag geloggt habe einfach auseinanderhalten. Wenn eine Pause länger als 15 Minuten erkannt wird soll eine neue Datei begonnen werden (New Track after 15 min. pause). Ebenso wenn der Logger eingeschaltet wird (New track when GPS logger switched on).
Damit die Dateien nicht zu umfangreich werden verzichte ich darauf jeden einzelnen Punkt mit Namen zu versehen. Das wären Add Track Point Info und Add Track Point Name. Für die Waypoints lasse ich das eingeschaltet.
Daten runterladen und konvertieren
Nach dem Mapping Ausflug kommt der große Moment. Der Logger wird angeschlossen und verbunden.
Den Pfad für die Ausgabedateien habe ich eingestellt (Output Folder), ebenso eine Datei festgelegt in die die Rohdaten gespeichert werden (Raw Log File). Die Methode Smart Download beschleunigt den Prozess indem nur die neuen Daten geladen werden. Mit klick auf Download geht es los.
Nach einigen Sekunden ist der Trace auf dem Computer. Ich konvertiere meine Traces nach GPX um sie in JOSM anzusehen und zu OpenStreetMap hochzuladen. Zusätzlich gebe ich sie als HTML aus. Da lassen sich die Traces lokal im Browser vor OSM Karten oder auch Satellitenbildern anzeigen. Super um einen schnellen Eindruck zu bekommen wo der Thread genau war. Dateien die keine sinnvollen Daten enthalten weil es zum Beispiel eine Situation war in der der Logger im Haus eingeschaltet war lassen sich so schnell erkennen und aussortieren.
Bei Bedarf kann der Speicher auf der Seite mit den Device Settings mit einem Klick auf den Erase button für den nächsten Ausflug geleert werden.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#!/usr/bin/perl # Stephan Knauß 2012, CC0 http://creativecommons.org/publicdomain/zero/1.0/ use strict; use LWP; # INSERT YOUR USERNAME my $username = 'myuser'; my $password = 'mypassword'; my $browser = LWP::UserAgent->new; $browser->cookie_jar({}); print "login as $username\n"; my $loginUrl = 'https://www.openstreetmap.org/login'; my $loginpage = $browser->get($loginUrl); die "Can't get $loginUrl. Status: ".$loginpage->status_line unless $loginpage->is_success; my $token; if ($loginpage->content =~ /name="authenticity_token" type="hidden" value="(.*)"/) { $token = $1; } else { die "Can't get login token"; } my $login = $browser->post($loginUrl, [authenticity_token => $token, username => $username, password => $password]); die "login failed with ".$login->status_line unless $login->code == 302; my $found = 0; my $totalPoints = 0; my $page = 1; do { print "Requesting page $page ..."; my $url = "http://www.openstreetmap.org/user/$username/traces/page/$page"; my $response = $browser->get($url); die "Can't get $url. Status: ".$response->status_line unless $response->is_success; my $content = $response->content; $found = 0; while( $content =~ /\(((?:\d+,)*\d+) points\)/g ) { my $points = $1; $points =~ s/,//g; $found += $points; } print " $found points found\n"; $totalPoints += $found; $page++; } until not $found; print "Found a total of $totalPoints points on ".($page-2)." pages\n"; |
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.
Kindisches Geräusch der Kamera abschalten
So schlecht die Kamera im Handy auch ist, manchmal will ich sie schon benutzen. Für eine schnelle Notiz kann so ein Foto schon praktisch sein.
Dass dabei aber so ein kindisches Auslösegeräusch abgespielt wird nervt mich gewaltig. Da muss man sich ja direkt schämen wenn man die Kamera irgendwo benutzt wo es andere Leute hören können.
Als Root lässt sich das reparieren. Ich starte den ES File Explorer, mache die Systempartition schreibbar und benenne die Sounddatei um.
[plain]/system/media/audio/ui/camera_click.ogg[/plain]
Und schon ist Ruhe. Ich könnte es auch in ein etwas dezenteres Geräusch ändern. Mal sehen ob ich etwas passendes finde.