04
manuelles Geotagging (GPS) mit exiv2
Bei dem Versuch einige Bilder manuell mit GPS Koordinaten zu versehen,
hat mir exiv2 gute Dienste geleistet. Nachdem ich herausgefunden habe,
wie man es richtig nutzt, schreibe ich hier eine Zusammenfassung für
mich zum Nachschlagen und für alle Interessierten, die sich die
Recherche dann hoffentlich sparen können.
exiv2 ist ein tolles Programm, ich habe schon beschrieben wie man es nutzen kann um die Brennweitenverteilung seiner Bilder zu extrahieren. Nun will ich damit GPS Koordinaten in Bilder einfügen. An die Koordinaten kann man via Google Maps oder OpenStreetMap kommen. Bei Google Maps muss man sich die URL zum kopieren anzeigen lässt und den Wert finden, der in der Form "&ll=12.34567219,98.76543060" angegeben ist. OpenStreetMap ist einfacher, sobald man über einen der Reiter am oberen Seitenrand fährt, werden die Koordinaten angezeigt.
Ich habe mit einer Datei gearbeitet, in die ich neben den GPS Daten noch ein Copyright und Kontaktdaten eingefügt habe. Diese konnte ich dann auf alle betreffenden Bilder anwenden. Doch zunächst die Erklärung dazu:
set Exif.Image.Copyright (c) David Rekowski
set Exif.Photo.UserComment david.rekowski@eternium.de
set Exif.GPSInfo.GPSLatitude 12/1 34567219/1000000 0/1
set Exif.GPSInfo.GPSLatitudeRef N
set Exif.GPSInfo.GPSLongitude 98/1 76543060/1000000 0/1
set Exif.GPSInfo.GPSLongitudeRef E
set bezeichnet exiv2 nur, dass der entsprechende Wert in den EXIF Daten gesetzt werden soll. Dann folgt der Komplette Tag, d.h. mit Kategorie. Als drittes dann der Wert. Für Copyright und UserComment ist das glaub ich klar. GPSLatitude bezeichnet den Breitengrad, GPSLongitude den Längengrad. GPSLatitudeRef und GPSLongitudeRef bezeichnen die Himmelsrichtung in N/S oder W/E. für Deutschland wird das immer Nord und East sein, weil wir uns östlich des 0° Meridians befinden und nördlich des Äquators.
Die GPSLatitude GPSLongitude Werte setzen sich aus Grad, Winkelminute und Winkelsekunde zusammen. In unserem Beispiel von oben haben wir 12° Nördlicher Breite und 98° Östlicher Länge, das ist die Zahl vor dem Dezimalpunkt. Da EXIF die Werte als rationale Zahlen erwartet, machen wir einen Bruch draus, in dem wir durch 1 dividieren. Die Winkelminute ist einfach der Betrag rechts vom Dezimalpunkt als rationale Zahl mit einer Vorkommastelle. Das heißt wir dividieren die Zahl durch 1000000, eine 1 mit 6 Nullen (=> 7 Stellen), weil die Zahl 8 Stellen hat. Wir könnten die Minute auch aufteilen auf die Sekunde, da das so aber einfacher ist, geben wir für die Sekunde nur noch 0/1 an.
Wir speichern die Datei z.B. unter GPS.txt. Um die Daten jetzt auf beliebige Bilddateien anzuwenden führen wir folgenden Befehl aus:
$ for i in *.JPG; do exiv2 -m GPS.txt $i; done
Weiterführende Links:
Informationen über die verfügbaren Tags finden sich hier: www.exiv2.org/tags.html
Eine Beschreibung wie man EXIF daten via exiv2 setzt oder löscht findet sic hier: www.exiv2.org/sample.html#modify
Die Manpage zu exiv2 führt einige Nützliche Beispiele auf, zu finden u.a. hier: linux.die.net/man/1/exiv2
Google maps: maps.google.com
OpenStreetMap: www.openstreetmap.org

2 Antworten zu “manuelles Geotagging (GPS) mit exiv2”
ja, der Befehl hat bei mir auch oft genug nicht geklappt, bis ich das herausgefunden hatte.
Kommentar schreiben: