Geotagging von Bildern

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche
Geotagging.jpg
"Geotagging von Bilder" ist eine Programm, dass im Rahmen einer Projektarbeit von einer 3-köpfigen Projektgruppe, geschrieben wurde. Das Programm dient zur visuellen Darstellung von Bildern mit Geo-Informationen auf einer Welt-Karte.




Projektmotivation

Unser Anliegen war es ein privates Problem im Rahmen einer Projektarbeit zu lösen. Wir, die Mitglieder der Projektgruppe, bereisen gerne fremde Länder und schießen dabei viele Fotos. Doch durch diese häufigen Standortwechsel resultiert erst das eigentliche Problem: schaut man sich später diese Bilder an, hat man oft keine Erinnerung mehr, wo die Bilder enstanden sind.

Deshalb wollten wir als Projekt ein voll funktionsfähiges und Bedienerfreundliches Programm zur visuellen Darstellung von Bildern auf einer Welt-Karte erstellen. Bedienerfreundlich bedeutet in unserem Fall, den Aufbau des Programms so zu realisieren, dass die Bedieung ohne Einlernprozess bzw. Lesen eines Handbuchs möglich ist. Die Benutzung der Software ist kostenfrei und soll dem Endbenutzer zur freien Verfügung gestellt werden. Des weiteren wurden Bedienungsfunktionen, zur Erleichterung des Handlings, eingebunden. Diese Funktionen werden im Punkt "Eingabemöglichkeiten" genauer erläutert.

Programmablauf

GPS-fähige Kamera
Ohm-Hochschule im Zoomlevel 17

Im ersten Schritt werden Positionsinformationen in das erzeugte Bild gespeichert. Dies ist möglich, da in den Details eines JPEG-Bildes (bzw. Exif) ein solcher Punkt vorgesehen ist. Das Hinterlegen einer solchen Information kann auf unterschiedliche Weise geschehen. So können die Daten manuell per Software oder aber auch automatisch mit Hilfe einer GPS-fähigen Kamera (s. Bild) hinterlegt werden. Glücklicherweise ist das GPS-Netz weltweit verbreitet und in jedem Winkel der Erde kostenlos verfügbar, jedoch befinden sich Kameras, die mit integriertem GPS-Adapter ausgerüstet sind, im hochpreisigem Bereich. Mit der Manuellen Variante können auch Benutzer, die über keinerlei GPS-Geräte verfügen, das in der Projektarbeit erzeugte Programm benutzen.

Nachdem das Bild eine GPS-Information erhalten hat, müssen nun diese Daten in das Programm ausgelesen werden. Alle Bildinformationen die die Kamera zur Verfügung stellt, wie zum Beispiel Kameramodell, Datum und Uhrzeit, werden im Exif Dateiformat abgelegt. Das Auslesen dieser Informationen wird im Artikel "EXIF-Informationen in C/C++ auslesen" näher beschrieben.

Nach dem Ausführen der EXE-Datei wird ein Fenster mit einer Karte geöffnet, in welchem die Georg-Simon-Ohm Hochschule im Zentrum zu sehen ist. D.h. als Standartkoordinaten wurden die Koordinaten der Hochschule Nürnberg genommen. Nun kann der Benutzer eine beliebige JPEG-Datei mit hinterlegten Positionsinformationen laden. Beim Ladevorgang liest das Programm die GPS-Informationen und läd das entsprechende Kartenmaterial direkt vom OpenStreetMap-Server herunter. Das herunter geladene Kartenmaterial wird im Fenster dargestellt und im Zentrum ist das geladene Bild zu sehen. Durch Mausklick auf das Bild kann dieses vergrößert werden. Wird nun eine Änderung an der Kartenansicht vorgenommen, so wird das benötigte Kartenmaterial automatisch vom OSM-Server geladen und im geöffneten Fenster dargestellt. Eine Änderung der Ansicht kann durch Verstellung des Zoom-Levels, die Bedienung der Navigationstasten oder durch Benutzung der Drag&Drop Funktion erfolgen.

