bernd margotte photography


Geotagging

Einleitung

Unter Geotagging versteht man die geografische Referenzierung von Bildern. Es gibt sogar ein deutsches Wort dafür: Verortung. Da es aber praktisch nicht verwendet wird bezieh ich mich in diesem Artikel auf geotagging. Das Bild wird mit einem elektronischen ‚Anhänger' (einem Tag) versehen, der die geografischen Koordinaten des Aufnahmeortes enthält. Das Tag wird am einfachsten in das EXIF File des digitalen Bildes geschrieben. Das Exif File beinhaltet auch all die anderen technischen Daten über die Aufnahme wie Belichtungszeit, Blende, Objektiv usw. Die Koordinaten ermittelt man entweder mit einem GPS Empfänger bei der Aufnahme oder man führt die Daten später am Computer mit einer elektronischen Karte (z.B. Google Maps) nach. In diesem Artikel beschreibe ich meine Vorgehensweise und wie man einfach eine grosse Menge von Aufnahmen in einem Workflow georeferenziert.

Schwechat Map etrex
Links: Aufnahme der OMV bei Wien Schwechat, Mitte: Aufnahmeort in Google Maps, Rechts: GPS Empfänger, der zum Geotagging verwendet wurde

Der GPS Empfänger

GPS (Global Positioning System) Empfänger sind heutzutage (Anfang 2008) schon weit verbreitet. Für das Geotagging benötigt man nicht unbedingt einen Empfänger. Will man aber einfach grosse Mengen von Fotos georeferenzieren ist der Einsatz eines solchen Gerätes empfehlenswert, da man sich so viel Computerarbeit erspart und den Ablauf in grossen Teilen automatisiert. Für das Geotagging verwendet man die automatische Wegaufzeichnung des GPS Empfängers, das Tracking. Der GPS Empfänger speichert im Tracking Modus nach vorgegebenen Regeln Wegpunkte ab, die man später in den Computer überträgt. Die Trackdaten beinhalten nicht nur die geografische Position sondern auch die Uhrzeit, wann welcher Ort gespeichert wurde. Genau diese Information ist nötig, um die Track Daten später mit den Fotos zu synchronisieren. Es ist deshalb wichtig die Uhr des GPS Empfängers mit der der Digitalkamera abzugleichen. Bei meiner Kamera kann ich nur die Stunden und Minuten eingeben, die Sekunden dagegen nicht. Sobald man die Eingaben bestätigt beginnt die Uhr zu laufen. Am einfachsten man stellt eine Zeit ein und bestätigt die Daten erst, wenn die Uhr des GPS Empfängers auf die nächste Minute wechselt. Ich konnte so eine gute Übereinstimmung erreichen. Nachträglich nimmt man mit der Kamera das Display des GPS Empfängers mit der GPS Uhr auf und kann am Computer die Aufnahmedaten mit der GPS Uhr in der Aufnahme vergleichen. Im unten gezeigten Beispiel ist die Differenz zwischen GPS Empfänger und Kamera Uhr 3 Sekunden. Die GPS Uhr ist übrigens hochgenau (Atomuhrgestützt), da das ganze System auf hochgenauen Uhren aufgebaut ist. Sobald das GPS Gerät Daten von den Satelliten empfängt wird seine Uhr mit den Uhren der Satelliten abgestimmt.

display
Im Bild sieht man links das abfotografierte Display des GPS Empfängers und rechts das von der SW ausgelesene EXIF File. Die Zeit stimmt auf 3 Sekunden genau überein.

Für das Geotagging muss man nicht unbedingt einen Empfänger mit Display verwenden. Es gibt auch eine ganze Reihe von Empfängern, die speziell für das Tracking entwickelt wurden. Diese Empfänger verfügen nur über eine USB oder Bluetooth Interface um die Daten auszulesen sowie ein paar LEDs, die den Status des Gerätes anzeigen. Da ich aber gerne genauer Bescheid wissen möchte was das Gerät gerade tut und wie genau die Positionsbestimmung ist, habe ich mir einen GPS Empfänger mit Display zugelegt. Geräte der neueren Generation haben sehr empfindliche Empfänger (so genannte High Sensitiv Empfänger), die auch bei ungünstigen Verhältnissen noch einen ausreichenden Satellitenempfang zur Positionsbestimmung ermöglichen. Es werden z.B. von Garmin Geräte mit SIRF Empfängern oder vom Typ H (Eigenentwicklung von Garmin) vertrieben, die über einen Empfänger mit hoher Empfindlichkeit verfügen. Das einfachste Gerät von Garmin ist der eTrex H, den ich mir zugelegt habe. Navigationsgeräte, wie sie im Auto Verwendung finden, eignen sich übrigens nicht fürs geotagging, da sie keinen Track aufzeichnen.

