Bilder mit GPS-Koordinaten versehen

Leider haben Consumer-Kameras ja noch kein GPS (meine Dezember 2009 gekaufte jedenfalls nicht). Aber wenn man ein Outdoor-GPS-Gerät sein eigen nennt, kann man das ja zum Glück recht einfach anderweitig erledigen. So ein Gerät (ich habe ein eTrex Vista HCx von Garmin) läuft mit 2 AA-Batterien ca. 20 Stunden, und man kann es einfach im Rucksack oder der Jackentasche mit sich rumtragen. Dabei zeichnet es jede Sekunde die Position in einer GPX-Datei (eine Datei pro Tag) auf Speicherkarte auf.

Prinzipiell täte es auch ein einfacher GPS-Logger (der dann deutlich kompakter ausfallen könnte), aber das Display ist ganz praktisch. Die Zeit auf der Kamera muss man ja in der Regel manuell einstellen — eine automatische Synchronisation mit GPS oder einer anderen Zeitnormalquelle haben die Dinger nicht. Das könnte man tun, man kann es aber genauso gut lassen. Denn so eine Uhr hat ja auch ein wenig Gangabweichung, beim nächsten Urlaub stimmt es dann schon wieder nicht. Eine Minute Abweichung ist jedenfalls (mir) zuviel, um mich für die GPS-Korrelation darauf zu verlassen.

An dieser Stelle kommt das Display des GPS-Empfängers ins Spiel: Man macht ab und zu (am Anfang und am Ende des Urlaubs beispielsweise …) Fotos von einer als zuverlässig bekannten Uhrzeitanzeige – dafür bietet sich die des GPS-Empfängers an (Beispiele hier und hier). Dann hat man die Kamerazeit (über EXIF-Daten) und die echte Zeit in einem Foto und kann somit die Differenz ermitteln.

Beispiel: Ich hatte zwei Fotos vom GPS-Empfänger gemacht:

  • Auf dem ersten Foto zeigte der GPS-Empfänger 12:04:40 Uhr am 30. Juli 2011 (Europe/Berlin, also MESZ). Nach Ortszeit (in diesem Fall Island, also erfreulicherweise gleichzeitig UTC – es entfällt also die schwierige Entscheidung, welche von beiden ich nehmen soll) ist das 10:04:40 Uhr. Die Zeit der Kamera war 11:06:09 (also vermutlich MEZ, ohne S) am 30. Juli 2010 (sic!). Um von der Kamerazeit auf die richtige Zeit zu kommen, muss man also ein Jahr hinzuzählen, 1 Stunde abziehen, 2 Minuten abziehen und 31 Sekunden hinzuziehen (bzw: 1:29 Minuten abziehen).
  • Auf dem zweiten Foto zeigte der GPS-Empfänger 13:13:10 Uhr am 2. August 2011 (MESZ). Nach Ortszeit/UTC ist das 11:13:10 Uhr. Die Zeit der Kamera war 12:14:38 (MEZ) am 2. August 2010 (sic!). Um von der Kamerazeit auf die richtige Zeit zu kommen, muss man also ein Jahr hinzuzählen, 1 Stunde abziehen, 2 Minuten abziehen und 28 Sekunden hinzuziehen (also 1:28 Minuten, und damit nur eine Sekunde Abweichung zum ersten Foto, die auch Rundungsfehlern geschuldet sein können).

Nachdem wir nun also wissen, wie wir die EXIF-Zeit justieren müssen, können wir diese Änderung umsetzen. Als Tool dafür benutze ich exiv2. Die relevanten Stellen der man-Page lauten:

Benutzung: exiv2 [ Optionen ] [ Aktionen ] Datei ...

Ändert die Exif-Metadaten von Bildern.

Aktionen:
ad | adjust ändert die Exif-Zeitstempel um eine gegebene Zeit. Diese
Aktion benötigt mindestens eine der Optionen -a, -Y, -O oder -D.
[...]

-a time Zeitjustierung im Format [-]HH[:MM[:SS]]. Diese Option wird
nur in Zusammenhang mit der Aktion 'Justieren' benutzt.
-Y yrs Justierung von Jahren in der Aktion "justieren".
-O mon Justierung der Monate in der Aktion 'justieren'.
-D day Jusitierung von tagen in der Aktion "Justierung".

In unserem Fall ergibt das:

exiv2 -Y 1 -a -01:01:28

In diesem Fall ist es herzlich egal, ob man nun -01:01:28 oder -01:01:29 schreibt. Bei größerem Drift sind natürlich ggf. andere Maßnahmen erforderlich. Interpolieren dürfte manuell leider etwas aufwendig werden.

Dieser Befehl muss natürlich auf alle Fotos angewendet werden. Bei mir haben diese die Endung .JPG (nicht .jpg!). Es ergibt sich folgender Befehl:

for i in *.JPG; do exiv2 -Y 1 -a -01:01:28 $i; done

Als nächstes kopiere ich die GPX-Tracks für die entsprechenden Tage ins selbe Verzeichnis wie die Bilder und rufe gpscorrelate-gui auf. Dort füge ich zunächst alle Fotos hinzu. Dort muss man nun leider jede GPX-Datei einzeln auswählen. “Interpolate”, ggf. “Between Segments” ankreuzen, “Correlate Photos” klicken – fertig.

Jetzt haben die Fotos GPS-Koordinaten in ihrem EXIF-Block. Bei Flickr und ähnlichen Diensten erscheinen sie dann in einer Karte (Achtung: Bei Flickr muss man das aus Datenschutzgründen in den Account-Einstellungen vor dem Hochladen aktivieren!).

3 thoughts on “Bilder mit GPS-Koordinaten versehen

  1. Danke für den Denkanstoß! Ich tagge meine Bilder immer mit dem Geosetter (weiß nicht, ob es den abseits von Windows gibt) und kann dort die Abweichung zwischen Kamera und GPX-Trakc ebenfalls vorgeben. Bisher habe ich die allerdings immer Pi-mal-Daumen anhand von markanten Fotos und deren ermittelter Position in der Karte “erahnt”. Mir die Zeit aus dem Garmin zu holen, kam mir auch schon mal in den Sinn, aber jedesmal bin ich drüber weg. Nun habe ich mir den Geko 301 mal näher angesehen und tatsächlich entdeckt, wie ich mir dort die Zeit anzeigen lassen kann! Ein Foto davon und gut ist für den Tag. Schon die zweite nützliche Neuerung für den kleinen Garmin, nachdem ich entdeckt habe, dass ich WAAS aktivieren kann :-)

  2. Erfolgsmeldung: super simpel und hat genauso funktioniert :-) Geosetter kann übrigens auch die Bildattribute anpassen. Seien es die Exif-Daten oder die reinen Dateiattribute.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>