Wenn ein GPS Fix doch keiner ist

Ich verwende zum Photomapping bei OpenStreetMap die Sony DSC-HX5V – eine Digitalkamera mit eingebautem GPS und Kompass.

Trotz AGPS kann es bei dieser Kamera immer noch einige Sekunden dauern bis eine GPS Position gefunden wird. Bislang war ich der Auffassung dass es nicht so schlimm ist. In der Regel läuft immer ein GPS Logger mit so dass ich die Bildposition nachträglich im Geosetter auf die GPS Spur ändern kann. Das ganze basiert auf einem Abgleich der Uhrzeit mit den Zeitstempeln im GPS Logger.

Nun hatte ich bei Aufnahmen aus einem Fahrzeug heraus einige Fälle bei denen mir die so gewonnene Position komisch vorkam. Ich habe daraufhin mal einige Tests mit der Kamera gemacht um etwas Klarheit über die Randbedingungen zu bekommen.

Um die bei jedem Bild gespeicherten Metadaten auszulesen verwende ich das exzellente ExifTool von Phil Harvey.

Der Testaufbau

Ich habe mich zum Test (und um das schöne Wetter zu nutzen) auf meinen Balkon begeben. Dort habe ich mit dem Garmin Oregon 550 als Referenz die Position bestimmt. Im Oregon wird zusätzlich noch die aktuelle Uhrzeit angezeigt.

Mit der Sony habe ich so lange gewartet bis auf dem Display das GPS Symbol mit den drei Balken als Zeichen für einen gültigen Fix erschienen ist. Im Einstellungsmenü ist die automatische Einstellung der Uhrzeit eingeschaltet.

Das Symbol für erfolgreiche GPS Positionsbestimmung

Das Symbol für erfolgreiche GPS Positionsbestimmung

Die Messung

Nun fotografiere ich mehrfach hintereinander die Anzeige der Uhrzeit auf dem Garmin.

Um die automatische Einstellung der Kamerazeit zu prüfen schalte ich dann die automatische Synchronisation aus und verstelle manuell die Uhrzeit der Kamera um einige Stunden und Minuten. Danach schalte ich die Synchronisierung wieder ein und mache wieder einige Fotos der Zeitanzeige des Garmin.

Als letzten Test schalte ich die Kamera aus, warte kurz, schalte wieder ein und Fotografiere nach erreichen des GPS Fix wieder die Anzeige des Garmin.

Für einen Vergleich der absoluten Zeit verwende ich noch die Zeit meines PC die ich mittels NTP auf eine Atomuhr bis auf wenige Millisekunden genau synchronisiert habe.

Die Auswertung und wenn ein GPS Fix doch keiner ist

Die erste Auswertung liefert schon mal ein erschreckendes Ergebnis. Bei einigen Bildern bleiben die GPS Daten stehen, sind also bei den letzten Bildern in jedem Fall fehlerhaft. Sowohl die Position als auch die gespeicherte GPS-Zeit hat sich nicht verändert.

In den Metadaten der Kamera steht eine veraltete Position und Uhrzeit

In den Metadaten der Kamera steht eine veraltete Position und Uhrzeit

Meine Vermutung war daraufhin dass die Kamera bei den Folgebildern keinen gültigen Fix mehr hatte. Leider war das wohl nicht der Fall. Die Kamera hat bei allen Bildern im Attribut GPSStatus vermerkt dass sie eine gültige Messung hatte.

Vermutlich ist das ganze ein „cleveres“ Feature der Kamera um Strom oder Rechenzeit für die GPS Abfrage zu sparen. Wenn die Kamera zwischen zwei schnell aufeinander folgenden Aufnahmen bewegt wird (z.B. bei Fotos aus einem Fahrzeug oder Zug) darf man sich also nur auf die erste Position verlassen, die Folgepositionen sind ungenau. Ich bewerte es als Bug, dass bei einem „recycling“ der GPS Daten der Status nicht auf „void“ gesetzt wird.

Wenn ich mich auf die Uhrzeit der Kamera verlassen kann aber kein Problem, für die Position habe ich ja noch meinen GPS Logger.

