% vim: set textwidth=78 autoindent:
% !TeX root = user_guide.tex

\section{Georeferenzier Plugin}
\label{sec:georef}
\index{Plugins!Georeferenzierer}

% when the revision of a chapter has been finalized, 
% comment out the following line:
% \updatedisclaimer

Das Plugin \toolbtntwo{georeferencer}{Georeferenzierer} erlaubt die
Erstellung von Worldfiles für existierende Rasterlayer und das entzerren 
von Rasterlayern in ein neues GeoTiff. Es ermöglicht damit das georeferenzieren 
von Rasterdaten in geographische und projizierte Koordinatensysteme oder die 
Transformation des Rasters in ein neues Koordinatensystem. Der Ansatz besteht
darin, Bezugspunkte auf der Rasterkarte zu finden, denen eindeutige Koordinaten 
zugewiesen werden können.

\minisec{Funktionalitäten}

\begin{table}[h]\index{Georeferenzierer!Funktionalitäten}
\begin{tabular}{|m{1cm}|m{6cm}|m{1cm}|m{6cm}|}
 \hline \textbf{Icon} & \textbf{Funktion} & \textbf{Icon} &
 \textbf{Funktion} \\
 \hline \includegraphics[width=0.7cm]{mActionAddRasterLayer} & Raster öffnen &
 \includegraphics[width=0.7cm]{mActionStartGeoref} & Georeferenzierung beginnen \\
 \hline \includegraphics[width=0.7cm]{mActionGDALScript} & GDAL Skript erzeugen &
 \includegraphics[width=0.7cm]{mActionFileOpen} & GCP Punkte laden \\
 \hline \includegraphics[width=0.7cm]{mActionFileSave} & GCP Punkte speichern als &
 \includegraphics[width=0.7cm]{mActionOptions} & Transformationseinstellungen \\
 \hline \includegraphics[width=0.7cm]{mActionCapturePoint} & Punkt hinzufügen &
 \includegraphics[width=0.7cm]{mActionDeleteSelected} & Punkt löschen \\
 \hline \includegraphics[width=0.7cm]{mActionMoveFeature} & GCP-Punkt verschieben &
 \includegraphics[width=0.7cm]{mActionPan} & Verschieben \\
 \hline \includegraphics[width=0.7cm]{mActionZoomIn} & Hineinzoomen &
 \includegraphics[width=0.7cm]{mActionZoomOut} & Herauszoomen \\
 \hline \includegraphics[width=0.7cm]{mActionZoomToLayer} & Auf den Layer zoomen &
 \includegraphics[width=0.7cm]{mActionZoomLast} & Zoom zurück \\
 \hline \includegraphics[width=0.7cm]{mActionZoomNext} & Zoom vor &
 \includegraphics[width=0.7cm]{mActionLinkGeorefToQGis} & Georeferenzierung mit QGIS verbinden \\
 \hline \includegraphics[width=0.7cm]{mActionLinkQGisToGeoref} & QGIS mit Georeferenzierung 
 verbinden & & \\
\hline
\end{tabular}
\caption{Georeferenzierfunktionen}\label{tab:georeferencer_tools}
\end{table}

\minisec{Wie benutzt man den Georeferenzierer}

Es gibt zwei Möglichkeiten, um X und Y Koordinaten einer Rohkarte oder die Koordinaten 
(mmmm.mm) einer projizierten Karte an ausgewählten Punkten eines Bildes zu georeferenzieren. 

\begin{enumerate}
\item Manchmal findet man auf dem zu georeferenzierenden Bild selbst kleine Kreuze, 
mit (oft auch am Bildrand) angeschriebenen Koordinaten. In diesem Fall kann man die 
entsprechenden Koordinaten für die Georeferenzierung manuell zuweisen.
\item Man kann auch bereits georeferenzierte Raster- oder Vektorlayer verwenden, wenn 
sich darin übereinstimmende Objekte befinden und die Projektion der Zielprojektion 
des zu georeferenzierenden Bildes entspricht. In diesem Fall können die Koordinaten 
durch das Anklicken von Referenzpunkten in dem bereits georeferenzierten Layer im 
Kartenfenster Koordinaten zugewiesen werden.
\end{enumerate}

