LeseSolm 0.1.16

Florian Bauer
http://sourceforge.net/projects/lesesolm/ 
spitzkopf@users.sourceforge.net

LeseSolm ist eine Sammlung von AWK und Shell Skripten für den GPS Logger “Solmeta Geotagger Pro” und andere GPS Empfänger, die GPS Tracks im NMEA Format ausgeben. Das Skript LeseSolm lädt unter Linux den GPS Track aus dem Geotagger aus. GeotagSolm und GeotagNMEA dienen dem Geotaggen von Bildern mit Unterstützung der Blickrichtung aus dem Magnet- oder GPS-Kompaß. RevGeotag lädt Höhendaten vom geonames.org Server herunter. StatNMEA erzeugt aus NMEA Dateien ein paar Statistiken u.a. über DOP Werte und Satelliten.

Inhaltsverzeichnis

1 Einleitung
2 Installation
 2.1 Einstellungsdatei “.LeseSolm
 2.2 LeseSolm unter Windows
3 LeseSolm
 3.1 Anleitung
 3.2 Anmerkungen
4 GeotagSolm
 4.1 Anleitung
 4.2 Anmerkungen
5 GeotagNMEA
 5.1 Anleitung
 5.2 Blickrichtung
 5.3 EXIF DOP
6 RevGeotag
7 Hilfsskripte
 7.1 BackupEXIF
 7.2 CreateXMP
 7.3 StatNMEA
  7.3.1 Beispiel 1: Solmeta Geotagger Pro 10.0
  7.3.2 Beispiel 2: Locosys GPS Walker
Literatur

1 Einleitung

Das LeseSolm Paket enthält einige AWK [5] Skripte für den GPS Logger "Solmeta Geotagger Pro" [2], ein Direkt-Geotagger mit Magnetkompaß für bestimmte Nikon Spiegelreflexkameras. Außerdem speichert er GPS Daten in seinem internen Speicher im NMEA Format [8].

LeseSolm liest den GPS Tracklog aus dem Geotagger aus und schreibt die NMEA Daten in eine Datei. Es kann auch den Speicherfüllstand anzeigen und den Speicher löschen.

GeotagSolm liest die NMEA Datei und geotaggt die Bilder, die aufgenommen wurden während der Geotagger auf dem Kamera Blitzschuh montiert war. Dabei wird die Bildrichtung aus den Kompaßdaten bestimmt. Zum schreiben der GPS-Daten in die Bilder bzw. XMP Sidecar Dateien wird das Metadaten-Werkzeug ExifTool von Phil Harvey [3] verwendet.

GeotagNMEA arbeitet wie GeotagSolm, kann aber beliebige GPS Tracklogs im NMEA Format verwenden. Ab einer bestimmten Geschwindigkeit wird die Bildrichtung aus der Bewegungsrichtung im GPS Track bestimmt.

Bei Bildern mit GPS Koordinaten holt RevGeotag vom Server geonames.org [4] die zugehörigen Höhenwerte, mit denen die Bilder aktualisiert werden können.

StatNMEA analysiert NMEA Dateien in Hinblick auf DOP Werte, Satelliten Infos, Geschwindigkeitsverteilung und anderer Eigenschaften.

BackupExif sichert die EXIF Metadaten aus Bilddateien.

CreateXMP erzeugt einfache XMP Sidecar Dateien, die anstelle der Originalbilder geogetaggt werden können.

Lizenz

Das LeseSolm Paket steht unter der GNU General Public License Version 2, zu finden in der Datei COPYING oder hier www.gnu.org/licenses/. Für das LeseSolm Paket wird keinerlei Garantie oder Gewährleistung übernommen. Benutzung auf eigene Gefahr.

Überblick

LeseSolm [COMPORT]

GeotagSolm NMEA TIME IMAGEFILES

GeotagNMEA NMEA TIME IMAGEFILES

RevGeotag a/b/c IMAGEFILES

StatNMEA NMEA

BackupEXIF IMAGEFILES

CreateXMP IMAGEFILES

NMEA: GPS Tracklog Datei im NMEA Format. TIME = (Kamera Zeit) - (GPS Zeit), z.B. +2:0:7.

2 Installation

Dieser Abschnitt beschreibt die Installation unter Linux. Der Ablauf sollte unter anderen Unix-artigen Umgebungen ähnlich sein. ExifTool [3] und GAWK [5] müssen auf Ihrem System installiert sein. Alle Skriptdateien LeseSolm.awk, GeotagSolm.awk,... können in einem beliebigen Verzeichnis1 abgelegt werden. Dort müssen die Skripte mittels

chmod +x *.awk *.sh

auf der Kommandozeile ausführbar gemacht werden. Wenn dieses Verzeichnis in der PATH Umgebungsvariable liegt, dann können die Skripte einfach durch LeseSolm.awk, GeotagSolm.awk etc. auf der Kommandozeile ohne Angabe eines Pfades aufgerufen werden. Ansonsten muß der vollständige Pfad hinzugefügt werden. Liegt also LeseSolm im aktuellen Verzeichnis, dann kann es dort durch “./LeseSolm.awk“ gestartet werden. Im folgenden nehmen wir an, daß das Verzeichnis mit den Skripten in PATH liegt.