display display
Display eines Garmin GPS Empfängers, links oben Empfangsqualität: 3m Genauigkeit im Differentialmodus, Rechts: Detail aus links, unten Satelliten Nummer und Empfangspegel mit Angabe des Differentialmodus 'D' , Satellit 33 ist der SBAS Satellit

Wie bei Garmin üblich wird auf der ersten Darstellungsseite der Satellitenempfang dargestellt. Im oberen Teil des Displays wird eine Statusmeldung eingeblendet, darunter befinden sich eine Himmelansicht mit den Positionen der einzelnen Satelliten und darunter die Empfangspegel. Unterhalb der Empfangspegel findet man die dazugehörige Satellitennummer (das ist die PRN, Pseudo Random Number) des GPS Systems NAVSTAR (Navigation System for Timing and Ranging). Sobald die Daten eines Satelliten nicht nur empfangen sondern auch für die Positionsbestimmung verwendet werden, wird der Balken für den entsprechenden Satelliten schwarz angezeigt. Wird der Satellit nur empfangen aber noch nicht ausgewertet bleibt der Balken grau. Sind zusätzlich Differentialdaten über das sattelitengestützte Augmentierungssystem (SBAS) verfügbar, wird der Buchstabe 'D' für Differentialbetrieb im Empfangsbalken eingeblendet (s. Abbildung oben). SBAS muss man im Setup unter dem Punkt WAAS (Wide Area Augmentation System) aktivieren. Die Positionsgenauigkeit wird im oberen Teil des Displays bei der Statusmeldung angezeigt. Dabei bedeutet die Angabe 4m, dass man sich mit 50% Wahrscheinlichkeit innerhalb eines Radius von 4m befindet, mit 95% innerhalb eines Radius von 8m und mit 98,9% innerhalb eines Radius von 10m. Die Positionsgenauigkeit ist also ca. 10m. Bei meinem Empfänger liegen die Angaben meist im Bereich von 4m. Kurz nach dem Einschalten kann die Genauigkeit kleiner sein wird aber mit zunehmender Anzahl empfangener und ausgewerteter Satelliten geringer. SBAS steigert die Empfangsgenauigkeit weiter. Es gibt im Moment 32 NAVSTAR Satelliten, entsprechend werden PRN von 1 bis 32 verwendet. Nummern grösser als 32 sind SBAS Satelliten und werden ausschliesslich im SBAS Betrieb angezeigt. Diese Satelliten verteilen nur das Differentialsignal und kein GPS Signal zur Positionsbestimmung. Das SBAS Signal wird meist über Geostationäre Satelliten ausgestrahlt, die sich von Europa aus im Süden befinden. In Europa werden die Satelliten 33 (das ist ein Inmarsat) und 44 (ebenfalls ein Inmarsat) für SBAS verwendet. Empfängt man in Europa den Satelliten 35 sollte man WAAS ausschalten, da dieser Sender nur Korrekturdaten für Nordamerika ausstrahlt.

etrex etrex
Links: Display der Satellitenanzeige mit Darstellung der empfangenen Satelliten und deren Empfangspegel sowie Differentialbetrieb, Rechts: Oben, Koordinaten