Die Ungenauigkeit der Uhrzeit

Leider scheint es die Kamera mit der Synchronisierung der internen Uhr auch nicht besonders genau zu nehmen. Selbst wenn ich die offensichtlich „stehengebliebenen“ Daten ausblende sehe ich immer noch eine Zeitdifferenz. Bis zu zwei Sekunden würde ich als „Rundungsfehler“ der jeweiligen Geräte durchgehen lassen. In der Auswertung zeigten sich aber doch größere Abweichungen.

Wie erzwingt man ein Update der Uhrzeit?

Für mich war jetzt die spannende Frage wie man eine Kamera, die die Uhrzeit automatisch einstellt, dazu überreden kann das auch zu tun. Und wie kann ich als normaler Anwender das erkennen? Am besten ohne die Exif-Daten auslesen zu müssen.

In meinen Experimenten habe ich diesen Weg gefunden. Etwas schnelleres ist mir nicht bekannt.

  1. In der Kamera eine deutlich erkennbare falsche Uhrzeit einstellen. Ich verwende eine deutliche Abweichung in den Minuten. „Zeit automatisch einstellen“ dabei eingeschaltet lassen
  2. Auf einen GPS Fix warten
  3. Kamera ausschalten und dann wieder einschalten
  4. Wenn ein Fix angezeigt wurde kurz den Auslöser halb drücken um zu fokussieren
  5. Im Einstellungsmenü prüfen dass eine neue Zeit eingestellt ist

Die Uhrzeit der Kamera scheint prinzipiell immer ein bis zwei Sekunden hinter der GPS Zeit herzuhinken.

Ein Aus- und Einschalten der Automatik oder Wartezeit mit einem Fix stellt die Uhrzeit nicht ein. Ebenso ist auch eine Aufnahme mit einem gültigen Fix wirkungslos für die Uhrzeit. Dort wurde dann aber immerhin wieder eine plausible Uhrzeit in den GPS-Exif Daten vermerkt. Besonders trügerisch: Der GPSStatus wird wieder als gültig angezeigt.

Abweichungen erkennen

Bei der Arbeit mit georeferenzierten Bildern für OpenStreetMap muss ich also beachten dass ich vor Beginn einer Mappingtour die Uhrzeit der Kamera synchronisiere. Wenn vorhanden auch ein Referenzbild von einer genauen Uhr aufnehmen. Hinterher müssen zwei Arten von ungültigen Daten herausgefiltert werden. Zum einen die Bilder die überhaupt keinen gültigen Fix hatten. Diese bekommen mit Geosetter eine vernünftige Position aus dem GPX Logger in der Hoffnung dass die Uhrzeit der Kamera einigermaßen stimmt.

Die andere Art von Bildern die eine Spezialbehandlung braucht sind diejenigen bei denen die GPS Zeit zu weit von der Kamerazeit abweicht. Teilweise sind das vielleicht auch Bilder bei denen die Uhrzeit vor den Aufnahmen nicht synchronisert werden konnte. Lässt sich ein eindeutiger Offset feststellen so ist es möglich im Geosetter das relativ einfach wieder zu korrigieren.

Abweichung mit Exiftool ausgeben

Das folgende Script kann in die Datei „.ExifTool_config“ im Geosetter „tools„-Verzeichnis eingefügt werden. Der markierte Bereich ist meine Erweiterung. Dann unterstützt das Exiftool ein weiteres Attribut namens „GPSTimeDifference“ das die Abweichung zwischen GPS-Zeit und Kamerazeit ausgibt. Jeweils in Sekunden zur nächsten vollen Stunde. Größere Abweichungen sind ein Hinweis auf Probleme mit der Uhrzeit. Leider kann Geosetter keine Custom Tags anzeigen, daher braucht man zur Nutzung wieder die Kommandozeile.

Ein Aufruf könnte auf der Kommandozeile dann so aussehen:

Das zu Beginn genannte Problem mit den nicht aktualisierten GPS-Daten wird so sofort offensichtlich:


Es lässt sich sogar auf die Werte Filtern. Um nur Abweichungen größer als 3 Sekunden anzuzeigen schreibt man:

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.