Falls Fehlermeldungen über ein fehlendes “gawk” auftauchen, dann finden Sie mit “whereis gawk” auf der Kommandozeile heraus, wo “gawk” sich befindet. Passen Sie gegebenenfalls die jeweils erste Zeile in den AWK Skripten an. Es ist notwendig GNU AWK (GAWK) [5] zu verwenden, weil andere AWK Varianten möglicherweise nicht funktionieren. Unter Ubuntu 10.10 ist standardmäßig nur MAWK installiert, Sie müssen also GAWK über die Paket- bzw. Softwareverwaltung nachinstallieren.

2.1 Einstellungsdatei “.LeseSolm

Einige Skripte des LeseSolm Pakets lesen die Konfigurationsdatei “.LeseSolm” aus, falls diese in Ihrem Heimatverzeichnis liegt. Die Einstellungen darin werden bei einem Update von LeseSolm nicht überschrieben. Die Beispieldatei “dot.LeseSolm” ist Teil des Pakets. Passen Sie darin die Einstellungen an und verschieben Sie die Datei in Ihr Heimatverzeichnis. Zuletzt benennen Sie sie in “.LeseSolm” um. Vermeiden Sie Leerzeichen in den Einstellungszeilen!

2.2 LeseSolm unter Windows

LeseSolm kann auch unter Windows2 in einer Cygwin Umgebung verwendet werden. Im folgenden wird die Installation Schritt für Schritt erklärt. Zuerst laden Sie setup.exe von der Cygwin Homepage [6] herunter. Starten Sie setup.exe und befolgen Sie die Anweisungen bis zur Paketauswahl. Dort wählen Sie die Pakete AllPerlperl, All Develmake, AllShellschere und AllArchiveunzip durch Klicken auf das Symbol mit den zwei runden Pfeilen aus. Schließen Sie dann die Cygwin Installation ab. Starten Sie nun eine Bash Kommandozeile aus dem Windows Start Menü (StartProgramsCygwinCygwin Bash Shell). Danach laden Sie Image-ExifTool-...tar.gz (nicht die Windows Version!) von [3] und LeseSolm-...zip von [1] herunter. Speichern Sie beide Dateien im Verzeichnis “c:\Programme\cygwin\home\user\” ab, wobei “user” Ihr Windows Benutzername ist und “Programme” möglicherweise anders heißt abhängig von der Windows Sprache und Version. Gehen Sie nun zurück zum Fenster der Bash Kommandozeile und geben Sie folgende Befehle ein, wobei “...” für eine Versionsnummer steht.

chere -i

tar -xzvf Image-ExifTool-...tar.gz

cd Image-ExifTool-...

perl Makefile.PL

make test

make install

cd ~

unzip LeseSolm-...zip

cd LeseSolm-...

chmod +x *.awk *.sh

cp *.awk *.sh /usr/local/bin/

cp dot.LeseSolm ~/.LeseSolm

Jetzt sollte LeseSolm unter Windows einsatzbereit sein. Wenn Sie im Windows Explorer auf einen Ordner rechts-klicken, gibt es nun im Kontextmenü den neuen Eintrag “Bash Prompt Here” zum Öffnen einer Bash Kommandozeile in diesem Ordner. Dort können die LeseSolm Skripte gemäß diesem Handbuch benutzt werden.

Diese Anweisungen wurden unter Windows XP mit cygwin-1.7.9, exiftool-8.60 und LeseSolm-0.0.13 getestet.

3 LeseSolm

Auslesen des GPS Tracklogs aus dem “Solmeta Geotagger Pro” unter Linux.

3.1 Anleitung

Schließen Sie den Geotagger an einen freien USB-Anschluß an und öffnen Sie ein Terminal bzw. die Kommandozeile. Wechseln Sie in das Verzeichnis, wo das Tracklog gespeichert werden soll. Schalten Sie den Geotagger ein und starten Sie das LeseSolm Skript via

LeseSolm.awk COMPORT

Ersetzen Sie COMPORT durch die serielle Schnittstellen-Datei zum Geotagger. Wenn Sie COMPORT nicht angeben, dann versucht LeseSolm die korrekte Schnittstelle automatisch3 zu finden. Wenn das nicht gelingt wird dafür "/dev/ttyUSB0" angenommen. Sie benötigen Lese- und Schreibrechte auf die Schnittstellen-Datei. Unter Opensuse 11.3 genügt es, wenn der Benutzer Mitglied der Gruppe "dialout" ist. Ubuntu 10.10 Nutzer sollten zuerst Abs. 3.2 lesen.

LeseSolm zeigt nun ein Menü an:

>LeseSolm 0.0.5: Auslesewerkzeug für den Solmeta Geotagger Pro

>Leseprozeß mit PID 9438 gestartet, öffne Schnittstelle /dev/ttyUSB0, 4800

>Befehl: Version (v), Download (d), Löschen (erase), Ende (q), Abbrechen (abort)