Der eTrex H zeichnet wie die meisten Garmin Empfängern bis zu 10'000 Track Punkte auf. Im Setup bestimmt man die Regeln für das aufzeichnen der Datenpunkte. Im Automatikmodus entscheidet das Gerät selbstständig wie oft Punkte gespeichert werde. Ich konnte aber keine Angaben finden unter welchen Gesichtspunkten die Aufzeichnung erfolgt. Für das Geotagging sinnvoll ist die Aufzeichnung nach Distanz. Setzt man z.B. die Distanz zwischen zwei Datenpunkte auf 20m so kann man eine Strecke von insgesamt 200km aufzeichnen (s. Abbildung unten rechts). Das sollte für die ersten paar Wanderungen reichen. Nach meiner Erfahrung macht dieser Wert durchaus Sinn. Kommt man öfter dazu den Empfänger auszulesen kann man die Aufzeichnungspräzision noch erhöhen. Bei festen Distanzwerten muss man aber beachten dass sich der Speicher schnell füllt wenn man das Gerät z.B. im Auto nicht ausschaltet. Hier ist es Sinnvoll das Gerät nur einzuschalten, wenn man fotografiert. Danach schaltet man es wieder aus.

etrex etrex
Links: Prozentuale Anzeige des Füllstandes des Track-Speichers, Rechts: Vorgaben für die Track Datenspeicherung, hier alle 20m zeitunabhängig
etrex etrex
Die aufgezeichneten Wegpunkte in Google Earth: Der Abstand von 20m wird in etwa eingehalten (Skala unten links: 80m, ein Teilstrich entspricht 20m)

GPS Daten auslesen

Es gibt viele Möglichkeiten, die Trackdaten aus dem GPS Gerät in den Computer zu laden. Sehr universell einsetzbar ist das Freewaretool gpsbabel, dass auch als Datenkonverter eingesetzt werden kann. Dazu später mehr. Gpsbabel ist ein Kommandozeilenprogramm. Man startet also mit dem Befehl cmd unter Start -> Ausführen das Kommandofenster in Windows und wechselt in das Verzeichnis, in dem gpsbabel installiert ist. Liegt gpsbabel z.B. im Verzeichnis c:\gpsbabel gibt man einfach „cd c:\gpsbabel“ in das Kommandofenster ein. Am besten man schaut sich nun erst einmal die Befehle von gpsbabel im beiliegenden HTML File an. Das Input Format wird mit –i, das Input File mit –f angekündigt. Mit –o wird das Ausgabeformat und mit –F das Ausgabefile angekündigt. Liest man ' aus einem Empfänger aus gibt man als Format dem Empfängertyp, hier also Garmin, an und als File den Port. Da mein GPS Empfänger über einen RS232 Port verfügt der an COM1 angeschlossen ist, gibt man hier einfach COM1 an. Will man Trackdaten auslesen muss das mit –t initialisiert werden.

Möchte man nun also Tracks aus einem über RS232 Port angeschlossenen Garmin Gerät auslesen und die Daten in einem gpx File abspeichern sieht das folgendermassen aus:


gpsbabel –t –i garmin –f com1 –o gpx –F tracks.gpx


Je nachdem wie viele Trackpunkte man gespeichert hat kann das eine Weile dauern (einige Minuten). Zum Testen beginnt man also lieber mit einem kleinen Trackfile. Wie gross dies ist kann man in einem Garmin Empfänger als Prozentzahl auslesen. Die Zahl entspricht dabei dem Prozentualen Anteil der maximal speicherbaren Punkte. 30% bedeutet bei meinem Gerät also, dass ca. 3000 Punkte gespeichert wurden (s. Abbildung oben links). Ich habe das in einem Test verifiziert. Stellt man den Track Modus auf 'Distance' und '20m' zeigt der Speicherstand nach 20km 9% an, was in etwa den 1000 Wegpunkten entspricht. Hier möchte ich noch erwähnen dass man die Tracks im Garmin Gerät nicht mit Save Tracks abspeichern darf, da sonst die Zeitinformationen verloren gehen. Das gpx Format ist übrigens ein weit verbreitetes Format, das auch Waypoints, Routen usw. abspeichern kann. Mehr Informationen über das GPX XML Format findet man hier.

 

Will man sich die Trackdaten als erstes z.B. auf Google Earth anzeigen lassen um zu überprüfen was alles ausgelesen wurde wandelt man das File in ein kml (keyhole markup language) File um. Mit gpsbabel geht das ganz leicht:


gpsbabel –i gpx –f tracks.gpx –o kml –F tracks.kml


screenshot
gpsbabel Kommandozeilenverlauf, obere Zeile: Auslesen der Daten aus dem Empfänger, Zweite Zeile: Umwandeln der gpx Daten in ein Google Earth verständliches Datenfile des Typs kml