Die allgemeine Vorgehensweise besteht normalerweise darin, dass man eine Reihe von 
Punkten auf dem zu georeferenzierenden Bild auswählt, diesen die entsprechenden 
Koordinaten der Zielprojektion zuweist und dann eine passende Transformationsmethode 
auswählt. Entsprechend der Eingabeparameter erstellt das Plugin dann entweder einen 
Worldfile für das Bild oder erzeugt eine entzerrte Version des Bildes als GeoTiff. 
Allgemein gilt, je mehr Punkte gesetzt werden, desto besser ist das Resultat.

Als ersten Schritt starten Sie QGIS, laden das Georeferenzier Plugin
(siehe Kapitel~\ref{sec:load_core_plugin}) und klicken dann auf das Icon
\toolbtntwo{georeferencer}{Georeferenzierer} in der Werkzeugleiste. Daraufhin
erscheint der Dialog, wie in Abbildung~\ref{fig:georefplugin} zu sehen.

In diesem Beispiel soll ein Worldfile für eine topografische Karte aus der
Gegend Süd-Dakotas erstellt werden, welche zu dem GRASS Spearfish-Datensatz
passt. Diese Karte kann später zusammen mit den erstellten Daten in
der GRASS spearfish60 Location dargestellt werden. Die topopgrafische Karte
steht unter folgender Adresse zum Download bereit.
\url{http://grass.osgeo.org/sampledata/spearfish\_toposheet.tar.gz}

Falls Sie nicht wissen, wie Sie die spearfish60 Location in QGIS integrieren 
und mit Hilfe des GRASS Plugins verwenden können, finden Sie im 
Abschnitt~\ref{sec:grass} weitere Informationen.

\begin{figure}[ht]
\begin{center}
  \caption{Das Georeferenzier Plugin \nixcaption}\label{fig:georefplugin}
  \includegraphics[clip=true,width=0.9\textwidth]{georefplugin}
\end{center}
\end{figure}

\minisec{Eingabe von Bezugspunkten (Ground Control Points (GCP))}
\label{georeferencer_entering}

Mit dem Knopf \toolbtntwo{mActionCapturePoint}{Addiere Punkt} können Sie nun
damit beginnen dem Rasterbild Bezugspunkte und die dazugehörigen Koordinaten
hinzuzufügen (siehe Abbildung~\ref{fig:choose_points}). Aus diesen
Punktkoordinaten errechnet das
Plugin später die entsprechenden Worldfile Parameter. Je mehr Bezugspunkte
Sie erstellen, desto genauer wird in der Regel das Ergebnis. Für die Angabe
der nötigen Punktkoordinaten stehen Ihnen zwei unterschiedliche
Vorgehensweisen zur Verfügung.

\begin{enumerate}
\item Um einen Rasterlayer zu georeferenzieren muss er mit dem Knopf 
\includegraphics[width=0.7cm]{mActionAddRasterLayer} geladen werden. Der 
Layer erscheint dann im Hauptfenster des Plugins. An dieser Stelle können 
Sie bereits damit beginnen, Referenzpunkte festzulegen.
\item Mit dem Knopf \toolbtntwo{mActionCapturePoint}{Punkt hinzufügen}
können Sie nun damit beginnen, dem Rasterbild Bezugspunkte und die dazugehörigen 
Koordinaten hinzuzufügen (siehe Abbildung~\ref{fig:choose_points}).
Für die Angabe der nötigen Punktkoordinaten stehen Ihnen zwei unterschiedliche
Vorgehensweisen zur Verfügung.
\begin{enumerate}
\item Sie klicken auf einen Punkt in der Rasterkarte und geben die X- und
Y-Koordinaten ein.
\item Sie klicken auf einen Punkt in der Rasterkarte und wählen den Knopf
\button{aus Karte}, um die X- und Y-Koordinaten mit Hilfe einer
georeferenzierten, in QGIS geladenen Karte hinzuzufügen.
\item Mit dem \includegraphics[width=0.7cm]{mActionMoveFeature} Icon, 
können Sie GCPs in beiden Fenstern verschieben, wenn sie an der falschen Stelle 
liegen sollten. 
\end{enumerate}
\item Geben Sie weitere Bezugspunkte an. Sie sollten mindestens 4 Punkte festlegen, 
und je mehr Punkte Sie gut verteilt angeben, desto besser wird normalerweise das 
Ergebnis. 
\end{enumerate}

\begin{figure}[ht]
\begin{center}
  \caption{Bezugspunkte zu einem Rasterbild hinzufügen \nixcaption}
  \label{fig:choose_points}
  \includegraphics[clip=true,width=0.6\textwidth]{choose_points}
\end{center}
\end{figure}

Wie Sie in Abbildung~\ref{fig:choose_points} sehen können, stellt Ihnen der
Georeferenzierdialog auch Icons zum Vergrößern/Verkleinern, zum Verschieben,
sowie zum Hinzufügen und Löschen von Bezugspunkten zur Verfügung.

Die gesetzten Bezugspunkte werden zusammen mit dem Rasterbild als Textdatei
mit der Endung \filename{.points} gespeichert. Dies erlaubt uns, bei Bedarf
das Georeferenzier Plugin wieder zu öffnen und neue Punkte hinzuzufügen oder 
bestehende Punkte zu löschen, um dadurch das Ergebnis zu verbessern. Die 
\filename{.points} Datei enthält Werte als mapX, mapY, pixelX und pixelY. Sie 
können die Knöpfe \includegraphics[width=0.7cm]{mActionFileOpen} 'GCP Punkte 
laden' und \includegraphics[width=0.7cm]{mActionFileSave} 'GCP Punkte speichern' 
verwenden, um die Dateien zu verwalten. 
Innerhalb der GCP-Tabelle können Sie auf einen Spaltenkopf klicken und dadurch 
den Inhalt sortieren. Die GCP-Liste wird dabei automatisch aktualisiert.

\minisec{Festlegen der Transformationseinstellungen}
\label{georeferencer_transformation}

Nachdem Sie in dem Bild eine ausreichende Anzahl an Punkten gesetzt haben,
gilt es nun, die Transformationseinstellungen für die Georeferenzierung zu 
definieren.

\begin{figure}[ht]
\centering
  \includegraphics[clip=true,width=8cm]{transformation_settings}
  \caption{Festlegen der Transformationseinstellungen für die Georeferenzierung \nixcaption}
  \label{fig:georef_transform}
\end{figure}

\minisec{Auswahl des Transformationstyps}\label{georeferencer_transformation}

Abhängig davon, wieviele Bezugspunkte Sie gesetzt haben, stehen unterschiedliche 
Transformationstypen zur Verfügung. Der zu wählende Transformationstyp ist außerdem 
vom Typ und der Qualität der Eingangsdaten, sowie der Anzahl geometrischer 
Störungen, die in dem Ergebnis auftreten können. 

In QGIS \CURRENT stehen folgende Algorithmen zur Auswahl:

\begin{itemize}[label=--]
\item \textbf{Linear}: Der lineare (affine) Algorithmus wird verwendet, um
einen Worldfile zu
erstellen. Er unterscheidet sich von den anderen Algorithmen, da tatsächlich
keine Transformation stattfindet. Für verzerrte Daten, z.B. gescannte Karten
werden die Ergebnisse wahrscheinlich nicht ausreichen.
\item \textbf{Helmert}: Die Helmert Transformation führt eine einfache
Skalierung und Rotation der Daten durch.
\item \textbf{Polynomial 1, 2 und 3}: Die Polynomial Algorithmen stellen die
am häufigsten verwendeten
Algorithmen zur Georeferenzierung dar. Sie unterscheiden sich anhand des
Entzerrungsgrades, der verwendet wird, damit die Bezugspunkte der zu
georeferenzierenden Karte mit den Bezugspunkten der Zielkarte genau
zueinander passen. Am häufigsten wird der Polynomial 2 Algorithmus verwendet,
der auch entzerrt. Die Polynomial 1 (Affine) Transformation bewahrt
Kollinearität und erlaubt die Skalierung, Übersetzung und Rotation des Layers.
\item \textbf{Thin Plate-Spline (TPS)}: Der Thin Plate-Spline (TPS)
Algorithmus stellt eine moderne Methode zur
Georeferenzierung dar und ermöglicht eine lokale Entzerrung der Daten. Die
Anwendung ist besonders dann sinnvoll, wenn die Ausgangsdaten eine schlechte
Qualität haben.
\item \textbf{Projective Transformation} bietet die lineare Rotation und 
Transformation von Koordinaten.
\end{itemize}

\minisec{Festlegen der Resampling Methode}

Die verwendete Resampling Methode wird wahrscheinlich von den Eingabedaten 
und dem Ziel der Übung abhängig sein. Wenn die Bildstatistik nicht verändert 
werden soll, wählen Sie wahrscheinlich die Nächster Nachbar Methode, wo 
hingegen die Kubische Methode ein eher weicheres Ergebnis ergibt. Insgesamt 
können Sie zwischen 5 Methoden auswählen.    

\begin{enumerate}
\item Nächster Nachbar
\item Linear
\item Kubisch
\item Kubisches Spline
\item Lanczos
\end{enumerate}

\minisec{Festlegen der Transformationseinstellungen}

Es gibt mehrere Optionen, die für die Ausgabe der Georeferenzierung festgelegt 
werden müssen. 

\begin{itemize}[label=--]
\item Das Kontrollkästchen \checkbox{World-Datei erzeugen} ist nur auswählbar, 
wenn Sie sich für die Lineare Transformation entscheiden. Dies bedeutet nämlich, 
dass der Rasterlayer selbst nicht entzerrt wird. Stattdessen wird lediglich eine 
World-Datei geschrieben, über den der Rasterlayer referenziert wird.
\item Für alle anderen Transformationstypen müssen Sie ein \textbf{Ausgaberaster} 
angeben. Als Standard wird eine Datei mit dem Namen [filename]\_modified in 
demselben Ordner, indem sich auch die Ausgangsdatei befindet geschrieben.
\item Als nächsten Schritt müssen Sie das \textbf{Ziel KBS} (Koordinatenbezugsystem) 
für die Ergebnisdatei angeben (siehe auch Kapitel~\ref{label_projections}).
\item Wenn Sie wünschen, können Sie auch eine \textbf{PDF-Karte} und einen 
\textbf{PDF-Bericht} erzeugen. Der Bericht enthält Informationen zu den 
verwendeten Transformationsparametern, ein Bild der Abweichungen und eine Liste 
aller GCPs und ihrer RMS-Fehler.
\item Desweiteren können Sie das Kontrollkästchen \checkbox{Zielauflösung} aktivieren 
und eine Pixelauflösung für das Ausgaberaster festlegen. Standard ist der Wert 1.
\item Das Kontrollkästchen \checkbox{Falls nötig 0 für Transparenz verwenden} sollten 
Sie aktivieren, wenn es Pixel in dem Ausgaberaster mit dem Wert 0 gibt, die transparent 
dargestellt werden sollen. In unserem Beispiel wären alle weissen Flächen transparent.
\item Abschließend können Sie noch das Kontrollkästchen \checkbox{Wenn fertig in QGIS 
laden} anwählen. Dadurch wird die Ausgabe automatisch in das Kartenfenster geladen, 
nachdem die Georeferenzierung abgeschlossen ist.
\end{itemize}

\minisec{Rastereigenschaften anziegen und anpassen}

Wenn Sie auf den Knopf \dialog{Rastereigenschaften} im Menü 
\dropmenuopt{Einstellungen} klicken, öffnet sich ein Dialog, um die 
Rastereigenschaften des zu referenzierenden Layers zu verändern.

\minisec{Den Georeferenzierer konfigurieren}

\begin{itemize}[label=--]
\item Sie können festlegen, ob GCP-Koordiniaten und/oder -IDs angezeigt werden.
\item Als Einheit für die Abweichungen kann Pixel oder Karteneinheit gewählt 
werden.
\item Für den PDF-Bericht können Sie einen linken und rechten Rand festlegen 
und für die PDF-Karte das Papierformat.
\item Schließlich können Sie noch das Kontrollkästchen 
\checkbox{Georeferenzierungsfenster docken} aktivieren. Dadurch werden die 
Fenster gleichmäßig über den Bildschirm verteilt geöffnet. 
\end{itemize}

\minisec{Starten der Georeferenzierung}\label{georeferencer_running}

Nachdem alle Referenzpunkte gesetzt wurden und die Transformationseinstellungen 
definiert sind, klicken Sie auf den Knopf 
\includegraphics[width=0.7cm]{mActionStartGeoref} 'Georeferenzierung beginnen', 
um den neuen Rasterlayer zu erzeugen.

\FloatBarrier