OpenSource Programme und Daten

Um das Programm, kostenfrei für den Benutzer, realisieren zu können, wurde auf folgende OpenSource Programme und Daten zugegriffen.

  • OpenStreetMap

    Das gesamte Kartenmaterial, das in unserem Projekt benutzt wird, wird vom OpenSource Projekt OpenStreetMap bezogen. Bei OpenStreetMap handelt es sich um ein freies Projekt, das für jeden frei nutzbare Geodaten sammelt. Mit Hilfe dieser Daten können Weltkarten errechnet werden. Die Daten dürfen beliebig weiterverwendet werden, ohne dass ein Entgelt gezahlt werden muss.

    Für unser Projekt nutzten wir die Möglichkeit über verschiedene Links auf die einzelnen Karten zuzugreifen. Diese Karten haben die Größe von 256x256 Pixeln und liegen im PNG-Dateiformat vor. Geht man einen Zoomlevel tiefer, setzt sich das vorhergehende Bild aus nun vier neuen Kacheln zusammen. Pro höheren Zoomlevel gibt es also die doppelte Anzahl von Kacheln in X- und die doppelte Anzahl in Y-Richtung. Folgende Tabelle zeigt die Anzahl der Kacheln beim jeweiligen Zoomlevel:

Tabelle Kacheln.jpg


  • QT-Creator

    Qt logo 2013.png
    Bei Qt handelt es sich um eine C++ Klassenbibliothek für die Blattformübergreifende Programmierung grafischer Benutzeroberflächen. Wir wählten Qt als Entwicklungsumgebung für unser Projekt, nachdem wir verschiedene Umgebungen verglichen haben Nach kurzer Einarbeitung stellten wir fest, dass sich Qt sehr gut dafür eignet.
    Qt kann man kostenfrei von hierbeziehen.



Eingabemöglichkeiten

Das Programm gewährt mehrere Möglichkeiten der Eingabe. In den folgenden Punkten werden die verschiedenen Möglichkeiten erklärt sowie auf Vor-und Nachteile hingewiesen.

Menübar

Menübar
Die ursprünglichste Form der Navigation auf einer (Software-) Landkarte ist sicherlich die Navigation über Klick auf einen Menüpunkt. Es wurden alle wichtigen Funktionen implementiert. So kann man per linken Mausklick auf der Landkarte in die vier Haupthimmelsrichtungen navigieren. Auch den Zoomlevel kann man per linken Mausklick vergrößern oder verkleinern. Zur besseren Übersicht wurden die beiden Kategorien Zoomlevel und die Navigation in die verschiedenen Himmelsrichtungen durch einen leichten Querbalken getrennt. Da diese Form der Navigation (ausschließlich mit der Maus) keine häufige Anwendung findet, wurden hinter die Menüpunkte die Tastaturbefehle, die analog zum Klick auf die entsprechende Fläche sind, aufgelistet.

Buttons

Buttons
Selbstverständlich ist es möglich über die Maus und Klick auf die vorhandenen Buttons (am linken, oberen Bildrand platziert) zu navigieren. Es stehen die vier verschiedenen Himmelsrichtungen zur Verfügung. Es werden nur Kacheln nachgeladen, wenn man über eine bereits geladene Karte hinaus navigiert. Anders verhält es sich, wenn man den Zoomlevel verändert. Diesen kann man per Klick auf die darunterliegenden Buttons neu bestimmen. Sie sind mit einem Plus- und einem Minuszeichen belegt. Hier müssen alle Kacheln komplett neu geladen werden. Somit müssen beim Navigieren in die verschiedenen Himmelsrichtungen wesentlich weniger Kacheln nachgeladen werden, sofern die benötigten Kacheln noch nicht im temporären Ordner vorhanden sind. Natürlich bleiben diese Buttons immer im Vordergrund. Der verdeckte Kartenbereich ist allerdings sehr gering.