Alternativ kann man auch ein GUI (Graphical User Interface) für gpsbabel verwenden. Braucht man allerdings immer wieder die gleichen Befehle ist man mit dem Kammondozeilenverfahren schneller. Unten ist ein Screenshot des GUI zu sehen.

screenshot
GUI zu pgsbabel: Oben wählt man den Input, liest man aus einem Gerät aus muss man einen Haken setzten, Weiter unten gibt man das Ausgabeformat und den Dateinamen mit Endung an. Danach wählt man was man alles auslesen möchte (hier Tracks) und klickt dann auf 'und los'

Hat man Google Earth installiert muss man nun noch das kml File doppelklicken und schon wird das Programm gestartet und der Track angezeigt. Unter Orte -> Temporäre Orte wird das GPS Gerät angezeigt. Im Unterordnern befinden sich die verschiedenen active Logs, die nun einzeln eingeblendet werden können. Die Datenpunkte kann man ebenfalls einzeln zu und abschalten.

screenshot
Darstellung des kml Files in Google Etarh, Links: Active Logs unter Orte'

Werfen wir noch kurz einen Blick auf das ausgelesene gpx File. Die Trackdaten findet man nach dem Element <trk>:


<trk>
<name>ACTIVE LOG</name>
<number>1</number>
<trkseg>
<trkpt lat="48.148913383" lon="16.278669834">
<ele>173.655273</ele>
<time>2008-01-29T14:27:06Z</time>
</trkpt>


Der Name der Aufzeichnungsdatei ist hier 'Active Log' und wird bei mehreren Logs einfach durchnumeriert, der zweite Log hiesse dann 'Active Log #2'. Nach der Einleitung eines Segmentes mit <trkseg> werden die gesammelten Trackdatenpunkte nach <trkpt> aufgelistet. Als erstes folgen die Koordinaten, danach die Höhe über Meeresspiegel (Elevation <ele>) und danach die hier wichtige Ortsuhrzeit <time>. Bei abgespeicherten Tracks fehlt die Uhrzeit und kann deshalb für das automatisierte geotagging wie weiter unten beschrieben nicht verwendet werden.

GPS Tracks mit Fotos synchronisieren

Es gibt verschiedene Tools um gps Tracks mit den Aufnahmen einer Digitalkamera zu Synchronisieren. Will man aber seine RAW files verwenden, wird die Auswahl kleiner. Ich verwende im Moment das Tool geosetter von Friedemann Schmidt. Es erlaubt verschiedene RAW files mit GPS Datenfiles zu verbinden. Da man mit dem Tool auch Adobe DNG Files verarbeiten kann, gibt es praktisch kein RAW File Format, das sich nicht mit geosetter verwenden liesse (Man kann ja praktisch alle RAW Files in DNG verwandeln).

Hat man wie oben ein gpx track aus seinem GPS Gerät ausgelesen, kann man diesen Track mit den Bildern synchronisieren. Man öffnet dazu die Bilder die man geotaggen möchte in Geosetter. Anschliessend öffnet man unter ‚Synchronisieren mit GPS Daten' das entsprechende gpx File. Danach sucht geostter im gpx File nach Georeferenzdaten, die zu den entsprechenden Aufnahmezeiten passen. Anschliessend werden in einer Geodatenbank die nächsten Ortsnamen gesucht und zur Auswahl gestellt. Man wählt den Ort, dem der Aufnahmeort am besten entspricht. Der ganze Vorgang geht schnell und unkompliziert vor sich. Nach der Synchronisation muss man nur noch die Daten in die RAW Files schreiben. Die Geodaten sind nun als Metadaten im RAW File gespeichert und können von jedem Programm gelesen werden. Einige Programme bieten die Möglichkeit mittels Mausklick die Position in google maps anzuzeigen. Auch Uploadprogramme für Google Earth wie etwa Panoramio können die Daten verwerten und erlauben so einen einfachen upoload in Google Earth.

screenshot screenshot
Geosetter Screenshots, Links: Ordnerdarstellung mit Fotos und Geolocations aus Google Maps , Mitte: Fotos mit Geodaten
screenshot
Geosetter Screenshots: Details eines Fotos






zum Anfang

Zurück zur Übersicht