% working with OGC-data
\section{Mit OGC-Daten arbeiten}

QGIS unterstützt WMS und WFS als Datenquellen. Die Unterstützung für WFS ist zum jetzigen Zeitpunkt noch experimentell. Die WMS-Unterstützung ist nativ, die WFS-Unterstützung als Plugin integriert.

\subsection{Was sind OGC-Daten?}\index{OGC!introduction}

Das Open Geospatial Consortium (OGC)  ist eine internationale Organisation mit
mehr als 300 Mitgliedern aus kommerziellen und behördlichen Bereichen, aus der
Forschung sowie aus Vereinen (Non-Profit).
Die Mitglieder entwickeln und implementieren Standards für den Austausch
räumlicher Daten (Datendienste), GIS-Datenprocessing und standardisierte
Bereitstellung von Geodaten.

Zur Beschreibung von geographischen Objekten in einem einfachen Datenmodell
wurden eine steigende Zahl von Spezifikationen entwickelt, die spezielle
Bedürfnisse der Interoperabilität bedienen, räumliche Informationen und GIS
einbezogen.
Weitere Informationen können unter \url{http://www.opengeospatial.org/}
abgerufen werden.

Wichtige OGC-Specifikationen sind:

\begin{itemize}
\item \textbf{WMS} - Web Map Service
\item \textbf{WFS} - Web Feature Service
\item \textbf{WCS} - Web Coverage Service
\item \textbf{CAT} - Web Catalog Service
\item \textbf{SFS} - Simple Features for SQL
\item \textbf{GML} - Geography Markup Language
\end{itemize}

OGC-Dienste werden vermehrt zum Austausch von geographischen Daten zwischen
unterschiedlichen GIS-Systemen und -implementierungen verwendet.
QGIS unterstützt mittlerweile drei der oben genannten Spezifikationen;
einerseits SFS (durch den Postgresql/PostGIS Datenprovider, vgl.
\ref{label_postgis}) sowie als WFS und WMS als Klient.

\subsection{WMS-Klient}\label{sec:ogc-wms}\index{WMS!client}\index{OGC!WMS!client}\index{rasters!WMS}

\subsubsection{Übersicht über die WMS-Unterstützung}\label{sec:ogc-wms-about}\index{WMS!client!about}

\includegraphics[width=0.7cm]{wmssupport}
Derzeit kann QGIS als WMS-Klient eingesetzt werden. Es unterstützt die
Versionen 1.1, 1.1.1 und 1.3 der WMS-Server.
Gut getestet wurden die öffentlich verfügbaren Server wie beispielsweise DEMIS
oder NASAs JPL OnEarth-Server.

WMS-Server liefern Daten aufgrund einer Anfrage eines Klienten (hier QGIS) als
Rasterbild aus. Dabei spielen Ausdehnung, Anzahl der angefragten Layer,
Symbolisierungen und Transparenz eine Rolle. Der WMS-Server holt die benötigten
Daten dann aus seiner Datenquelle hervor, rendert diese in eine Rasterkarte und
sendet das fertige Bild zurück zum Klienten. Das für QGIS typische
Rasterformat ist in aller Regel JPEG oder PNG.

WMS ist ein komplett auf Übertragung ausgelegter Dienst (REST =
Representational State Transfer). Daraus resultiert die Tatsache, dass die von
QGIS generierte URL für das Bild auch in einem Browser eingesetzt werden kann.
Das Resultat dieser Anfrage sieht in der Regel genauso aus wie in QGIS.
Das ist besonders hilfreich, wenn es beim Einsatz von WMS Probleme geben
sollte.
Da es sehr viele unterschiedle WMS-Server-Anbieter am Markt gibt (und alle die
WMS-Spezifikation etwas unterschiedlich interpretieren), ist eine Überprüfung
im Browser sehr hilfreich.

WMS-Layer können sehr einfach hinzugefügt werden, solange man die URL des
Servers kennt, eine Verbindung über HTTP zu diesem Server besteht und der
angefragte Server auch HTTP versteht.

\subsubsection{WMS-Server auswählen}\label{sec:ogc-wms-servers}\index{WMS!remote server!selection}

Sie starten die Funktion, indem Sie auf das Icon \textsl{WMS-Layer hinzufügen} in der Werkzeugleiste klicken oder im Menü \textsl{Layer} die Funktion \textsl{WMS-Layer hinzufügen} auswählen.

Der Dialog zum Hinzufügen von WMS-Layern erschein dann. Beim ersten laden eines WMS-Layers sind noch keine Server definiert. Sie können aber einige vordefinierte Server hinzufügen, indem Sie auf den Knopf \textsl{Standardserver ergänzen} klicken. Dadurch werden mindestens 3 Server hinzugefügt (z.B. der NASA WMS-Server). Um einen neuen Server selbst zu definieren klicken Sie auf \textsl{Neu} und geben dann die Parameter, die zur Verbindung benötig werden, ein (vgl. Tabelle \ref{tab:wms_connection_parms}):

\begin{table}[h]\index{WMS!client!connection parameters}
\centering
\caption{WMS Verbindungs-Parameter}\label{tab:wms_connection_parms}\medskip
 \begin{tabular}{|l|p{5in}|}
\hline Name & Ein Name für diese Verbindung.  Dieser Name wird in der
Auswahlbox er vorhandenen WMS-Server erscheinen. \\
\hline URL \index{WMS!URL} & Die URL des Servers, der die Daten vorhält.
Dieser Name muss ein auflösbarer Host-Name sein.\\ 
\hline Proxy Host & Netzwerk-Adresse oder Rechnername des Proxy-Servers. Falls
Sie keinen Proxy benötigen, lassen Sie das Feld leer.\\ 
\hline Proxy Port & Portnummer des Proxy-Servers. \\
\hline Proxy User & Benutzername zum Einloggen am Proxy-Server.\\
\hline Proxy Passwort & Passwort zum Einloggen am Proxy-Server. \\
\hline
\end{tabular}
\end{table}

Es müssen mindestens der \textsl{Name} sowie die \textsl{URL} eingetragen
werden. Die Proxy-Einträge können leer gelassen werden, wenn sie keinen Proxy
benötigen.

Ein einmal erstelltes WMS-Profil wird nun für zukünftige QGIS-Sessions
abgespeichert.

\begin{Tip}[h]\caption{\textsc{WMS-Server-URLs}}
\qgistip{Stellen Sie sicher, dass Sie die Basis-URL des Servers eingeben.
Achten Sie darauf, dass keine Fragmente wie 
\texttt{request=GetCapabilities} oder \texttt{version=1.0.0} in der URL
enthalten sind.\index{WMS!remote server!URL}
}
\end{Tip}

Tabelle \ref{tab:wms_example_urls} zeigt beispielhaft einige WMS-URLs, damit
Sie einen Startpunkt haben.
Diese Links wurden im Dezember 2006 überprüft, sie können sich jedoch jederzeit
ändern.

\begin{table}[h]\index{WMS!remote server!URL!examples}
\centering
\caption{Beispielhafte öffentliche WMS-URLs}\label{tab:wms_example_urls}\medskip
 \begin{tabular}{|l|l|}
\hline \textbf{Name}        & \textbf{URL} \\
\hline Atlas von Kanada      & http://atlas.gc.ca/cgi-bin/atlaswms\_en? \\
\hline DEMIS                & http://www2.demis.nl/wms/wms.asp?wms=WorldMap\& \\
\hline Geoscience Australia & http://www.ga.gov.au/bin/getmap.pl?dataset=national \\
\hline NASA JPL OnEarth     & http://wms.jpl.nasa.gov/wms.cgi? \\
\hline QGIS Users           & http://qgis.org/cgi-bin/mapserv?map=/var/www/maps/main.map\& \\
\hline
\end{tabular}
\end{table}

Eine ausführliche Liste von öffentlich verfügbaren WMS-Server können Sie unter 
 \url{http://wms-sites.com} finden.


\subsubsection{Eine WMS-Layer laden}\label{sec:ogc-wms-layers}\index{WMS!client!layers}

Nachdem Sie erfolgreich alle benötigten Parameter eingegeben haben können Sie
den \textsl{Verbinden}-Knopf drücken und die Capabilities des Server
holen.
Daraus liest QGIS das unterstützte Bildformat, die verfügbaren Layer, die
Stile sowie die verfügbaren  Projektionen.
Da dies eine Netzwerkoperation ist, hängt die Geschwindigkeit der Antwort des
Servers von Ihrer Netzwerkgeschwindigkeit ab. Während die Daten vom Server heruntergeladen werden, wird der Fortschritt in der linken unteren Ecke des WMS-Plugin Dialogs angezeigt.

Ihr Bildschirm sollte in etwa so wie der in Abbildung \ref{fig:connection_wms}
aussehen. Dort ist die Antwort des NASA JPL OnEarth WMS-Servers exemplarisch
dargestellt.

% \begin{figure}[ht]
\begin{figure}[h]
  \begin{center}
  	\caption{Dialog zum Hinzufügen eines WMS-Server mit den verfügbaren
	Layer}\label{fig:connection_wms}
	\includegraphics[clip=true,width=0.6\textwidth]{connection_wms}
  \end{center}
\end{figure}

\minisec{Bildkodierung}

Der Abschnitt über die \textsl{Bildkodierung} gibt die Bildformate an, die der
Server und QGIS unterstützen.
Wählen Sie ein Format aus, das ihren Genauigkeits-Bedürfnissen entspricht.

\begin{Tip}[h]\caption{\textsc{Bildkodierung}}
\qgistip{In der Regel bieten WMS-Server JPEG oder PNG als Bildkodierung an.
JPEG hat eine bildverschlechternde Kompression, während PNG zumeist die
Qualität der ursprünglichen Rasterdaten widerspiegelt.

Benutzen Sie JPEG wenn Ihre WMS-Daten photographischer Natur
(Luftbilder/Orthophotos) sind und/oder Sie eine geringe qualitative
Beeinträchtigung in der Bildqualität nicht stört.
Verglichen zum PNG reduziert diese kleine Unannehmlichkeit den Datentransfer
bis zum Faktor 5.

Benutzer Sie PNG wenn sie eine exakte Wiedergabe der Originaldaten benötigen
und Sie den erhöhten Datentransfer in Kauf nehmen können.
\index{WMS!image encoding}
}
\end{Tip}

\minisec{Layer}

Der Abschnitt der \textsl{Layer} listet alle verfügbaren Layer des
WMS-Servers auf.
Sie werden bemerkt haben, dass einige Layer aufklappbar sind, was bedeutet,
dass der WMS-Server für diese Layer unterschiedliche Stile bereitstellt.

Sie könnten mehrere Layer auf einmal auswählen, jedoch nur einen Stil pro
Layer. Wenn mehrere Layer ausgewählt wurden, kombiniert der WMS-Server diese
und liefert sie als ein Bild an QGIS.

\begin{Tip}[h]\caption{\textsc{WMS-Layersortierung}}
\qgistip{In  der vorliegenden Version von QGIS werden die WMS-Layer in der
Reihenfolge dargestellt, wie sie in der Legende eingereiht sind, also von oben
nach unten.
Wenn Sie Layer in umgekehrter Reihenfolge überlagern wollen, dann können Sie
\textsl{WMS-Layer hinzufügen} ein zweites Map ausführen, den gleichen Server
erneut wählen. Wählen Sie eine weitere Gruppe von Layern, die über die erste
Gruppe gelegt werden soll.
\index{WMS!remote server!layer ordering}
}
\end{Tip}

\minisec{Transparenz}
% BM: doesn't seem to work?
% \label{ogc-wms-transparency}
In der vorliegenden Version von QGIS wurde die Transparenz standardmäßig
eingeschaltet, sofern der Server diese unterstützt. Daher existiert keine
separate Option im Dialog.

In der Theorie erlaubt dies das Überlagern von WMS-Layern über andere Layer
(Raster, Vektor oder andere WMS-Layer), sodass man die darunterliegenden
Layer noch durchsehen kann.

\begin{Tip}[h]\caption{\textsc{WMS-Layer-Transparenz}}
\qgistip{Tranzparenz hängt von der verwendeten Bildkodierung ab: PNG und GIF
unterstützen Transparenz, JPEG hingegen nicht.
\index{WMS!layer transparency}
}
\end{Tip}

\minisec{Koordinatensystem}
\index{WMS!CRS}\index{WMS!coordinate reference system}
\index{OGC!CRS}\index{OGC!coordinate reference system}
\index{Projections!WMS}
\index{Projections!CRS}\index{Projections!coordinate reference system}
\index{CRS}\index{coordinate reference system}

Koordinatensystem ist die Bezeichnung des OGC für Projektionen.

Jeder WMS-Layer kann in mehreren Koordinatensystemen dargestellt werden;
ausschlaggebend sind die angebotenen System des WMS-Servers.
Sie haben evtl. bemerkt, dass sich das \textsl{x} in der Spaltenüberschrift
basierend auf dem ausgewählten Layer, verändert.

Um ein Koordinatensystem auszuwählen, klicken Sie auf den Knopf
\textsl{Verändere...}. Es öffnet sich ein Fenster ähnlich dem in Abb.
\ref{fig:projections} im Anschnitt \ref{label_projstart}.
Der einzige Unterschied ist der, dass dort nur die Koordinatensysteme
angezeigt werden, die auch vom WMS-Server angeboten werden.

\begin{Tip}[h]\caption{\textsc{WMS-Projektionen}}
\qgistip{Um die besten Resultate zu erreichen, fügen Sie Ihrem Projekt als
erstes die WMS-Layer hinzu.
Dadurch stellt QGIS die Projekt-Projektion auf die des WMS-Servers ein.
Direkte Projektion (On-the-fly-Projektion) kann nun benutzt werden, um andere
Vektorlayer auf die WMS-Layer zu projizieren. (vgl. auch Abschnitt
\ref{sec:projection-specifying}).
Falls Sie einen WMS-Layer später in einem unterschiedlichen Koordinatensystem
hinzufügen, können unvorhersehbare Ereignisse auftreten.
}
\end{Tip}


\subsubsection{Das Abfragewerkzeug}\label{sec:ogc-wms-identify}
\index{WMS!identify}
\index{identify!WMS}

Nachdem Sie einen Layer von einem WMS-Server integriert haben, können Sie diese
Layer mit dem \textsl{Abfragewerkzeug} abfragen, sofern der Server diese Funktion
unterstützt.
Ein Klick auf einen Pixel stellt dann eine Abfrage an den WMS-Server für diesen
Pixel.

Das Ergebnis wird in Textform geliefert. Die Formatierung hängt von dem
jeweilig verwendeten WMS-Server ab.

\subsubsection{Eigenschaften}\label{sec:ogc-wms-properties}\index{WMS!properties}
\index{rasters!properties}

Nach erfolgreichem Hinzufügen eines WMS-Layers können Sie die Eigenschaften
des WMS-Server mit einem Rechtsklick auf den Layer in der Legendendarstellung
das Kontextmenü aufrufen. Der Knopf \textsl{Eigenschaften} öffnet ein
Dialogfenster.

\minisec{Metadaten-Reiter}\label{sec:ogc-wms-properties-metadata}
\index{rasters!metadata}
\index{WMS!metadata}
\index{WMS!capabilites}

Der Metadatenreiter im Kontextmenü zeigt eine Vielzahl von Informationen über
den WMS-Server. Diese Infos sind dem Capabilities-Dokument des Servers
entnommen.

Viele Definitionen können dem offiziellen Standarddokumenten
\cite{OGCWMS010101web}, \cite{OGCWMS010300web} entnommen werden; hier nur eine
kleine nützliche Auswahl:

\begin{itemize}
\item \textbf{Servereigenschaften}

\begin{itemize}
\item \textbf{WMS Version}      - Die WMS-Version, die vom Server unterstützt
								  wird.

\item \textbf{Bildformate}    - Eine Liste der MIME-Typen mit denen der Server
								antworten kann. QGIS unterstützt jedes
								Format, welches die darunterliegende
								Bibliothek QT unterstützt, mindestens aber 
                                \texttt{image/png} und \texttt{image/jpeg}.

\item \textbf{Abfrageformate} - Eine Liste der MIME-Typen mit denen der Server
								auf Pixel-Abfragen antworten kann.
								Derzeit wird von QGIS nur der Typ
                                \texttt{text-plain} unterstützt.

\end{itemize}

\item \textbf{Layereigenschaften}

\begin{itemize}
\item \textbf{ausgewählt}         - Gibt an, ob dieser Layer während des
									Hinzufügens des Server ausgewählt war.
\item \textbf{sichtbar}          - Gibt an, ob der Layer in der Legende
								  angezeigt wird oder nicht. (noch nicht 
								  verwendet in der aktuellen Version von
								  QGIS).
\item \textbf{Kann abfragen}     - Gibt an, ob der Layer auf Abfragen
								   Ergebnisse zurückgibt. 

\item \textbf{Kann Transparenz} - Gibt an, ob der Layer transparent
									gezeichnet werden kann. Diese Version 
									verwendet ein hardcodiertes \textsl{Ja},
									sofern die Bildkodierung Transparenz bietet.
% BM: doesn't seem to work?
%                                    (see Section
%                                    \ref{ogc-wms-transparency}
%                                    ).
                                    

\item \textbf{Kann reingezoomt werden}      - Gibt an, ob diese Layer gezoomt
									werden kann. Diese Version von QGIS 
									verwendet standardmäßig \textsl{Ja}. Daher 
									kann es sein, dass einige Layer komisch 
									aussehen, die diese Funktion nicht unterstützen.

\item \textbf{Kaskadierend}    - WMS-Server könnes als Proxy zwischen anderen
								WMS-Servern agieren, um Rasterdaten für einen 
								Layer anzufordern. Dieser Eintrag gibt an, 
								wieviele WMS-Server angefragt werden müssen, um die 
								Daten zu bekommen.

\item \textbf{Fixierte Höhe}     - Gibt an, ob der Layer eine feste
									Pixeldimension hat. Diese Version von QGIS 
									nimmt an, dass alle WMS-Layer diesen Wert 
									nicht gesetzt haben. Daher kann es sein, dass 
									einige Layer komisch aussehen, die diese Funktion
									nicht unterstützen.

\item \textbf{WGS 84 Boundingbox} - Gibt die Boundingbox eines Layers in
									WGS84-Koordinaten an.
									Einige WMS-Server setzen diese Werte nicht
									korrekt (z.B. stehen darin manchmal
									UTM-Koordinaten), sodass bei solchen
									Layern in QGIS der Eindruck entsteht, sehr weit
									herausgezoomt zu sein.
									Der Webmaster des WMS-Servers sollte dann auf
									dieses Problem aufmerksam gemacht werden.
									Das WMS XML-Element ist \texttt{LatLonBoundingBox},
									\texttt{EX\_GeographicBoundingBox} oder
									die CRS:84 \texttt{BoundingBox}.

\item \textbf{verfügbare Koordinatensysteme} - Die Projektionen, in denen dieser Layer
									dargestellt werden kann. Diese sind dem 
									Capabilities-Dokument des Servers entnommen.

\item \textbf{verfügbare Stile} - Die Bildstile, in denen dieser Layer
dargestellt werden kann.

\end{itemize}

\end{itemize}


\subsubsection{Einschränkungen des WMS-Klienten}\label{sec:ogc-wms-limits}\index{WMS!client!limits}

Nicht alle spezifizierten und möglichen WMS-Klientfunktionalitäten wurden in
diese Version von QGIS implementiert. Einige nennenswerte Ausnahmen seien kurz
erläutert:

\minisec{Ändern der WMS-Layereigenschaften}
\index{WMS!layer settings!editing}

Wenn der Layer über den Knopf \textsl{WMS-Layer hinzufügen} hinzugefügt wurde,
besteht im Nachhinein keine Möglichkeit, diese nocheinmal zu ändern.

Als Workaround sollte der Layer komplett gelöscht und mit den gewünschten
Einstellungen erneut vom Server geladen werden.

\minisec{WMS-Server, die Authentifizierung benötigen}
\index{WMS!remote server!authentication}

Derzeit sind nur öffentlich zugängliche WMS-Server nutzbar.
Es besteht noch keine Möglichkeit, eine Nutzer-Passwort-Kombination
einzugeben.

\subsection{WFS-Klient}

In QGIS verhält sich ein WFS-Layer weitestgehend wie ein anderer Vektorlayer. Sie können Objekte abfragen, auswählen und sich die Attributtabelle anschauen. Das WFS-Plugin unterstützt zur Zeit noch kein Editieren eines WFS-Layers.

Das Hinzufügen eines WFS-Layers ist fast identisch mit dem Vorgehen beim Laden eines WMS-Layers. Der aktuelle Unterschied ist, dass keine Beispielserver vordefiniert sind, daher soll dies in dem folgenden Beispiel vorgeführt werden.

\subsubsection{Laden eines WFS-Layers}

In diesem Beispiel verwenden wir den WFS-Server der Firma DMSolution und laden einen Layer. Die URL ist:
\begin{verbatim}
http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?VERSION=1.0.0&SERVICE=
wfs&REQUEST=GetCapabilities
\end{verbatim}

\begin{enumerate}
  \item Laden Sie das WFS-Plugin, falls dies noch nicht geschehen ist. Öffnen Sie ansonsten den Plugin-Manager und laden Sie es
  \item Klicken Sie auf \textsl{WFS-Layer hinzufügen} in der Plugin-Werkzeugleiste
  \item Klicken Sie auf \textsl{Neu} 
  \item Tragen Sie ``DM Solutions'' als Name ein
  \item Tragen Sie die URL ein (siehe oben)
  \item Klicken Sie auf \textsl{OK} 
  \item Wählen Sie ``DM Solutions'' aus dem Menü der vorhandenen Server
  \item Klicken Sie auf \textsl{Verbinden} 
  \item Warten Sie auf die Liste vorhandener Layer des Servers
  \item Klicken Sie auf den Layer ``Canadian Land''
  \item Klicken Sie auf \textsl{Hinzufügen} um den Layer anzuzeigen
  \item Warten Sie, dass sie Daten heruntergeladen und angezeigt werden
\end{enumerate}

\begin{figure}[ht]
 \begin{center}
  \caption{Einen WFS-Layer hinzufügen}\label{fig:wfs_dmsolutions}
  \includegraphics[clip=true,width=\textwidth]{wfs_dmsolutions}
 \end{center}
\end{figure}

Sie werden sehen, dass der Fortschritt des Herunterladens in der unteren linken Ecke des QGIS-Hauptfensters angezeigt wird. Wenn der layer geladen und angezeigt wird, können Sie die Objekte auswählen und sich die dazugehörige Attributtabellen anzeigen lassen.

Bedenken Sie, dass dieses Plugin noch experimentell ist und Fehler auftreten können genauso wie Abstürze. Die aber hoffentlich in den kommenden Versionen repariertw erden.

\begin{Tip}[h]\caption{\textsc{WMS- und WFS-Server finden}}
\qgistip{Sie können weitere WMS- und WFS-Server mit Hilfe von Google oder ihrer bevorzugten Suchmaschine finden. Es gibt eine Vielzahl von Listen im Internet, die Links zu öffentlichen Servern bereitstellen.
\index{WFS!remote server!}
}
\end{Tip} 