Tastatur

Des Weiteren ist es möglich mit den Pfeiltasten auf der Tastatur die Karte zu verändern. Beispielsweise verhält sich ein Tastendruck auf die linke Pfeiltaste analog zu einem Klick auf den Westbutton (entsprechend funktionieren die anderen Pfeiltasten). Es ist auch möglich den Zoomlevel per Tastaturbefehl zu verändern. Mittels + und – Tasten kann man vergleichbar zum Klick auf die gleichnamigen Buttons einen Kartenausschnitt vergrößern oder verkleinern. Wir waren der Meinung, dass diese Belegung sehr intuitiv ist und dem Benutzer bereits von anderer Navigationssoftware bekannt sein könnte.

Drag-and-Drop

Komplexer war die Implementierung einer weiteren Funktion: Das Verschieben der Leinwand per „festgehaltener“ Maus (auch Drag-and-Drop genannt). Dazu wählt man sich einen Punkt auf der bereits geöffneten OpenStreetMap (Leinwand), hält die linke Maustaste gedrückt, und verschiebt die Maus an einen neuen, beliebigen Punkt auf der Leinwand. Lässt man nun die linke Maustaste wieder los, wird man nach kurzem Nachladen der Karten feststellen, dass sich der vorher ausgewählte Punkt (bei dem die linke Maustaste gedrückt wurde) nun an dem Punkt befindet, an dem die linke Maustaste wieder losgelassen wurde. Die benötigten, nachgeladenen Kacheln werden dann an den bislang noch nicht angezeigten Orten der auf der Leinwand gezeigten Karte eingefügt. Auch diese Funktion ist sehr intuitiv zu bedienen und sollte aus anderen Navigationsprogrammen bereits vielen Benutzern bekannt sein. Aus eigener Erfahrung können wir berichten, dass diese Art zu navigieren die häufigste Verwendung findet.

Vorschaubild vergrößern

Normale Darstellung
Vergrößerte Darstellung
Wurde bereits ein GPS-Bild auf die Leinwand geladen, gibt es eine Funktion, das Bild zu vergrößern, wenn man darauf klickt. Grund dafür ist, dass das Bild auf der Leinwand sehr klein erscheint (auch um nicht zu viel Hintergrund bzw. Landkarte zu verdecken). Das Bild wird wieder in die Ursprungsgröße skaliert, sobald erneut darauf geklickt wurde oder die man Leinwand verschiebt. Diese Funktion erleichtert den Überblick.


Cache löschen

Eine besondere Funktion verbirgt sich hinter dem Menüpunkt „Extras“ -> „Cache löschen“. Bei einem Klick auf diesen Punkt werden die dynamisch erzeugten Variablen, die normalerweise während der Laufzeit erzeugt werden, gelöscht sowie die bereits heruntergeladenen Karten im temporären Ordner gelöscht. Es gibt verschiedene Gründe warum man während der Laufzeit diese Funktion benutzen möchte. So kann es beispielsweise sein, dass der Speicher auf der Festplatte sehr begrenzt ist und man durch das Löschen der Karten im temporären Ordner nicht mehr benötigte Karten ohne das Schließen des Programms „aufgeräumt“ werden. Es kann außerdem sein, dass man die dynamisch erstellten Variablen wieder zurücksetzten möchte.

Installationsanforderungen

Das Programm ist auf einem PC, ohne weitere Installation, nutzbar. Hierzu muss der Benutzer nur die EXE ausführen und eine JPEG-Bilddatei in das Programm laden. Um das Programm ohne QT lauffähig zu machen, werden einige QT spezifische Bibliotheken benötigt. Beim Aufruf ohne diese Bibliotheken wird eine Fehlermeldung angezeigt in welcher die versmisste DLL steht. Die benötigten Bibliotheken müssen im Anwendungsverzeichnis stehen!

Das EXE-File und die Biblotheken können hier herunter geladen werden.