Wählen Sie "v" um die Version (#Ver) und den Speicherstand (#mem) des Geotaggers anzuzeigen.

>Version anzeigen, 4800

>#Ver: Solmeta PRO V1.0-4 (Dec 03 2009)

>#mem:48KB

Wenn nichts angezeigt wird, versuchen Sie es nochmal. Manchmal ignoriert der Geotagger Kommandos.

Mit "d" wird das Tracklog heruntergeladen und in die Datei "Solmeta_YYYY-MM-DD-HHMMSS.nmea" gespeichert, wobei YYYY-... durch Datum und UTC-Zeit des ersten Trackpunkts ersetzt wird. Warten Sie bis das Auslesen beendet ist.

>Auslesen

>#connect

>Sende #down, 115200

>#download00c2

>Lese Zeile 907, 48/ 48 KiB, 100%.

>#downcomplete

>907 Zeilen gelesen in 0:10 min, 4.8 KiB/s.

>14 GPGGA Sätze gefunden.

>NMEA Daten nach Solmeta_2011-02-15-190933.nmea geschrieben.

>Umschalten auf 4800

In diesem Beispiel wurden 907 Zeilen in die Datei "Solmeta_2011-02-15-190933.nmea" gespeichert. Darunter befinden sich 14 $GPGGA Sätze. Beim alten Geotagger Version 10.0 gehört zu jedem $GPGGA Satz genau ein Foto, wenn der Geotagger auf dem Blitzschuh der Kamera montiert und betriebsbereit war.

Überprüfen Sie jetzt die NMEA Datei auf Vollständigkeit. Wenn alles in Ordnung ist, dann können Sie den Speicher des Geotaggers mit dem Kommando "erase" löschen. Warten Sie bis der Prozeß abgeschlossen ist, es dauert etwa eine Minute.

>Logger leeren, 4800

>#StartErase

>Löschen läuft, bitte warten.

>#erasecomplete

>Logger geleert nach 41 s.

"v" zeigt jetzt an, daß der Logger leer ist.

>Version anzeigen, 4800

>#Ver: Solmeta PRO V1.0-4 (Dec 03 2009)

>#mem:0KB

Mit "q" beenden Sie LeseSolm. Schalten Sie dann den Geotagger aus.

3.2 Anmerkungen

4 GeotagSolm

GeotagSolm ergänzt Bilder (oder XMP Sidecar Dateien) um GPS-Daten vom Geotagger. Vorsicht, Geotagging verändert Bilddateien, genauer gesagt werden GPS-Daten zu den Metadaten der Bilder hinzugefügt.4 Es ist dringend empfohlen die Originalbilder an einem sicheren Platz aufzubewahren. Für den Anfang sollten Sie nur mit Kopien in einem separaten Verzeichnis arbeiten. Anstatt die Bilddateien geozutaggen können die GPS Daten auch in XMP Sidecar Dateien gespeichert werden. Dann bleiben die Bilddateien unberührt. Außerdem können die ursprünglichen EXIF Metadaten gesichert werden, siehe Abs. 7. GeotagSolm benötigt ExifTool, was für Linux und viele andere Systeme verfügbar ist. Wenn Sie es für Ihre Distribution nicht finden, dann können Sie es auf der ExifTool Homepage [3] bekommen.

GeotagSolm ist dazu gedacht, Bilder einer Kamera mit montiertem Geotagger geozutaggen. Deshalb muß die NMEA Datei zwingend vom Geotagger stammen.5 Für Bilder einer anderen Kamera oder zur Verwendung anderer NMEA Dateien steht das Skript GeotagNMEA fürs Geotagging zur Verfügung, siehe Abs. 5.

4.1 Anleitung

  1. Starten Sie das Geotagging-Skript auf der Kommandozeile mit

    GeotagSolm.awk NMEA TIME IMAGEFILES

    Notwendige Argumente:

    +1 = +1:0:0, -1:13:3, ::4 = 0:0:4, -0:3 = -0:3:0.

    Beispiele:

    GeotagSolm.awk Solmeta_2011-01-22.nmea +1::7 DSC_4766.JPG DSC_4773.JPG Folder

    Hier wird angenommen, daß die Kamerazeit gleich (GPSTime + 3607 sec) ist. Die Dateien DSC_4766.JPG und DSC_4773.JPG sowie alle geeigneten Dateien im Verzeichnis Folder sollen geogetaggt werden.

    GeotagSolm.awk Solmeta_2011-01-22.nmea +1::7 *.xmp

    Wie zuvor, aber nun werden die GPS Daten in die XMP Dateien *.xmp geschrieben. Falls diese noch nicht existieren, können sie mit "CreateXMP.sh *.JPG" erzeugt werden. Siehe Abs. 7.2.

  2. Falls GeotagSolm beschädigte Sätze in der NMEA Datei findet, dann werden die ungefähren Zeilennummern angezeigt:

    >==== Die NMEA Datei enthält 8 Fehler ungefähr bei den Zeilen:

    >42, 15281, 15356, 17419, 18879, 18882, 18885, 18888

    >

    >Fehler ignorieren (i) oder abbrechen (a)?

    Hier wurden 8 Fehler gefunden und die entsprechenden ungefähren Zeilennummern angezeigt. Sie können diese Fehler mit "i" ignorieren oder GeotagSolm mit "a" abbrechen. Falls die NMEA Datei von der alten Geotagger Version 10.0 kommt, dann sollten Sie abbrechen und die Fehler in einem Texteditor korrigieren. Andernfalls werden möglicherweise nicht alle Bilder mit Geotags versehen. Tracklogs aus den neuen Versionen 10.1 oder 10.2 des Geotaggers enthalten normalerweise sehr viele GPS Positionen, und das Ignorieren der Fehler ist meist kein Problem.

  3. Nachdem GeotagSolm die Bilddateien den GPS Daten zugeordnet hat, und bevor die Bilddateien erweitert werden, wird ein Menü angezeigt:

    >Befehl: (geo)  Geodaten mit ExifTool in Bilder schreiben

    >        (list) Liste mit den zum Geotaggen vorgesehenen Bildern anzeigen

    >        (arg)  ExifTool Argumente-Datei anzeigen

    >        (quit) Abbruch, temporäre Dateien bleiben erhalten

    Wählen Sie "list" um anzuzeigen, welche Dateien geogetaggt werden sollen. Falls einige Bilder nicht geogetaggt werden können, dann werden diese zuerst angezeigt. Prüfen Sie diese Liste auf Fehler. Mit "q" kommen Sie von der Liste wieder zurück zum GeotagSolm Menü.

    Das Kommando "arg" zeigt die Argumente für ExifTool an. Mit “q” kommen Sie zurück.

    "quit" beendet das Programm ohne daß etwas verändert wurde. Machen Sie davon Gebrauch, falls Sie Fehler in den obigen Listen gefunden haben.

    Nachdem Sie überprüft haben, daß alles in Ordnung ist, geben Sie "geo" ein, um ExifTool die Geodaten in die Dateien schreiben zu lassen. Achten Sie auf Fehlermeldungen von ExifTool. Prüfen Sie jetzt, ob die geogetaggten Dateien und die darin enthaltenen Metadaten von Ihren Bildprogrammen vernünftig gelesen werden können. Außerdem können Sie sich auf der ExifTool Homepage [3] über Kompatibilitätsprobleme informieren.

4.2 Anmerkungen

5 GeotagNMEA

GeotagNMEA ist ein Geotagging-Werkzeug, das ähnlich arbeitet wie GeotagSolm, allerdings akzeptiert es beliebige GPS Track Dateien im NMEA Format. Verwenden Sie es zum Geotaggen von Bildern aus einer Kamera, die nicht mit dem Geotagger verbunden war. Ebenso können Tracklogs aus anderen GPS Loggern verwendet werden. Die Dateien vom Geotagger werden auch unterstützt.

Bevor Sie fortfahren, lesen Sie bitte Abs. 4. Im folgenden werden nur die Unterschiede erklärt.

5.1 Anleitung

Starten Sie das Geotagging-Skript mit

GeotagNMEA.awk NMEA TIME IMAGEFILES

Notwendige Argumente:

Beachten Sie, daß die Einstellungszeilen in der Datei “.LeseSolm” den Präfix “GeotagNMEA” und nicht “GeotagSolm” tragen.

5.2 Blickrichtung

Standardmäßig wird die Magnetkompaß-Information vom Geotagger (im Satz $PTNTHPR) nicht von GeotagNMEA verwendet. Sie können den Kompaßsatz durch GeotagNMEA.UsePTN=1 in der Einstellungsdatei wieder einschalten. Es macht jedoch wenig Sinn den Magnetkompaß zu verwenden, wenn der Geotagger nicht fest mit der Kamera verbunden ist. Verwenden Sie GeotagSolm, falls er ordentlich an der Kamera ausgerichtet ist.

GeotagNMEA bestimmt die Blickrichtung aus der GPS Spur ($GPRMC), falls die Geschwindigkeit über einer bestimmten Schwelle liegt. Das ist nützlich für Bilder, die in Bewegungsrichtung aufgenommen wurden, z.B. durch die Frontscheibe eines Autos. Die Geschwindigkeitsschwelle (in km/h) ist in der Variable GeotagNMEA.MinvImgDir im Einstellungsabschnitt festgelegt. Der Standardwert beträgt 6 km/h, setzen Sie den Wert auf 999999, um diese Funktion abzuschalten.

5.3 EXIF DOP

GeotagNMEA liest den $GPGSA Satz, sofern vorhanden, und füllt den EXIF Eintrag MeasureMode entsprechend aus. “2” steht für einen 2D GPS Fix, und der HDOP Wert wird in EXIF DOP eingetragen. “3” bedeutet 3D GPS Fix, und PDOP wird anstelle von HDOP eingetragen. Falls $GPGSA fehlt, wird in EXIF DOP der HDOP Wert aus $GPGGA eingetragen.

6 RevGeotag

Für Bilder mit gültigen GPS Koordinaten lädt RevGeotag die zugehörigen Höhenwerte der Webseite geonames.org [4] herunter und aktualisiert den EXIF Eintrag “GPSAltitude”. Starten Sie das Skript mit

RevGeotag.awk x IMAGESFILES

wobei IMAGEFILES für die Bilder mit Koordinaten steht. x muß ersetzt werden durch a, b oder c, was folgendes bedeutet. Falls x gleich a ist, holt RevGeotag nur die Höhenwerte für Bilder ohne “GPSAltitude” Eintrag. Im Modus b werden alle Höhen heruntergeladen und angezeigt, aber nur Bilder ohne Höheneintrag aktualisiert. Wenn x durch c ersetzt wird, dann werden alle Bilder aktualisiert und bereits existierende Höheneinträge werden überschrieben. Beispiel:

RevGeotag.awk c *.JPG *.xmp

RevGeotag besitzt das gleiche Menü wie GeotagSolm und GeotagNMEA. Der Befehl “list” zeigt die Bilder zusammen mit den Höhenwerten von geonames.org und den Originalhöhen an. Welche Bilder aktualisiert werden hängt vom Modus a/b/c ab, wobei nur Modus c alte Höhen überschreibt. Falls ein alter Höheneintrag mit dem Wert altiold schon existiert, dann wird dieser im EXIF Eintrag “GPSProcessingMethod” in der Form ALT(altiold) gesichert.6 Auch der neue Wert altinew wird dort als DEM(xyz:altinew) gespeichert, wo xyz das digitale Höhenmodell (DEM) bezeichnet. Ein Ausschnitt aus der “list” Anzeige könnte so aussehen:

Bild 3: ./DSC_4467.JPG

Lat: +xx.xx2337°, Lon: +x.xx3281°

Höhe im Bild : +41.90 m

Neue Höhe    : +35.00 m, Diff = -6.90 m = -9.0% von (|alt|+|neu|)

GPS ProcessingMethod: GPS(A),ALT(41.9m),DEM(astergdem:35m)

Benutzen Sie den Befehl “geo”, um die Bilder mit den neuen Höhen zu aktualisieren. Vorher können Sie mit “arg” einen Blick in die ExifTool Argumentedatei werfen. Mit “quit” wird RevGeotag beendet ohne Änderungen vorzunehmen.

Zusätzlich zu den Einstellungen aus Abs. 4.2 können Sie folgende Variablen in der Einstellungsdatei “.LeseSolm” anpassen, siehe auch Abs. 2.1: Derzeit bietet geonames.org Höhendaten von drei DEMs an: astergdem, srtm3 und gtopo30 [10]. Das Standard DEM kann in

RevGeotag.geonamesEleService=astergdem

festgelegt werden. Zum Nutzen des geonames.org Web Service wird eine Anmeldung benötigt, wobei RevGeotag bereits freigeschaltet ist. Sie können sich jedoch auch selbst dort anmelden. In diesem Fall ersetzen Sie in der Zeile

RevGeotag.geonamesUser=lesesolm

lesesolm” durch ihren Benutzernamen bei geonames.org.7 In “.LeseSolm” können Sie außerdem einen HTTP Proxy angeben und andere Dinge einstellen, welche dort näher beschrieben sind.

7 Hilfsskripte

Zwei Behelfs-Shellskripte sind als nützliche Abkürzungen für ExifTool hinzugekommen. Die Skripte können Sie einfach nach Ihren Wünschen anpassen. Außerdem können NMEA Dateien mit StatNMEA analysiert werden.

7.1 BackupEXIF

"BackupEXIF.sh IMAGEFILES" erzeugt Sicherungen der EXIF Metadaten aus den Bilddateien in IMAGEFILES. Diese haben die Dateiendung ".orig.exif" und werden im versteckten Verzeichnis ".origexif" gespeichert. Zum Beispiel erzeugt das folgende Kommando die EXIF Dateien "foto.orig.exif" und "*.orig.exif":

BackupEXIF.sh foto.jpg *.JPG

Falls notwendig können die EXIF Daten aus "foto.orig.exif" wieder nach "foto.jpg" zurückgespeichert werden:

exiftool -P -tagsfromfile .origexif/foto.orig.exif -b -exif foto.jpg

Falls nur die GPS Daten und der UserComment zurückgespeichert werden sollen, dann kann folgendes Kommando verwendet werden:

exiftool -P -tagsfromfile .origexif/foto.orig.exif -gps:all -UserComment foto.jpg

Schauen Sie auf die ExifTool Homepage [3] nach weiteren Möglichkeiten.

Im allgemeinen ist es sinnvoll, die EXIF Metadaten zu sichern, bevor die Bilddateien mit irgendeinem Programm oder einer Betriebssystemfunktion verändert werden. Es gibt genug Anwendungen, die mit Metadaten nicht sorgfältig umgehen. Noch besser ist es die ursprünglichen Bilddateien von der Kamera oder Speicherkarte sofort zu sichern. Aber das verbraucht natürlich mehr Speicher als die ".orig.exif" Dateien.

7.2 CreateXMP

"CreateXMP.sh IMAGEFILES" erzeugt einfache XMP Sidecar Dateien, in die die GPS Daten gespeichert werden können anstatt in die Bilddateien zu schreiben. Zum Beispiel erzeugt

CreateXMP.sh *.JPG

die Dateien "*.xmp", welche zu den Bilddateien "*.JPG" gehören. Danach können die GPS Daten mit

GeotagSolm.awk NMEA TIME *.xmp

in die XMP Dateien "*.xmp" gespeichert werden. Dabei werden die ursprünglichen Bilddateien "*.JPG" nicht verändert.

Dieses Vorgehen ist natürlich nur dann nützlich, wenn Ihre Bildanwendungen mit XMP Sidecar Dateien zurecht kommen. Falls Ihre Bilder schon XMP Dateien haben, dann brauchen diese nicht mehr mit CreateXMP erzeugt werden und GeotagSolm bzw. GeotagSolm kann sofort auf die vorhandenen XMP Dateien angewendet werden.

7.3 StatNMEA

Für Zahlenfanatiker und Statistikfans führt StatNMEA eine einfache Analyse von GPS Tracklogs im NMEA Format durch. Starten sie das Skript durch

StatNMEA.awk NMEA

wobei NMEA für die NMEA Datei(en) steht.

Folgende Infos werden angezeigt, wobei MMM für “Mittelwert (mit), Maximum (max) and Minimum (min)” steht. In den Verteilungen einer Variable x steht [a,b) für a x < b.

  1. Häufigkeit einiger NMEA Sätze.
  2. MMM der Geschwindigkeit in $GPRMC, und die Geschwindigkeitsverteilung.
  3. Verteilung und MMM von HDOP aus $GPGGA, HDOP, PDOP und VDOP aus $GPGSA und Anzahl der gesichteten Satelliten (Sats in view) aus $GPGGA.
  4. Häufigkeit der verwendeten Satelliten für den GPS Fix (aus $GPGSA). MMM ihres Signal/Rausch-Verhältnisses (S/N), Minimum und Maximum ihrer Elevation und Azimuth (aus $GPGSV).
  5. Wie 4., jedoch für alle gesichteten Satelliten (sats in view) gemäß $GPGSV.
  6. Weitere Häufigkeiten

    1. GPS Fix Modus aus $GPGSA. 1: Kein Fix, 2/3: 2D/3D Fix.
    2. FAA mode indicator aus $GPRMC: A, D, E, ..., siehe Abs. 4.2.
    3. GPS Qualitätsindikator aus $GPGGA: 0, 1, 2, ..., die Werte hängen mit dem FAA mode indicator zusammen, Details finden Sie in [8].

Der Umfang der angezeigten Infos hängt von der Vollständigkeit der NMEA Datei ab. Für detailierte Satelliten Infos werden $GPGSA und $GPGSV benötigt. Die NMEA Satelliten ID Nummern entsprechen den PRN Nummern für ID 32. Ab ID > 32 ist die PRN Nummer gleich (ID + 87) . ID Nummern größer 32 gehören zu SBAS Satelliten (und anderen?).

7.3.1 Beispiel 1: Solmeta Geotagger Pro 10.0

Der Geotagger [2] zeichnet leider keine $GPGSA oder $GPGSV Sätze auf, daher sind die Infos etwas dünn.

StatNMEA 0.0.9

Lese Zeile   4788.

==== GPS Track enhält 4788 Zeilen.

Beginn: 2011:03:17 13:17:04.376

Ende:   2011:03:17 19:20:37.000

==== NMEA Sätze

GPRMC: 2243 = 100%

GPGGA: 132 = 5.88498%

PTNTHPR: 2262 = 100.847%

==== GPRMC speed (km/h)

RMC-Speed:  2243, mit =  2.25, max =  8.5, min =  0.0

Verteilung:

[  0,  2):  1245 = 55.5%

[  2,  7):   977 = 43.6%

[  7, 15):    21 =  0.9%

[ 15, 30):     0 =  0.0%

[ 30, 60):     0 =  0.0%

[ 60,120):     0 =  0.0%

[120,240):     0 =  0.0%

[240,500):     0 =  0.0%

[500,800):     0 =  0.0%

[800,inf):     0 =  0.0%

==== DOP Werte

GGA-HDOP:   132, mit =  1.35, max =  6.7, min =  0.8

GGA-Sats:   132, mit =  7.79, max =   11, min =    4

Verteilung:      ggaHDOP         gsaHDOP         gsaPDOP         gsaVDOP

[ 0, 1):      34 = 25.8%

[ 1, 2):      86 = 65.2%

[ 2, 3):       4 =  3.0%

[ 3, 4):       4 =  3.0%

[ 4, 5):       2 =  1.5%

[ 5, 6):       1 =  0.8%

[ 6, 7):       1 =  0.8%

[ 7, 8):       0 =  0.0%

[ 8, 9):       0 =  0.0%

[ 9,10):       0 =  0.0%

[10,11):       0 =  0.0%

==== Sats in use

==== Sats in view

==== GPS Fix Infos

RMC-FAA A:  1544 = 68.8%

RMC-FAA D:   689 = 30.7%

RMC-FAA E:     8 =  0.4%

GGA-FixQual 1:   113 = 85.6%

GGA-FixQual 2:    19 = 14.4%

7.3.2 Beispiel 2: Locosys GPS Walker

Dieser GPS Logger von Locosys [11] schreibt $GPGSA und $GPGSV Sätze mit, und es werden mehr Satelliten-Infos angezeigt.

StatNMEA 0.0.9

Lese Zeile  31713.

==== GPS Track enhält 31713 Zeilen.

Beginn: 2011:02:07 13:04:23.244

Ende:   2011:02:07 18:52:50.000

==== NMEA Sätze

GPRMC: 8810 = 100%

GPGGA: 8810 = 100%

GPGSA: 8810 = 100%

GPGSV: 5283 = 59.9659%

GPGSV Gruppen: 1761 = 19.9886%

==== GPRMC speed (km/h)

RMC-Speed:  8810, mit = 231.07, max = 865.3, min =  0.0

Verteilung:

[  0,  2):  2257 = 25.6%

[  2,  7):  2052 = 23.3%

[  7, 15):   286 =  3.2%

[ 15, 30):   290 =  3.3%

[ 30, 60):   835 =  9.5%

[ 60,120):   299 =  3.4%

[120,240):    38 =  0.4%

[240,500):   401 =  4.6%

[500,800):   834 =  9.5%

[800,inf):  1518 = 17.2%

==== DOP Werte

GGA-HDOP:  8777, mit =  2.41, max =  9.8, min =  0.8

GSA-HDOP:  8777, mit =  2.41, max =  9.8, min =  0.8

GSA-PDOP:  8777, mit =  3.80, max = 10.3, min =  1.4

GSA-VDOP:  8777, mit =  2.85, max =  9.1, min =  1.1

GGA-Sats:  8789, mit =  5.82, max =   10, min =    3

Verteilung:      ggaHDOP         gsaHDOP         gsaPDOP         gsaVDOP

[ 0, 1):      40 =  0.5%      40 =  0.5%       0 =  0.0%       0 =  0.0%

[ 1, 2):    4707 = 53.6%    4707 = 53.6%     562 =  6.4%    2316 = 26.4%

[ 2, 3):    1603 = 18.3%    1603 = 18.3%    3008 = 34.3%    2869 = 32.7%

[ 3, 4):     827 =  9.4%     827 =  9.4%    1788 = 20.4%    2564 = 29.2%

[ 4, 5):    1167 = 13.3%    1167 = 13.3%    1381 = 15.7%     411 =  4.7%

[ 5, 6):     307 =  3.5%     307 =  3.5%    1437 = 16.4%     252 =  2.9%

[ 6, 7):      20 =  0.2%      20 =  0.2%     116 =  1.3%      58 =  0.7%

[ 7, 8):      79 =  0.9%      79 =  0.9%      41 =  0.5%     183 =  2.1%

[ 8, 9):      25 =  0.3%      25 =  0.3%     131 =  1.5%     121 =  1.4%

[ 9,10):       2 =  0.0%       2 =  0.0%     312 =  3.6%       3 =  0.0%

[10,11):       0 =  0.0%       0 =  0.0%       1 =  0.0%       0 =  0.0%

==== Sats in use

Sat(GSA)  2:  5381 = 10.5%,  S/N( 1075), mit = 28.7, max = 44, min = 13, Ele = [10,48], Azi = [257,315]

Sat(GSA)  4:  5275 = 10.3%,  S/N( 1054), mit = 27.2, max = 46, min = 12, Ele = [40,63], Azi = [207,302]

Sat(GSA)  5:  2317 =  4.5%,  S/N(  459), mit = 25.6, max = 41, min = 12, Ele = [10,30], Azi = [298,307]

Sat(GSA)  7:  1429 =  2.8%,  S/N(  286), mit = 24.6, max = 37, min = 15, Ele = [63,70], Azi = [115,143]

Sat(GSA)  8:  1468 =  2.9%,  S/N(  294), mit = 22.2, max = 34, min = 13, Ele = [37,53], Azi = [180,181]

Sat(GSA) 10:  5291 = 10.4%,  S/N( 1059), mit = 28.7, max = 44, min = 12, Ele = [ 8,79], Azi = [277,332]

Sat(GSA) 11:  2927 =  5.7%,  S/N(  587), mit = 20.6, max = 37, min = 12, Ele = [11,81], Azi = [159,277]

Sat(GSA) 13:  6877 = 13.5%,  S/N( 1377), mit = 25.3, max = 42, min = 12, Ele = [16,85], Azi = [  1,359]

Sat(GSA) 14:   859 =  1.7%,  S/N(  174), mit = 20.3, max = 31, min = 12, Ele = [ 8,35], Azi = [ 38, 55]

Sat(GSA) 17:  3322 =  6.5%,  S/N(  664), mit = 23.6, max = 37, min = 12, Ele = [10,41], Azi = [219,289]

Sat(GSA) 19:  1115 =  2.2%,  S/N(  223), mit = 28.5, max = 40, min = 15, Ele = [26,35], Azi = [169,170]

Sat(GSA) 20:  3551 =  6.9%,  S/N(  709), mit = 21.5, max = 38, min = 12, Ele = [ 7,83], Azi = [ 70,327]

Sat(GSA) 23:  5327 = 10.4%,  S/N( 1065), mit = 23.2, max = 44, min = 12, Ele = [13,83], Azi = [ 48,189]

Sat(GSA) 24:  2886 =  5.6%,  S/N(  577), mit = 21.5, max = 36, min = 12, Ele = [21,85], Azi = [128,335]

Sat(GSA) 31:   745 =  1.5%,  S/N(  151), mit = 18.2, max = 33, min = 12, Ele = [14,24], Azi = [ 35, 50]

Sat(GSA) 32:  2342 =  4.6%,  S/N(  464), mit = 21.3, max = 39, min = 12, Ele = [26,80], Azi = [ 58,241]

==== Sats in view

Sat(GSV)  2:  1289 =  6.6%,  S/N( 1088), mit = 28.5, max = 44, min =  7, Ele = [ 1,48], Azi = [257,315]

Sat(GSV)  3:   174 =  0.9%,  S/N(   19), mit = 17.5, max = 22, min = 12, Ele = [ 1, 4], Azi = [163,163]

Sat(GSV)  4:  1503 =  7.6%,  S/N( 1270), mit = 25.9, max = 46, min =  8, Ele = [ 6,63], Azi = [207,307]

Sat(GSV)  5:   576 =  2.9%,  S/N(  467), mit = 25.3, max = 41, min =  7, Ele = [ 1,30], Azi = [290,307]

Sat(GSV)  7:  1109 =  5.6%,  S/N(  557), mit = 22.6, max = 37, min =  7, Ele = [ 2,71], Azi = [105,179]

Sat(GSV)  8:   853 =  4.3%,  S/N(  466), mit = 22.1, max = 34, min =  9, Ele = [ 1,53], Azi = [180,185]

Sat(GSV) 10:  1411 =  7.2%,  S/N( 1206), mit = 27.6, max = 44, min =  7, Ele = [ 1,79], Azi = [271,332]

Sat(GSV) 11:   766 =  3.9%,  S/N(  596), mit = 20.5, max = 37, min =  7, Ele = [ 1,81], Azi = [156,277]

Sat(GSV) 12:    49 =  0.2%,  S/N(   41), mit = 20.7, max = 27, min = 15, Ele = [ 1, 1], Azi = [350,352]

Sat(GSV) 13:  1536 =  7.8%,  S/N( 1475), mit = 25.1, max = 42, min =  7, Ele = [ 6,85], Azi = [  1,359]

Sat(GSV) 14:   307 =  1.6%,  S/N(  267), mit = 20.8, max = 37, min =  7, Ele = [ 1,37], Azi = [ 38, 58]

Sat(GSV) 16:   949 =  4.8%,  S/N(  200), mit = 21.1, max = 37, min =  7, Ele = [ 1, 5], Azi = [ 27, 74]

Sat(GSV) 17:  1227 =  6.2%,  S/N(  869), mit = 22.7, max = 39, min = 10, Ele = [ 3,41], Azi = [211,317]

Sat(GSV) 19:   225 =  1.1%,  S/N(  225), mit = 28.4, max = 40, min =  9, Ele = [26,35], Azi = [169,170]

Sat(GSV) 20:  1629 =  8.3%,  S/N(  807), mit = 21.5, max = 38, min =  7, Ele = [ 1,83], Azi = [ 70,327]

Sat(GSV) 22:   225 =  1.1%,  S/N(   34), mit = 16.5, max = 25, min =  7, Ele = [ 1, 8], Azi = [ 61, 64]

Sat(GSV) 23:  1727 =  8.8%,  S/N( 1323), mit = 22.8, max = 44, min =  7, Ele = [ 1,83], Azi = [ 48,193]

Sat(GSV) 24:   908 =  4.6%,  S/N(  586), mit = 21.4, max = 36, min =  7, Ele = [ 1,85], Azi = [128,335]

Sat(GSV) 25:   294 =  1.5%,  S/N(   28), mit = 17.1, max = 27, min =  8, Ele = [--,--], Azi = [  2, 11]

Sat(GSV) 26:   243 =  1.2%,  S/N(   31), mit = 16.8, max = 23, min = 13, Ele = [ 1, 9], Azi = [249,257]

Sat(GSV) 28:   225 =  1.1%,  S/N(  140), mit = 19.8, max = 34, min =  9, Ele = [14,19], Azi = [274,282]

Sat(GSV) 30:   511 =  2.6%,  S/N(    3), mit = 16.3, max = 17, min = 16, Ele = [ 1, 2], Azi = [ 33, 52]

Sat(GSV) 31:   716 =  3.6%,  S/N(  357), mit = 19.4, max = 38, min =  7, Ele = [ 1,26], Azi = [ 27,113]

Sat(GSV) 32:  1185 =  6.0%,  S/N(  489), mit = 21.0, max = 39, min = 10, Ele = [ 1,80], Azi = [ 58,241]

Sat(GSV) 33:    17 =  0.1%,  S/N(   17), mit = 27.1, max = 33, min = 22, Ele = [29,39], Azi = [205,211]

Sat(GSV) 34:     1 =  0.0%,  S/N(    1), mit = 28.0, max = 28, min = 28, Ele = [--,--], Azi = [---,---]

Sat(GSV) 37:    21 =  0.1%,  S/N(   21), mit = 27.2, max = 33, min = 23, Ele = [32,38], Azi = [151,164]

Sat(GSV) 39:     1 =  0.0%,  S/N(    1), mit = 31.0, max = 31, min = 31, Ele = [31,31], Azi = [159,159]

==== GPS Fix Infos

GSA-Fix 1:    33

GSA-Fix 2:   203

GSA-Fix 3:  8574

RMC-FAA A:  8810 = 100.0%

GGA-FixQual 0:    33 =  0.4%

GGA-FixQual 1:  8777 = 99.6%

Literatur

[1]   LeseSolm project page at SourceForge, http://sourceforge.net/projects/lesesolm/; news and update announcements, http://sourceforge.net/news/?group_id=397341; documentation, http://sourceforge.net/projects/lesesolm/files/doc/

[2]   Solmeta Geotagger Pro, www.solmeta.com

[3]   ExifTool by Phil Harvey, www.sno.phy.queensu.ca/~phil/exiftool/

[4]   GeoNames geographical database: www.geonames.org

[5]   GAWK, www.gnu.org/software/gawk/

[6]   Cygwin: Linux environment under Windows, http://cygwin.com/

[7]   USB-COM bug in Ubuntu 10.10: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/661321, http://groups.google.com/group/openzwave/browse_thread/thread/0708dd14cf8e91eb

[8]   NMEA, http://gpsd.berlios.de/NMEA.html, www.gpsinformation.org/dale/nmea.htm, http://nmea.de/

[9]   Compass sentence $PTNTHPR, www.magneticsensors.com/datasheets/hmr3000_manual.pdf

[10]   Digital elevation models: www.geonames.org/export/web-services.html#srtm3, www.ersdac.or.jp/GDEM/E/2.html

[11]   Locosys GPS Walker, www.locosystech.com/product.php?zln=en&id=51

[12]   Thanks to Sebastian Hofer (www.gps-camera.eu) for useful correspondence and information about the Geotagger.