% vim:autoindent:set textwidth=78:

\section{Arbeiten mit Vektordaten}\label{label_workingvector}
\index{Vektorlayer|(}

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

QGIS unterstützt eine Vielzahl unterschiedlicher Vektorformate, inklusive
allen Formaten, die durch die OGR-Bibliothek unterstützt werden, wie etwa
das ESRI Shape,\index{Shapedateien}\index{ESRI!Shapedateien}\index{SHP Dateien}
MapInfo MIF (Austauschformat)\index{MIF Dateien}\index{MapInfo!MIF Dateien}
und MapInfo TAB (Natives Format).\index{TAB Dateien}\index{MapInfo!TAB
Dateien} 
Eine Liste von Vektorformaten, die durch die OGR-Bibliothek unterstützt
werden, finden Sie in Anhang~\ref{appdx_ogr}. 

QGIS unterstützt auch PostGIS-Layer\index{PostGIS}\index{PostgreSQL!PostGIS}
in einer PostgreSQL Datenbank mit Hilfe des PostGIS-Plugins. Unterstützung
für weitere Datenformate (z.B.: ASCII-Tabellen oder GPS-Daten) sind mittels
weiterer Plugins realisiert.\index{Getrennter Text}

In diesem Abschnitt wird beispielhaft beschrieben, wie man mit ESRI Shapes,
PostGIS- und SpatiaLite-Layern arbeitet. Viele Funktionen in QGIS sind
unabhängig vom
verwendeten Datenformat und verhalten sich daher identisch. Dies ist gewollt
und bezieht sich u.a. auf Abfrage, Selektion, Beschriftung und Attributfunktionen.

Das Arbeiten mit GRASS GIS Vektorlayern bildet an manchen Stellen eine Ausnahme
und wird daher in Kapitel \ref{sec:grass} explizit beschrieben.

\subsection{ESRI Shapes}
\index{Vektorlayer!ESRI Shapedateien}
\index{Shapedateien}
\index{ESRI!Shapedateien}
\index{SHP Dateien}

ESRI Shape ist das Standard Vektorformat in QGIS und wird durch die OGR Simple
Feature Library \url{http://www.gdal.org/ogr}\index{OGR} bereitgestellt.
Ein Shape besteht aus mindestens drei Dateien:\index{Shapedateien!Format}

\begin{itemize}
\item .shp Datei (enthält die Geometrien)
\item .dbf Datei (enthält die Attribute im dBase-Format)
\item .shx Datei (enthält den räumlichen Index)
\end{itemize}

Darüberhinaus kann eine Datei mit .prj Endung existieren. Diese enthält
die Projektionsinformationen des Shapes. Es können noch weitere Dateien zu
einem Shape gehören. Details dazu finden sich in der technischen
Spezifikation unter \\
\url{http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf}
\index{Shapedateien!Spezifikation}.

\subsubsection{Shape Layer laden}\label{sec:load_shapefile}

\begin{figure}[ht]
   \begin{center}
   \caption{Dialogfenster zum Laden OGR-unterstützter Layer \nixcaption}\label{fig:addvectorlayer}\smallskip
   \includegraphics[clip=true, width=12cm]{addvectorlayerdialog}
\end{center}
\end{figure}

\includegraphics[width=0.7cm]{mActionAddNonDbLayer} Um ein Shape zu laden,
starten Sie QGIS und klicken auf das Icon
\toolbtntwo{mActionAddNonDbLayer}{Vektorlayer hinzufügen} in der
Werkzeugleiste\index{Shapedateien!Öffnen} oder mit der Taste \keystroke{V}.
Mit demselben Tool können Sie auch alle anderen durch OGR unterstützten
Formate laden.

Wählen Sie aus den möglichen Quelltypen \radiobuttonon{Datei} und klicken Sie
auf den Knopf \button{Durchsuchen}. Dadurch erscheint ein weiterer Dialog zum
Öffnen eines OGR-Vektorlayers (siehe Abbildung~\ref{fig:openshapefile}), mit
dessen Hilfe Sie in Ihrem Dateisystem navigieren und die entsprechenden zu
ladenden Dateien auswählen können. Die Auswahlbox \selectstring{Dateien des
Typs}{\ldots} ermöglicht es, im Vorfeld ein Dateiformat auszuwählen. 

Außerdem kann auch der Kodierungstyp für das Shape eingestellt werden, falls
dies notwendig ist.  

\begin{figure}[ht]
   \begin{center}
   \caption{Dialogfenster zum Auswahlen eines Vektorlayers \nixcaption}\label{fig:openshapefile}\smallskip
   \includegraphics[clip=true, width=14cm]{shapefileopendialog}
\end{center} 
\end{figure}

Durch Auswahl eines Shapes und Anklicken des Knopfes \button{Öffnen} wird die
Datei in QGIS geladen. In Abbildung~\ref{fig:loadedshapefile} sehen Sie das Ergebnis,
nachdem die Beispieldatei \filename{alaska.shp} geladen wurde.

\begin{figure}[ht]
   \begin{center}
   \caption{QGIS mit einem geladenen Alaska Shape \nixcaption}\label{fig:loadedshapefile}\smallskip
   \includegraphics[clip=true, width=16cm]{shapefileloaded}
\end{center} 
\end{figure}

\begin{Tip}\caption{\textsc{Farben von Vektorlayern}}
\qgistip{Wenn Sie einen neuen Vektorlayer in QGIS laden, werden Farben
zufällig zugewiesen. Wenn Sie mehrere neue Vektorlayer laden, werden jeweils
unterschiedliche Farben zugewiesen.
}
\end{Tip}

Nach dem Laden können Sie mit den Navigationstools aus der Werkzeugleiste
beliebig zoomen oder den Layer verschieben. Um den
\dialog{Eigenschaften}-Dialog eines Vektorlayers zu öffnen, doppelklicken Sie
auf den Layernamen in der Legende oder zeigen Sie mit der Maus auf den
Layernamen, drücken Sie die rechte Maustaste und wählen
\dropmenuopt{Eigenschaften}. Vergleichen Sie Abschnitt~\ref{sec:symbology}
für weitere Informationen zum Editieren der Eigenschaften von Vektorlayern.

\begin{Tip}\caption{\textsc{Layer und Projekte von externen Datenträgern laden
unter OS X}}
\qgistip{Unter OS X werden externe Datenträger unter Datei -> Öffne Projekt
nicht gemeinsam mit den internen Festplatten angezeigt. Dies soll zukünftig
behoben werden. Solange können Sie '/Volumes' in das Eingabefenster
'Dateiname' eintragen und return drücken. Danach können Sie auch zu den
externen Datenträgern bzw. Rechnern in einem Netzwerk browsen.}
\end{Tip}
 
\subsubsection{Darstellungsgeschwindigkeit optimieren}

Um die Darstellungsgeschwindigkeit zu optimieren, kann ein räumlicher Index
erstellt werden. Ein\index{Räumlicher Index!Shapedateien} räumlicher Index
erhöht die Geschwindigkeit beim Zoomen und Verschieben. Räumliche Indizes
haben in QGIS die Endung \filename{.qix}.

Benutzen Sie folgende Schritte zum Erstellen eines räumlichen Index:

\begin{itemize}
\item Laden Sie ein Shape
\item Öffnen Sie den \dialog{Eigenschaften}-Dialog des Vektorlayers, indem
Sie auf den Namen des Layers in der Legende doppelklicken oder mit der
rechten Maustaste \dropmenuopt{Eigenschaften} auswählen. 
\item In dem Reiter \tab{Allgemein} klicken Sie auf den \button{Erstellen}-Knopf
im Bereich \button{Räumlichen Index erstellen}
\end{itemize}

\subsubsection{MapInfo Layer laden}
\index{Vektorlayer!MapInfo}

Um eine MapInfo Datei zu laden, klicken Sie auf das Icon
\toolbtntwo{mActionAddNonDbLayer}{Vektorlayer hinzufügen} in der
Werkzeugleiste oder drücken Sie die Taste \keystroke{V}. Wählen Sie aus den
möglichen Quelltypen \radiobuttonon{Datei} und klicken Sie auf den Knopf
\button{Durchsuchen}. Definieren Sie unter \selectstring{Dateien des
Typs}{MapInfo (*.mif *.tab *.MIF *.TAB)} und wählen die gewünschte Datei aus.

\subsubsection{ArcInfo Binary Coverage laden}
\index{Vektorlayer!ArcInfo Coverage}

Um ein ArcInfo Coverage zu laden, klicken Sie auf das Icon
\toolbtntwo{mActionAddNonDbLayer}{Vektorlayer hinzufügen} in der
Werkzeugleiste oder drücken Sie die Taste \keystroke{V}. Wählen Sie aus den
möglichen Quelltypen \radiobuttonon{Verzeichnis}, wählen Sie als
\selectstring{Typ}{ArcInfo Binary Coverage} und klicken Sie auf den Knopf
\button{Durchsuchen}. Wählen Sie nun den Ordner mit den ArcInfo Binary
Coverage Dateien aus, in der sich beispielweise folgende Dateien befinden
können:  

\begin{itemize}
\item .lab - Attributlayer laden (Flächenattribute oder Punktdaten)
\item .cnt - Polygon-Centroid-Layer laden
\item .arc - Linienlayer laden
\item .pal - Polygonlayer laden
\end{itemize}

Klicken Sie auf \button{Ok}. Es öffnet sich jetzt ein weiterer Dialog mit
einer Liste der vorhandenen Unterlayer, die sich in dem ausgewählten Ordner
befinden. Wählen Sie die gewünschten Layer aus und klicken Sie wieder auf
\button{Ok}, um diese in QGIS anzuzeigen.

Auf die gleiche Art und Weise können auch andere Verzeichnis-basierte
Vektorlayer geladen werden, wie etwa das U.K. National Transfer Format, das
raw TIGER Format des U.S. Census Bureau oder auch GRASS Vektorlayer. Letztere
werden normalerweise aber über das GRASS Plugin geladen (siehe
Kapitel~\ref{sec:grass}).

\subsection{PostGIS Layer laden}
\index{Vektorlayer!PostGIS}
\index{PostGIS!Layer}
\label{label_postgis} 

PostGIS-Ebenen sind in einer PostgreSQL Datenbank gespeichert. Der Vorteil
von PostGIS liegt in der Fähigkeitkeit, räumliche Indizes, Filterungen und
Abfragen bereitszustellen. Vektorfunktionen wie Selektieren und Abfragen
funktionieren besser als bei Ebenen, die durch die OGR-Bibliothek geladen
wurden.

Um PostGIS benutzen zu können, brauchen Sie folgende
Schritte:\index{PostgreSQL!Layer laden}

\begin{itemize}
\item Verknüpfen Sie QGIS mit einer PostgreSQL Datenbank (falls dies noch
nicht geschehen ist)\index{PostgreSQL!Verbindung}
\item Stellen Sie eine Verbindung zur Datenbank her
\item Wählen Sie einen PostGIS Layer aus
\item Optional nutzen Sie eine SQL \usertext{WHERE}-Abfrage, um zu
definieren, welche Objekte des Layers angezeigt werden sollen.
\item Laden Sie den Layer
\end{itemize}

\subsubsection{Erstellen einer PostGIS Anbindung}\index{PostgreSQL!Verbindung}\label{sec:postgis_stored}

Beim ersten Einbinden einer PostGIS-Datenbank muss eine Anbindung erstellt
und gespeichert werden.
Klicken Sie dazu auf das Icon \toolbtntwo{mActionAddLayer}{PostGIS-Layer
hinzufügen} in der Werkzeugleiste oder aus dem Menü \mainmenuopt{Layer}. 
Der \texttt{PostGIS Tabelle(n) hinzufügen}-Dialog erscheint daraufhin. Um
eine neue Anbindung zu erstellen, klicken Sie auf den Knopf \button{Neu}.
Sie können dazu auch auf das Icon \toolbtntwo{mActionAddNonDbLayer}{Vektorlayer
hinzufügen} klicken, und aus den möglichen Quelltypen
\radiobuttonon{Datenbank} auswählen und dann auf den Knopf \button{Neu}
drücken. Der Dialog \dialog{Neue PostGIS-Verbindung erzeugen} öffnet sich,
und Sie können die notwendigen Parameter aus Tabelle
\ref{tab:postgis_connection_parms} eingeben und speichern.

\begin{table}[h]\index{PostgreSQL!Verbindungsparameter}
\centering
\caption{PostGIS Verbindungsparameter}\label{tab:postgis_connection_parms}\medskip
 \begin{tabular}{|l|p{5in}|}
\hline Name & Ein Name für die Verbindung. Kann derselbe wie für die
Datanbank sein \\
\hline Host \index{PostgreSQL!Host} & Name des Datenbank-Hosts. Dies muss ein
auflösbarer Name für den HOST sein, genau wie beim Benutzen von telnet oder ping \\
\hline Datenbank \index{PostgreSQL!Datenbank} & Name der Datenbank  \\
\hline Port \index{PostgreSQL!Port}& Port Nummer der Datenbank auf dem
Server. Standard ist 5432.\\
\hline Benutzername \index{PostgreSQL!Benutzername}& Benutzername, um sich bei
der Datenbank anzumelden \\
\hline Passwort \index{PostgreSQL!Passwort}& Passwort, um sich als
\filename{Benutzer} mit der Datenbank zu verbinden\\
\hline SSL Modus \index{PostgreSQL!SSL Modus}& Wie die SSL-Verbindung mit dem
Server festgelegt wird. Die Optionen sind:
\begin {itemize}
\item abschalten: Versuche nur eine Nicht-SSL-Verbindung.
\item erlauben: Versuche eine Nicht-SSL-Verbindung. Wenn das nicht
klappt, versuche eine SSL-Verbindung.
\item bevorzugen (the default): Versuche eine SSL-Verbindung. Wenn das nicht
klappt, versuche eine Nicht-SSL-Verbindung;
\item verlangen: Versuche nur eine SSL-Verbindung.
\end {itemize}
Bemerkung: Die Geschwindigkeit der Verbindung kann oftmals enorm gesteigert
werden, wenn die SSL-Verbindung abgeschaltet wird. \\
\hline
\end{tabular}
\end{table}

Optional können noch die folgenden Kontrollkästchen aktiviert werden:

\begin{itemize}
\item \checkbox{Passwort speichern}
\item \checkbox{Nur in geometry\_columns nachschauen}
\item \checkbox{Nur im 'public' Schema nachschauen}
\end{itemize}

Wenn alle Parameter eingetragen sind, kann die Verbindung getestet werden,
indem Sie auf den Knopf \button{Teste Verbindung}
drücken\index{PostgreSQL!Verbindung!Testen}. 

\begin{Tip}\caption{\textsc{QGIS Benutzereinstellungen und Sicherheit}}
\index{Einstellungen}\index{Sicherheit} \qgistip{Ihre Einstellungen für QGIS werden
abhängig von Ihrem Betriebssystem gespeichert. Unter \nix ist dies in Ihrem
Homeverzeichnis unter .qt/qgisrc. Unter \win ist es in der Registry. Abhängig
von Ihrer Arbeitsumgebung kann das Speichern von Passworten in den
QGIS-Einstellungen ein Sicherheitsrisiko darstellen.
}
\end{Tip}

\minisec{Laden eines Layers aus der PostGIS Datenbank}\index{PostgreSQL!Layer
laden}

Nachdem Sie eine oder mehrere Verbindungen definiert und gespeichert haben,
können Sie einzelne Ebenen aus PostGIS laden. Natürlich brauchen Sie dazu
Daten in PostgreSQL/PostGIS. Eine Beschreibung zum Import von Daten nach
PostgreSQL/PostGIS lesen Sie Abschnitt \ref{sec:loading_postgis_data}.

Um eine Ebene aus PostGIS zu laden, führen Sie folgende Schritte durch:

\begin{itemize}
\item Wenn der \dialog{PostGIS Tabelle(n) hinzufügen}-Dialog noch nicht
geöffnet ist, klicken Sie auf den Knopf
\toolbtntwo{mActionAddLayer}{PostGIS-Layer hinzufügen} in der Werkzeugleiste
\item Wählen Sie eine Verbindung aus dem Drop-Down Menü und klicken auf
\button{Verbinden}
\item Suchen Sie einen Layer, den Sie laden möchten
\item Wählen Sie den Layer durch doppelklicken aus. Sie können mehrere Ebenen
auswählen, indem Sie die \keystroke{Shift}-Taste beim Auswählen gedrückt
halten. Weitere Informationen, z.B. zum Umgang mit dem PostgreSQL
Query-Builder finden Sie in Abschnitt~\ref{sec:query_builder}.
\item Klicken Sie auf den Knopf \button{Hinzufügen}, um den Layer zu laden.
\end{itemize}

\begin{Tip}\caption{\textsc{PostGIS-Layer}}
\qgistip{Normalwerweise ist ein PostGIS-Layer über einen Eintrag in der
geometry\_columns Tabelle definiert. Seit Version 0.9.0 ist QGIS in der Lage,
Layer zu laden, die keinen Eintrag in der geometry\_columns Tabelle
besitzen. Dies bezieht sich auf Tabellen und Views. Um einen 'spatial view' zu
definieren, brauchen Sie ein kraftvolles System, um die Daten zu
visualisieren. Beziehen Sie sich auf das PostgreSQL Handbuch, um weitere
Informationen über die Erstellung von Views zu erhalten.}
\end{Tip}

\subsubsection{Einige Details zu PostGIS-Layern}\label{sec:postgis_details}
\index{PostgreSQL!Layerdetails}

Dieser Abschnitt enthält einige Details, wie QGIS auf PostgreSQL zugreift.
Meistens soll QGIS eine Liste mit ein paar Datenbanktabellen bereitstellen,
die bei Bedarf geladen werden können. Wenn Sie Probleme mit dem Laden von
Layern aus PostgreSQL haben, können die nun folgenden Informationen
vielleicht eine Hilfe sein, die Fehlermeldungen von QGIS besser zu verstehen
und eine Lösung zu finden, die PostgreSQL Tabellen- oder Viewdefinition
anzupassen, und somit den Layer laden zu können.

QGIS braucht eine Spalte in der PostgreSQL Tabelle, die als eindeutiger
Schlüssel für den Layer genutzt werden kann. Für Tabellen bedeutet dies, dass
die Tabelle normalerweise einen Primärschlüssel braucht oder eine Spalte mit
eindeutiger Zuordnung. Für QGIS muss diese Spalte außerdem vom Typ int4 sein
(Integer mit 4 Bytes). Als Alternative kann auch die Spalte ctid als
Primärschlüssel-Spalte verwendet werden. Wenn eine Tabelle diese
Voraussetzungen nicht erfüllt, wird die oid-Spalte genutzt. Die
Performanz steigt, wenn für die Spalte ein Index erstellt wurde (für
Primärschlüssel wird in PostgreSQL automatisch ein Index erstellt).

Wenn der PostGIS-Layer ein View ist, gelten dieselben Anforderungen, aber
Views besitzen keinen Primärschlüssel oder Spalten mit eindeutiger Zuordnung.
In diesem Fall wird QGIS versuchen, eine passende Spalte zu finden, die aus
der Tabellenspalte erstellt wurde. Dies geschieht, indem die View Definition
SQL-basiert durchsucht wird. Aber es gibt auch einige Aspekte der SQL, die
von QGIS ignoriert werden. Dies beinhaltet zum Beispiel die Verwendung von
Tabellen Aliases und Spalten, die durch SQL Funktionen generiert wurden. Wenn
so eine Primärschlüssel Spalte nicht existiert, wird die Ebene nicht geladen.
In diesem Fall ist eine Lösung, den View anzupassen,
damit er eine entsprechende Spalte vom Typ int4 enthält, entweder mit einem
Primärschlüssel oder eindeutiger Zuordnung und bevorzugt natürlich mit Index.

\subsubsection{Layer nach PostgreSQL/PostGIS importieren}\label{sec:loading_postgis_data}
\index{PostGIS!SPIT!Daten importieren}

\minisec{shp2pgsql}
Layer können auf unterschiedliche Art nach PostGIS importiert werden.
PostGIS selbst stellt ein Tool \filename{shp2pgsql} bereit, das genutzt
werden kann, um Shapes nach PostGIS zu importieren. Um ein Shape mit dem
Namen \filename{alaska.shp} in eine PostgreSQL/PostGIS Datenbank zu
importieren, wird folgendes Kommando benutzt:

\begin{verbatim} 
  shp2pgsql -s 2964 alaska.shp alaska_new | psql gis_data
\end{verbatim}

Dieser Befehl erzeugt eine neue Tabelle mit dem Namen \usertext{alaska\_new}
in der PostgreSQL/PostGIS Datenbank \usertext{gis\_data}. Die neue Ebene wird
die ID 2964 als 'spatial reference identifier' (SRID) tragen. Weitere
Informationen zu räumlichen Referenzsystemen finden Sie in Abschnitt
\ref{label_projections}.

\begin{Tip}
\caption{\textsc{PostGIS-Layer exportieren}\index{PostGIS!Exportieren}}
\qgistip{Entsprechend dem Importtool \usertext{shp2pgsql} gibt es auch ein
Exporttool, um Daten von PostGIS ins Shape-Format zu exportieren:
\usertext{pgsql2shp}. Dieses Tool ist in der PostGIS-Installation enthalten.}
\end{Tip}

\minisec{SPIT Plugin}

QGIS bietet ein Plugin mit dem Namen SPIT (Shapefile to PostGIS Import
Tool)\index{PostGIS!SPIT}. SPIT kann dazu
benutzt werden, gleichzeitig mehrere Shapes zu laden und bietet dabei auch
Support für Schemas. Um das Plugin zu benutzen, öffnen Sie
\dropmenuopttwo{mActionShowPluginManager}{Plugins verwalten} im Menü
\mainmenuopt{Plugins}, wählen das \checkbox{SPIT} aus und drücken auf
\button{OK}. Das SPIT-Icon wird nun in der Plugin-Werkzeugleiste
angezeigt\index{PostGIS!SPIT!laden}.

Klicken Sie nun auf das \toolbtntwo{spiticon}{SPIT}-Icon in der
Werkzeugleiste, um den Dialog \dialog{Shapefile nach PostGIS Import Tool} zu
öffnen. Wählen Sie über den Knopf \button{Verbinden} eine PostGIS Datenbank
aus, fügen Sie dann mit dem Knopf \button{Hinzufügen} ein oder mehrere
Shapes zu der Liste hinzu und klicken dann für den Import auf den Knopf
\button{OK}. Der Fortschritt des Imports sowie Warnungen oder Fehlermeldungen
werden für jedes Shape angezeigt.

\begin{Tip}\caption{\textsc{Shapes mit für PostgreSQL reservierten
Ausdrücken importieren}}\index{PostGIS!SPIT!reservierte Ausdrücke}
\qgistip{Wenn Sie ein Shape in der Liste zu importierender Daten haben,
welches Felder mit für PostgreSQL reservierten Ausdrücken enthält, erscheint
ein Popup mit dem jeweiligen Status der Felder. Sie können die Namen der Felder
\index{PostGIS!SPIT!Spaltennamen editieren} dann vor dem Import editieren und
anpassen. Der Versuch die Datei ohne Änderung zu importieren, wird sehr
wahrscheinlich fehlschlagen.}
\end{Tip}

\minisec{ogr2ogr}

Abgesehen von \filename{shp2pgsql} und \filename{SPIT} gibt es noch ein weiteres
Tool, um Daten nach PostGIS zu importieren: \filename{ogr2ogr}. Dieses Tool ist
Teil der GDAL-Installation. Um ein Shape nach PostGIS zu importieren, kann
folgendes Kommando verwendet werden:

\begin{verbatim}
  ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres \
  password=topsecret" alaska.shp
\end{verbatim}

Damit wird das Shape \filename{alaska.shp} vom Benutzer \usertext{postgres}
mit dem Passwort \usertext{topsecret} in die PostGIS Datenbank
\usertext{postgis} auf dem Server \usertext{myhost.de} importiert.

Wichtig ist, dass GDAL mit PostgreSQL-Support kompiliert sein muss, damit der
Import nach PostGIS möglich ist. Dies kann mit folgendem Kommando getestet werden:

\begin{verbatim}
ogrinfo --formats | grep -i post
\end{verbatim}

Wenn Sie das PostgreSQL's Kommando \filename{COPY} anstatt der
Standardmethode \filename{INSERT INTO} verwenden möchte, müssen Sie vorher
die folgende Variable exportieren (verifiziert unter \nix und \osx):

\begin{verbatim}
  export PG_USE_COPY=YES
\end{verbatim}

Der Befehl \filename{ogr2ogr} erstellt im Gegensatz zu \filename{shp2pgsl}
keinen räumlichen Index. In diesem Fall müssen Sie ihn nachträglich manuell
erstellen mit dem SQL-Kommando \usertext{CREATE INDEX}. Die Schritte werden
im folgenden Kapitel~\ref{label_improve} näher beschrieben.

\subsubsection{Geschwindigkeit optimieren} \label{label_improve}

Der Datentransfer von einer PostgreSQL/PostGIS Datenbank kann langsam sein,
besonders über ein Netzwerk. Die Geschwindigkeit kann optimiert werden, indem
für alle Ebenen in PostgreSQL ein räumlicher Index\index{PostGIS!Räumlicher
Index} erstellt wird. PostGIS unterstützt das Erstellen eines GiST
(Generalized Search Tree) Index, um den Zugriff auf die Ebenen zu beschleunigen.

Die Syntax zur Erstellung eines GiST\footnote{Die GiST Index Informationen wurden
aus der PostGIS Dokumentation übernommen unter:
\url{http://postgis.refractions.net}} Index ist:

\begin{verbatim}
    CREATE INDEX [indexname] ON [tablename] 
      USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );
\end{verbatim}

Bedenken Sie, dass das Erstellen eines Index bei großen Datenmengen
zeitaufwendig ist. Nachdem der Index erstellt ist, sollte ein
\usertext{VACUUM ANALYZE} durchgeführt werden (vgl. PostGIS Dokumentation
\cite{PostGISweb}).

Im Folgenden sehen Sie ein Beispiel, um einen GiST-Index zu erstellen:

\begin{verbatim}
gsherman@madison:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
        \h for help with SQL commands
        \? for help with psql commands
        \g or terminate with semicolon to execute query
        \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (the_geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
gsherman@madison:~/current$
\end{verbatim}

\subsubsection{Vektorlayer, die den Längengrad 180$^\circ$ überschreiten}
\index{Vektorlayer!Datumsgrenze überschreiten}

Viele GIS Applikationen stellen einen Vektorlayer, der über den Längengrad
\degrees{180} hinausgeht nicht zusammenhängend dar. So wird in QGIS der Layer
geteilt und man sieht im Kartenfenster zwei, weit voneinander entfernte
Teile, die eigentlich zusammen gehören. In Abbildung
\ref{fig:vector_not_wrapping} sollte z.B. der kleine Punkt in der linken Ecke des
Kartenfensters (Chatham Inseln) rechts neben Neuseeland angezeigt werden. 

\begin{figure}[ht]
   \begin{center}
   \caption{Falsche Darstellung eines Vektorlayer über dem Längengrad \degrees{180} \nixcaption}
   \label{fig:vector_not_wrapping}\smallskip
   \includegraphics[clip=true, width=\textwidth]{vectorNotWrapping}
\end{center}
\end{figure}

Eine Möglichkeit, dies zu umgehen, bietet PostGIS und die Funktion
\textbf{ST\textunderscore Shift\textunderscore
Longitude}.\footnote{\url{http://postgis.refractions.net/documentation/manual-1.4/ST_Shift_Longitude.html}}
Die Funktion liest alle Objekte der Karte ein und wenn der Längengrad < \degrees{0}
ist, werden \degrees{360} hinzugezählt. Das Ergebnis ist eine \degrees{0} -
\degrees{360} Karte, die als Mittelpunkt den Längengrad \degrees{180}
verwendet.

\begin{figure}[ht]
   \begin{center}
   \caption{Vektorlayer über dem Längengrad \degrees{180} nach Anwendung der
PostGIS Funktion \nixcaption}
\label{fig:vector_wrapping}\smallskip
   \includegraphics[clip=true, width=9cm]{vectorWrapping}
\end{center}
\end{figure}

\minisec{Beispielanwendung}

\begin{itemize}
\item Importiere den Layer nach PostGIS (\ref{sec:loading_postgis_data}) z.B.
mit dem 'PostGIS Manager' oder dem 'SPIT' Plugin.
\item Öffnen Sie das PostGIS Kommandozeilenfenster und geben Sie folgendes
Kommando ein. In diesem Beispiel steht der Name 'TABELLE' für den
tatsächlichen Namen der PostGIS Tabelle.\\ 
\texttt{gis\_data=\# update TABELLE set the\_geom=ST\_shift\_longitude(the\_geom);} 
\item Wenn alles geklappt hat, sehen Sie eine Bestätigung mit den Objekten,
die verändert wurden. Danach können Sie den PostGIS Layer in QGIS als eine
zusammenhängende Karte laden (siehe Abbildung \ref{fig:vector_wrapping}).
\end{itemize}

\subsection{SpatiaLite Layer laden}
\index{SpatiaLite!Layereigenschaften}
\index{Vektorlayer!SpatiaLite}
\index{SpatiaLite!Layer}
\label{label_spatialite}

\includegraphics[width=0.7cm]{mActionAddSpatiaLiteLayer}
Wenn Sie das erste Mal einen Layer aus einer Spatialite Datenbank laden
möchten, klicken Sie auf das Icon
\toolbtntwo{mActionAddSpatiaLiteLayer}{SpatiaLite Layer hinzufügen} in der
Werkzeugleiste oder indem Sie
\dropmenuopttwo{mActionAddSpatiaLiteLayer}{SpatiaLite Layer hinzufügen\ldots}
im Menü \mainmenuopt{Layer} auswählen oder indem Sie die Taste \keystroke{L}
drücken.
Dies öffnet einen Dialog, über den Sie entweder eine Verbindung zu einer
bereits in QGIS definierten SpatiaLite Datenbank auswählen oder eine
neue Verbindung erstellen können. Um eine neue Verbindung zu erstellen,
klicken Sie auf den Knopf \button{Neu} und verwenden dann den Dateibrowser,
um eine entsprechende SpatiaLite Datenbank auszuwählen. Dabei handelt es sich
um eine Datei mit der Endung \filename{.sqlite}.

\subsection{Vektorlayereigenschaften}\label{sec:vectorprops}
\index{Vektorlayer!Layereigenschaften}

\begin{figure}[H]
   \begin{center}
   \caption{Dialog zur Einstellung von Vektorlayereigenschaften
\nixcaption}\label{fig:vector_symbology}\smallskip
   \includegraphics[clip=true, width=16cm]{vectorLayerSymbology}
\end{center}
\end{figure}

Der Dialog \dialog{Layereigenschaften} stellt Einstellungsmöglicheiten und
Informationen zu einem Vektorlayer, seiner Darstellung, Metadaten,
Beschriftungsoptionen, Aktionen und Attributen bereit. Wenn ein Vektorlayer
aus einer PostgreSQL/PostGIS Datenbank geladen wurde, können über den Dialog
\dialog{Layereigenschaften} auch SQL-Abfragen mit dem \dialog{Query Builder}
im Reiter \tab{Allgemein} angewendet werden, indem Sie auf den Knopf
\button{Abfrageerstellung} klicken. Ansonsten müssen Sie für
OGR-unterstützte Formate den \dialog{Query Builder} Dialog über den Knopf
\button{Erweiterte Suche} im Attributtabellen Fenster starten
(vgl. Kapitel~\ref{sec:query_builder}). Um den Dialog für die
Layereigenschaften zu öffnen, doppelklicken Sie auf den Namen des Layers in
der Legende oder wählen mit der rechten Maustaste \dialog{Eigenschaften} aus.

\subsubsection{Allgemein}\label{vectorgeneraltab}

Der Reiter \tab{Allgemein} im Dialog \dialog{Layereigenschaften} ermöglicht
es, den Anzeigenamen in der Legende zu verändern, einen räumlichen Index für
PostGIS- sowie OGR-Layer zu erstellen, das Koordinatenbezugssystem des Layers
zu definieren und einen Minimum- und Maximumwert für Ma"sstabsabhängiges
Zeichnen festzulegen.

Der Knopf \button{Query Builder} ermöglicht es, SQL-Abfragen an die
Attributdaten des Layers zu richten. Dieser Knopf ist momentan nur bei
PostGIS Layern aktiv. Um den Query Builder auch auf Attributdaten von
OGR-Layern anwenden zu können, müssen Sie die Attributtabelle des
entsprechenden Layers öffnen und dann auf den Knopf \button{Erweitert...}
drücken.

\subsubsection{Darstellung}\label{sec:symbology}
\index{Vektorlayer!Darstellung}

QGIS bietet eine Vielzahl von Funktionen, um die Darstellung von
Vektorobjekten zu kontrollieren. Derzeit sind folgende Legendentypen vorhanden:

\begin{description}
\item[Einfaches Symbol] - eine definierte Darstellung wird allen Objekten des
Layers zugewiesen.\index{Vektorlayer!Darstellung!Einfaches Symbol}
\item[Abgestuftes Symbol] - Objekten eines Layers wird in Abhängigkeit von
einer Attributspalte und einer definierten Anzahl von Klassen eine
Darstellung zugewiesen.\index{Vektorlayer!Darstellung!Abgestuftes Symbol}
\item[Fortlaufende Farbe] - Objekten eines Layers wird anhand von definierten,
numerischen Werten eine fortlaufende Farbe
zugewiesen.\index{Vektorlayer!Darstellung!Fortlaufende Farbe}
\item[Eindeutiger Wert] - eine definierte Darstellung wird jeder Objektklasse
eines Layers anhand einer definierten Attributspalte
zugewiesen.\index{Vektorlayer!Darstellung!Eindeutiger Wert}
\end{description}

\minisec{Stiloption} \label{sec:style_options}
\index{Vektorlayer!Stiloptionen}

Innerhalb des Reiters \tab{Darstellung} können auch Stiloptionen für
Vektorlayer definiert werden. Abhängig vom ausgewählten Legendentyp können
Vektorobjekte auch klassifiziert dargestellt werden. Die folgenden
Stiloptionen stehen zur Verfügung: 

\begin{description}
 \item[Umrandungsstil] - Definition verschiedener Linienarten und auch keine
Linie für Linien und Flächenumrandungen.
 \item[Umrandungsfarbe] - Definition der Farbe für Linien und Umrandunglinien
von Objekten
 \item[Umrandungsbreite] - Definition der Linienbreite für Linien und
Umrandunglinien von Objekten
 \item[Füllfarbe] - Definition der Füllfarbe von Polygonen.
 \item[Füllstil] - Definition des Füllstils von Polygonen. Neben Ausgefüllt
und Nicht gefüllt stehen zahlreiche Schraffurstile und die Möglichkeit eine
eigene Textur in Form eines Bildes zu laden. Wählen Sie dazu
\selectstring{Füllstil}{? Texture}, drücken Sie auf den Knopf \browsebutton
und wählen Sie eine Bilddatei. Aktuell wird als Datenformat \filename{*.jpeg,
*.xpm, und *.png} unterstützt.
\end{description}

Nachdem Sie die Darstellung für den Layer festgelegt haben, können Sie die
Definition als Datei mit der Endung \filename{*.qml} speichern. Dazu drücken
Sie auf den Knopf \button{Stil speichern \ldots} und entsprechend zum Laden
einer Stildefinition auf den Knopf \button{Stil laden \ldots}.

Wenn Sie möchten, dass immer eine bestimmte Stildefinition verwendet wird, wenn
Sie einen Layer laden, klicken Sie auf den Knopf \button{Als Standard
speichern}. Wenn Sie die Darstellung des Layers verändern, aber lieber wieder
zur abgespeicherten Standard-Stildefinition zurückkehren möchten, drücken Sie
den Knopf \button{Standardstil wiederherstellen}.

\minisec{Transparenz}\label{sec:vect_transparency}
\index{Vektorlayer!Transparenz}

Innerhalb des Reiters \tab{Darstellung} kann auch die Transparenz für den
Layer festgelegt werden. Dazu verschieben Sie den Regler
\slider{Transparenz}{0}{20mm} wie in Abbildung~\ref{fig:vector_symbology} zu
sehen. Dies ist sehr nützlich, wenn Sie mehrere Vektorebenen miteinander
überlagern möchten.

\subsubsection{Metadaten}

Der Reiter \tab{Metadaten} enthält allgemeine Informationen zu dem Layer
inklusive Angaben zu Datentyp, Datenquelle, Anzahl Objekte, Ausdehnung und
Editiermöglichkeiten. Sie finden auch Informationen zur räumlichen Ausdehnung
und zum Koordinatenbezugssystem. 

\subsubsection{Beschriftungen}

Im Reiter \tab{Beschriftungen} können Sie Objekte beschriften und die
Anordnung, den Schriftstil, die Ausrichtung, Pufferung und Position der
Beschriftung festlegen.

Als Beispiel stellen wir die Beschriftung der Karte lakes.shp des QGIS
Beispieldatensatzes \filename{qgis\_example\_dataset} vor:

\begin{enumerate}
\item Laden der Shapes \filename{alaska.shp} und \filename{lakes.shp}
\item Zoomen Sie ein wenig in ein Gebiet mit ein paar Seen
\item Aktivieren die den \filename{lakes} Layer
\item Öffnen Sie den \dialog{Layereigenschaften} Dialog
\item Klicken Sie auf den \tab{Beschriftungen} Reiter
\item Aktivieren Sie die Checkbox \checkbox{Zeige Beschriftungen an}
\item Wählen Sie als \selectstring{Beschreibungsfeld}{NAMES} aus der Attributtabelle
\item Geben Sie eine Beschriftungsvorgabe für Seen ein, die keine
Beschriftung im \guilabel{NAMES} Feld enthalten.
\item Wenn eine Spalte Attribute enthält, die über mehrere Zeilen gehen,
aktivieren Sie das Kontrollkästchen \checkbox{Mehrzeilige Beschriftungen?}.
QGIS wird dann die Zeilenumbrüche entsprechend setzen. Dabei handelt es sich
um das \textbf{einfache} Zeichen \textbackslash n, (nicht zwei einzelne
Zeichen, wie ein Backslash \textbackslash gefolgt von dem Zeichen n). 
\item Klicken Sie auf \button{Anwenden}.
\end{enumerate}

Nun werden Beschriftungen angezeigt, aber sie sind wahrscheinlich noch zu
gro"s und schlecht plaziert bezogen auf die Objekte des Layers
\filename{lakes}. Klicken Sie auf den Knopf \button{Schrift}, ändern Sie
Schriftart, -stil und -größe und drücken dann auf \button{OK}. Ändern Sie
entsprechend auf die \button{Farbe} der Beschriftung.

Um die Position der Beschriftungen zu ändern führen Sie folgende Schritte
durch:

\begin{enumerate}
\item Wählen Sie einen der Knöpfe im Platzierungsfeld. In diesem Beispiel
klicken auf den Knopf \radiobuttonon{Rechts}.
\item Klicken Sie auf den Knopf \button{Anwenden}, um die Veränderungen
zu sehen und schließen Sie dann den Dialog.
\end{enumerate}

Nun sehen die Beschriftungen schon besser aus, aber Sie liegen noch ein wenig
zu nah an den Objekten. Dies können Sie ändern, indem Sie auf Position
klicken und einen X- und Y-Offset einstellen. Mit einem X-Offset mit
dem Wert 5 sind die Beschriftungen wahrscheinlich schon besser lesbar.
Ansonsten passen Sie die Werte entsprechend an.

Die letzte Anpassung der Beschriftung ist das Puffern. Dies bedeutet, dass
die Beschriftung mit einem farblichen Puffer hinterlegt werdem, damit man sie
besser lesen kann. Um die Beschriftungen der Karte \filename{lakes.shp} zu
Puffern sind folgende Schritte notwendig:

\begin{enumerate}
\item Klicken Sie auf Puffer und aktivieren Sie das Kontrollkästchen
\checkbox{Beschriftungen freistellen}.
\item Wählen Sie eine Größe und eine Farbe
\item Klicken Sie auf \button{Anwenden}, um das Ergebnis zu betrachten.
\end{enumerate}

Wenn Sie mit dem Resultat noch nicht glücklich sind, verändern Sie die
Einstellungen weiter, bis es Ihnen gefällt und klicken Sie jeweils immer auf
den Knopf \button{Anwenden}, um es anzuschauen. Ein Puffer der Größe 2 gibt
normalerweise recht ansehnliche Ergebnisse. Sie können die Puffergröße
übrigens auch in Karteneinheiten definieren, wenn Ihnen das besser gefällt.

Als weitere Einstellungen im Reiter \tab{Beschriftungen} ist es möglich, das
Erscheinungsbild der Beschriftungen anhand von Angaben aus der
Attributtabelle des Layers zu ändern. Über die Bereiche Datendefinierter
Stil, Datendefinierter Puffer und Datendefinierte Position können Sie alle
notwendigen Parameter anhand von Inhalten aus Attributspalten definieren.

Beachten Sie, dass es im unteren Bereich auch ein kleines
\classname{Vorschau}-Feld gibt, in dem alle Änderungen angezeigt werden.

\subsubsection{Aktionen auf Basis von Attributen}\index{Aktionen}\label{label_actions}

QGIS bietet die Möglichkeit, Aktionen auf Basis von Attributen einer Ebene
durchzuführen. Dies kann für eine Vielzahl von Aktionen genutzt werden, z.B.
um ein Programm mit Abfragen aus der Attributdatenbank zu füttern oder
Ergebnisse einer Attributabfrage für ein statistisches Tool bereitzustellen.

Aktionen auf Basis von Attributen sind sinnvoll, wenn sie mit externen
Applikationen auf Ergebnisse einer oder mehrerer Attributabfragen von
Vektorlayern zugreifen möchten. Ein Beispiel finden Sie im nächsten Abschnitt.

\minisec{Aktionen definieren}\index{Aktionen!Definition}

Attribut-Aktionen werden im Dialog \dialog{Layereigenschaften} im Reiter
\texttt{Aktionen} definiert. Sie brauchen einen Namen für die Aktion und das
externe Programm, das während der Aktion gestartet werden soll. Sie können
ein oder mehrere Attributfelder einbinden. Alle Zeichen, die mit \% und dem
Namen eines Feldes beginnen, werden durch den Wert dieses Feldes ersetzt. Die
Spezialfelder \%\% \index{\%\%} werden ersetzt durch den Wert des Feldes, der
auf Basis von Abfrageergebnissen selektiert wird (vgl.
Abschnitt~\ref{label_usingactions}). Doppelte Anführungsstriche können dazu
benutzt werden, um mehrere Worte als ein Ausdruck gruppiert zu übergeben.
Doppelte Anführungsstriche werden ignoriert, wenn davor ein Backslash steht.

Wenn in der Attributtabelle Spaltenamen auftreten, die eine Teilzeichenfolge
eines anderen Spaltenamen sind (z.B.: \usertext{Spalte1} and
\usertext{Spalte10}) sollten Sie diese Spaltenamen (und \%-Zeichen) in eckige
Klammern schreiben (z.B.: \usertext{[\%Spalte10]}. Dadurch wird verhindert,
dass die \usertext{[\%Spalte10]} Spalte interpretiert wird als
\usertext{[\%Spalte1]} und einer \usertext{0} am Ende. Die eckigen Klammern
werden von QGIS bei der Ausführung entfernt. Wenn Sie möchten, dass um den
Spaltennamen eine eckige Klammer steht, ergänzen Sie den Ausdruck durch zwei
weitere eckige Klammern: \usertext{[[\%Spalte10]]}.

Das Dialogfenster \dialog{Abfrageergebnisse} enthält auch eine {\em
(abgeleitet)} Information in abhängigkeit vom Layertyp. Die hier angezeigten
Werte können auf ähnliche Weise eingebunden werden, wie Spalten aus der
Attributtabelle, indem vor den erfassten Wert ein \usertext{(abgeleitet).}
gestellt wird. Zum Beispiel: Ein Punktlayer zeigt Felder mit der
\usertext{X}- und \usertext{Y}-Koordinate. Diese können in der Aktion genutzt
werden mit dem Eintrag \usertext{\%(abgeleitet).X} and
\usertext{\%(abgeleitet).Y}. Diese abgeleiteten Aktionen können nur über den
Dialog \dialog{Abfrageergebnisse} angesprochen werden, nicht über
die \dialog{Attributtable}. 

Zur besseren Erläuterung zwei Beispiele:\index{Aktionen!Beispiele}

\begin{verbatim}
    konqueror http://www.google.com/search?q=\%nam
    konqueror http://www.google.com/search?q=\%\%
\end{verbatim}

Im ersten Beispiel wird an den Webbrowser Konqueror eine Google URL
übergeben mit dem Wert eines Feldes \usertext{nam} eines Vektorlayers.
Beachten Sie, dass sich das bei einer Aktion aufgerufene Programm im Pfad
befinden muss. Ansonsten müssen Sie den gesamten Pfad angeben:

\begin{verbatim}
/opt/kde3/bin/konqueror http://www.google.com/search?q=\%nam
\end{verbatim}

Das zweite Beispiel nutzt den Ausdruck \%\%, welcher unabhängig ist von einem
speziellen Feld. Beim Ausführen des Befehls wird der Ausdruck \%\% durch den
Wert des jeweils selektierten Feldes ersetzt.

\minisec{Aktionen anwenden}\index{Aktionen!anwenden}\label{label_usingactions}

Aktionen können entweder über den Dialog \dialog{Abfrageergebnisse} oder die
geöffnete \dialog{Attributtabelle} gestartet werden. Beide Dialoge sind per
Maus erreichbar über \toolbtntwo{mActionOpenTable}{Abfrageergebnisse} oder
\toolbtntwo{mActionOpenTable}{Attributtabelle öffnen}.) Um eine Aktion
aufzurufen, klicken Sie mit der rechten Maustaste auf einen Eintrag in der
Attributtabelle und wählen die gewünschte Aktion aus der Liste aus.

Wenn eine Aktion mit dem Ausdruck \%\% gestartet werden soll, klicken Sie mit
der rechten Maustaste auf einen Eintrag in der \dialog{Attributtabelle} oder im
Dialog \dialog{Abfrageergebnisse} und wählen die gewünschte Aktion aus der
Liste aus.

In einem weiteren Beispiel soll gezeigt werden, wie Attributwerte aus eines
Vektorlayers abgefragt und in eine Textdatei mit Hilfe der Bash und des
\usertext{echo} Kommandos geschrieben werden (funktioniert also nur unter
\nix und evtl. \osx). Der Abfragelayer enthält die Felder Art
\usertext{taxon\_name}, Latitude \usertext{lat} und Longitude
\usertext{long}. Um eine räumliche Abfrage eines Ortes zu erstellen und die
Werte der drei Felder in eine Textdatei zu schreiben, wird folgende Aktion
erstellt:

\begin{verbatim}
  bash -c "echo \"%taxon_name %lat %long\" >> /tmp/species_localities.txt"
\end{verbatim} 

Nachdem ein paar Orte auf dem Bildschirm ausgewählt wurden (diese erscheinen
gelb hinterlegt), starten wir die Aktion mit der rechten Maustaste über den
Dialog \dialog{Abfrageergebnisse} und können danach in der Textdatei die
Ergebnisse ansehen:

\begin{verbatim}
  Acacia mearnsii -34.0800000000 150.0800000000
  Acacia mearnsii -34.9000000000 150.1200000000
  Acacia mearnsii -35.2200000000 149.9300000000
  Acacia mearnsii -32.2700000000 150.4100000000
\end{verbatim} 

Als Übung erstellen wir eine Aktion, bei der Google nach dem Namen des
jeweiligen Sees in dem Layer \filename{lakes} sucht. Als erstes geben wir die
URL ein, die wir brauchen, um auf Basis eines Schlüsselwortes zu suchen. Das
ist einfach, in dem wir einfach auf der Google Webseite nach einem Begriff
suchen und die URL dann kopieren. Das Format, das wir brauchen ist:
\url{http://google.com/search?q=qgis}, wobei \usertext{qgis} das
Schlüsselwort ist, nach dem wir suchen wollen. Nun kann es weiter gehen:

\begin{itemize}
\item Laden Sie den Layer \filename{lakes.shp}
\item Öffnen Sie die \dialog{Layereigenschaften} Dialog, indem Sie doppelt
auf den Layernamen \filename{lakes} in der Legende klicken oder wählen Sie
das Menü \dropmenuopt{Eigenschaften} mit der rechten Maustaste.
\item Klicken Sie auf den Reiter \tab{Aktionen}
\item Geben Sie einen Namen für die Aktion ein, z.B: \usertext{Google Search}
\item Für diese Aktion ist es notwendig, den Namen des externen Programms
anzugeben, mit  dem wir das Ergebnis anzeigen lassen wollen. In unserem Fall
wählen wir Firefox als Webbrowser.
\item Hinter dem Namen des Programms geben wir die URL ein, die wir für die
Internetsuche benutzen wollen, aber ohne das Schlüsselwort:
\url{http://google.com/search?q=}
\item Der Text im Feld \guilabel{Aktion} sollte nun folgendermaßen aussehen:\\
\usertext{firefox http://google.com/search?q=}
\item Klicken Sie nun auf die Drop-Down Box mit den Spaltennamen der
Attributtabelle des Layers \filename{lakes}. Der Knopf ist gleich links neben
dem Knopf \usertext{Attribut einfügen}.
\item Wählen Sie die Attributspalte \selectstring{}{NAMES} und klicken auf
\button{Attribut einfügen}.
\item Die Aktion sieht nun so aus:\\ \usertext{firefox
  http://google.com/search?q=\%NAMES}
\item Abschließend drücken Sie auf \button{Aktion hinzufügen}.
\end{itemize}

Damit ist die Aktion fertig für den Einsatz. Der gesamte Befehl der Aktion
sollte folgendermaßen aussehen:

\begin{center}
\usertext{firefox \url{http://google.com/search?q=\%NAMES}}
\end{center}

Wir können die Aktion nun benutzen. Schließen Sie den \dialog{Eigenschaften}
Dialog und zoomen Sie in eine Bereich ihrer Wahl mit ein paar Seen. Stellen Sie
sicher, dass der Layer \filename{lakes} in der Legende aktiviert ist. Nun
identifizieren Sie einen See. In der Ergebnisanzeige sollte nun die Aktion
sichtbar sein:

\begin{figure}[H]
   \begin{center}
   \caption{Auswählen eines Objektes mit einer Aktion \nixcaption}\label{fig:identify_action}\smallskip
   \includegraphics[clip=true, width=6cm]{action_identifyaction} 
\end{center}  
\end{figure}

Wenn wir nun auf das Wort \usertext{action} klicken, öffnet sich der
Webbrowser Firefox und zeigt uns das Ergebnis der Internetrecherche z.B. nach
dem See Tustumena an \url{http://www.google.com/search?q=Tustumena}. Es ist
übrigens auch möglich, weitere Attributspalten zu ergänzen. Dazu fügen Sie
einfach ein ``+''-Zeichen an das Ende der Aktion, wählen eine weitere
Attributspalte und klicken wieder auf den Knopf \texttt{Attribut einfügen}.
In unserem Datensatz ist leider keine weitere sinnvolle Attributspalte
vorhanden, nach der man im Internet suchen könnte.

Sie können auch mehrere Aktionen für einen Layer definieren. Sie alle werden
dann bei der Abfrage von Objekten im Dialog \dialog{Abfrageergebnisse}
angezeigt und können ausgewählt und benutzt werden. Sie können auch eine
Aktion starten, in dem Sie in der Attributtabelle in eine Zeile gehen und mit
der rechten Maustaste eine Aktion für genau diesen einen Eintrag ausführen.

Sie sehen, man kann sich eine Vielzahl interessanter Aktionen ausdenken. Wenn
Sie z.B. einen Punktlayer mit einzelnen Punkten haben, an denen Photos
geschossen wurden, dann können Sie eine Aktion erstellen, über die Sie dann
das entsprechende Photo anzeigen lassen können, wenn Sie auf den Punkt in der
Karte klicken. Man kann auch zu bestimmten Attributen webbasierte
Information ablegen (z.B. in einer HTML-Datei) und diese dann
über eine Aktion anzeigen lassen, etwa so wie in dem Google Beispiel.

\subsubsection{Attribute}\index{Attribute}\label{label_attributes}

Innerhalb des Reiters \tab{Attribute} kann die Eingabe von Attributwerten für
den Layer beinflusst werden. Aktuell können nur PostGIS-Layer editiert
werden, da diese Funktion noch nicht durch GDAL/OGR unterstützt wird. Wenn
Sie auf den Knopf \toolbtntwo{mActionToggleEditing}{Bearbeitungsmodus
umschalten} klicken, können Sie für PostGIS Daten auch die Knöpfe
\toolbtntwo{mActionNewAttribute}{Neue Attributspalte} und
\toolbtntwo{mActionDeleteAttribute}{Lösche Attributspalte} nutzen. Das
Hinzufügen einer neuen Attributspalte wird dabei nur unterstützt, wenn die
auf ihrem Rechner installierte GDAL Version >= 1.6 ist,  

\minisec{Feld zur Definition eines Bearbeitungselements für eine Attributspalte}

\begin{figure}[H]
   \begin{center}
   \caption{Dialog, um ein Bearbeitungselement für eine Attributspalte
auszuwählen \nixcaption}\label{fig:editwidget}\smallskip
   \includegraphics[clip=true, width=14cm]{editwidgetsdialog}
\end{center}
\end{figure}

Innerhalb des des Reiters \tab{Attribute} gibt es auch ein Feld
\usertext{Bearbeitungselement}. Dieses Feld kann verwendet werden, um Werte
oder Wertebereiche zu definieren, die während des Editierens einer bestimmten
Attributspalte erlaubt sind. Auf Grundlage der Einträge werden
unterschiedliche Eingabefenster während des Editierens erstellt:

\begin{itemize}
\item Eingabezeile: Eingabefeld für einfachen Text oder numerische Attribute.
Dies ist der Standard. 
\item Klassifikation: Auswahlliste mit den Attributwerten, die im Reiter
\tab{Darstellung} als Legendentyp 'Eindeutiger Wert' für die Klassifikation
benutzt werden.
\item Bereich: Erlaubt die Eingabe von Werten eines gegebenen Bereichs sowie
der Schrittweite. Das Bearbeitungselement kann dabei entweder als Schieber
oder als Drehfeld dargestellt werden.
\item Eindeutige Werte: Der Benutzer kann einen Wert wählen, der bereits in
dem Attribut verwendet wird. Wenn \checkbox{Änderbar} ausgewählt wird, wird
eine Eingabezeile mit Autovervollständigung angezeigt. Anderseits wird eine
Auswahlliste dargestellt. 
\item Dateiname: Ermöglicht die Dateiauswahl durch einen Auswahldialog.
\item Wertabbildung: Es wird eine Auswahlliste mit vordefinierten Elementen
angezeigt. Die Eingabe im Feld Wert entspricht dabei dem Attribut, das
gespeichert wird. Der Eintrag im Feld Beschreibung wird in der Auswahlliste
angezeigt.
\item Aufzählung: Hier wird eine Auswahlliste mit Werten angezeigt, die als
Spaltentyp benutzt werden können. Der Datenprovider muss diese Funktion
unterstützen. Dies ist aktuell nur für Postgres als Datenprovider der Fall.
\item Unveränderbar: In diesem Fall ist das Attribut unveränderlich. Der
Benutzer kann es also nicht verändern. 
\end{itemize}

\subsubsection{Diagram Overlay}\label{sec:diagram}
\index{Vektorlayer!Diagram Overlay}

Der Reiter \tab{Diagram Overlay} ermöglicht es, ein Diagramm als Grafik über
einen Vektorlayer zu visualisieren. Um diese Funktion zu aktivieren, müssen
Sie zuerst den Plugin Manager öffnen und das 'Diagram Overlay' Plugin laden.
Danach erscheint ein zusätzlicher Reiter im Dialog
\dialog{Layereigenschaften}, über den die Eigenschaften des Diagramms
festlegegt werden können (siehe Abbildung~\ref{fig:diagramtab}). 

\begin{figure}[ht]
   \begin{center}
   \caption{Vektor Layereigenschaften mit Diagram Overlay Reiter \nixcaption}\label{fig:diagramtab}\smallskip
   \includegraphics[clip=true, width=13cm]{diagram_tab}
\end{center}
\end{figure}

Die aktuelle Implementierung des Moduls ermöglicht es, Torten- und
Balkendiagramme auf Basis von Attributspalten zu erstellen und die Größe der
Diagramme entsprechend einer Klassifikation linear zu skalieren. Als Beispiel
sollen auf dem Hintergrund des Layers \filename{alaska.shp} Balkendiagramme
mit Klimawerten gezeichnet werden. Die Werte dafür entnehmen wir der
Attributtabelle des Vektorlayers \filename{climate.shp}. Beide Layer sind
Teil des QGIS Beispieldatensatzes (siehe Kapitel~\ref{label_sampledata}).   

\begin{enumerate}
\item Als erstes klicken Sie auf das Icon
\toolbtntwo{mActionAddOgrLayer}{Vektorlayer hinzufügen}, dann browsen Sie zum QGIS
Beispieldatensatz und laden die beiden Vektorlayer \filename{alaska.shp}
und \filename{climate.shp}.
\item Doppelklicken Sie auf den \filename{climate} Layer in der
Kartenlegende, um den Dialog \dialog{Layereigenschaften} zu starten.
\item Klicken Sie auf den Reiter \tab{Diagram Overlay} und wählen Sie
\button{Balkendiagramm} als Diagrammtyp.
\item Im Diagramm wollen wir die Werte von drei Attributspalten 
\filename{T\_F\_JAN, T\_F\_JAN} und \filename{T\_F\_MEAN} anzeigen. Als
erstes selektieren wir \filename{T\_F\_JAN} als Attribute und klicken auf
\button{Attribute hinzufügen}, dann \filename{T\_F\_JUL} und schließlich
\filename{T\_F\_MEAN}.
\item Zum linearen Skalieren der Diagrammgröße definieren wir \filename{T\_F\_JUL}
als Klassifikationsattribut.
\item Nun klicken wir auf \button{Maximalwert suchen}, wählen einen Wert für
die Größe und die Größeneinheit und klicken auf \button{Anwenden}, um die
Diagramme in QGIS anzuzeigen.
\item Sie können nun die Größe weiter anpassen oder die Farben der einzelnen
Diagrammbalken ändern, indem Sie auf die Farbe des Attributs doppelklicken
und dann eine entsprechende Farbe auswählen.
Abbildung~\ref{fig:climatediagram} gibt einen ersten Eindruck.
\item Abschließend klicken Sie \button{Ok}.
\end{enumerate}

\begin{figure}[ht]
   \begin{center}
   \caption{Balkendiagramm mit Temperaturdaten vor dem Hintergrund des Alaska Layers \nixcaption}\label{fig:climatediagram}\smallskip
   \includegraphics[clip=true, width=13cm]{climate_diagram}
\end{center}
\end{figure}

\subsection{Editierfunktionen}\index{Editierfunktionen}

QGIS bietet einfache Editierfunktionen für Vektordaten. Bevor Sie
weiterlesen sollten Sie sich bewusst sein, dass derzeit nicht alle
Funktionen ausgereift sind. Bevor Sie also anfangen, Vektorlayer zu
editieren, sollten Sie die Daten sichern.

\textbf{Bemerkung}: Die Vorgehensweise zum Editieren von GRASS Vektorlayern
ist anders und wird in Kapitel~\ref{grass_digitising} beschrieben.

\begin{Tip}[h]\caption{\textsc{Zeitgleiches Editieren}}
\qgistip{Diese QGIS Version kontrolliert nicht, ob zwei Personen gleichzeitig
an einem Vektorlayer arbeiten. Die zuletzt schreibende Person gewinnt.
}
\end{Tip}

\subsubsection{Einstellen der Fangtoleranz und des Suchradius}

bevor wir damit beginnen können, Vektorgeometrien zu editieren, ist es sehr
wichtig die Fangtoleranz und den Suchradius für Stützpunkte (Vertices)
festzulegen, um optimale Ergebnisse zu erzielen. 

\minisec{Fangtoleranz}

Die Fangtoleranz ist der Abstand, den QGIS verwendet, um beim digitalisieren den
nächstgelegenen Stützpunkt bzw. das nächstgelegene Liniensegment zu suchen
und sich damit zu verbinden. Die Fangtoleranz beeinflusst alle Werkzeuge, die
mit einer Fangtoleranz arbeiten. Wenn Sie sich nicht innerhalb der definierten
Fangtoleranz befinden, wird der Stützpunkt dort gesetzt, wo sich der
Mauszeiger gerade befindet, wenn Sie die Maustaste drücken, ohne darauf zu
achten, dass Linienzüge und Flächen geschlossen sind. Es gibt zwei
Möglichkeiten, die Fangtoleranz einzustellen:

\begin{enumerate}
\item Ein allgemeiner, projektweiter Fangmodus kann im Menü
\mainmenuopt{Einstellungen} > \dropmenuopttwo{mActionOptions}{Optionen}
eingestellt werden. (Unter Mac klicken Sie \mainmenuopt{QGIS} >
\dropmenuopttwo{mActionOptions}{Optionen}). Im Reiter \tab{Digitalisierung}
können Sie auswählen, ob sich der Fangmodus auf Stützpunkte, Segmente oder
auf Stützpunkte und Segmente beziehen soll. Sie können auch in Layereinheiten
definieren, ob die Fangtoleranz oder der Suchradius in Karteneinheiten oder
Pixeln berechnet werden soll. Die Einstellung Pixel hat dabei den Vorteil, dass die
Fangtoleranz nicht verändert werden muss, wenn der Maßstab geändert wird, Sie
also hinein- oder herauszoomen. Wenn Sie mit den Alaska-Daten arbeiten
bezieht sich die Layereinheit auf \usertext{feet} und ein Wert von etwa 300ft
bei einem Maßstab 1:10 000 sollte für die Übungen gut funktionieren.
\item Eine Layer-basierter Fangmodus kann festgelegt werden im Menü
\mainmenuopt{Einstellungen} >
\dropmenuopttwo{mActionOptions}{Projekteinstellungen}. Im Reiter
\tab{Allgemein}, Sektion \classname{Digitalisierung} können Sie auf den Knopf
\button{Snapping Optionen} drücken und für jeden in QGIS geladenen
Vektorlayer einen Fangmodus und Fangtoleranz einstellen, aktivieren oder
deaktivieren (vgl. Abbildung~\ref{fig:snappingoptions}). Diese layerbasierte
Einstellung überschreibt die globalen Einstellungen, die Sie im Reiter
\tab{Digitalisierung} definiert haben. Wenn Sie also einen Layer editieren
und auf die Geometrien eines anderen Layers snappen wollen, dann aktivieren
Sie die Einrastoptionen nur für diesen Layer und setzen Sie die globale
Fangtoleranz auf einen kleineren Wert. Die Fangtoleranz wird nur auf
ausgewählte Layer angewendet, unabhängig von der globalen Fangtoleranz.
Vergewissern Sie sich daher, dass die Layer, auf die Sie snappen wollen, auch
im Dialog Einrastoptionen ausgewählt sind.  
\end{enumerate}

\begin{figure}[H]
   \begin{center}
   \caption{Fangmodus und -toleranz der Vektorlayer einstellen \nixcaption}\label{fig:snappingoptions}\smallskip
   \includegraphics[clip=true, width=14cm]{editProjectSnapping} 
\end{center}  
\end{figure}

\minisec{Suchradius}

Der Suchradius ist die Distanz, mit der QGIS die nächstgelegenen Stützpunkte
zum Mauszeiger findet. Wenn der Mauszeiger sich nicht innerhalb des Suchradius
befindet, wird kein Stützpunkt gefunden, solange Sie nicht wirklich
direkt auf einen treffen, um diesen z.B. zu verschieben, zu löschen oder
anderweitig zu editieren. Beide Parameter, Fangtoleranz und Suchradius sind
in Layereinheiten zu definieren und es kann gut sein, dass Sie für ihre
Ansprüche ein wenig mit den Werten experimentieren müssen. Dies gilt
besonders, wenn es eine große Anzahl von Stützpunkten auf kleiner Fläche
sind. 

Der Suchradius zum Editieren von Stützpunkten kann eingestellt werden im
Reiter \tab{Digitalisierung} des Menüs \mainmenuopt{Einstellungen} >
\dropmenuopttwo{mActionOptions}{Optionen}. Derselbe Ort, an dem auch die
Fangtoleranz und der Fangmodus definiert werden.  

\subsubsection{Zoomen und Karte verschieben}

Bevor Sie einen Layer editieren, sollten Sie in den Bereich hineinzoomen, den
Sie bearbeiten wollen. Dadurch vermeiden Sie lange Wartezeiten, bis alle
Stützpunkte des Layers visualisiert werden.

Die Werkzeuge \toolbtntwo{mActionPan}{Karte verschieben} und
\toolbtntwo{mActionZoomIn}{Hineinzoomen}/\toolbtntwo{mActionZoomOut}{Herauszoomen},
können nicht nur über diese Icons verwendet werden. Die Navigation innerhalb
einer Karte kann auch mit dem Mausrad, den Bildtasten, der Leertaste und den
Pfeiltasten durchgeführt werden.

\minisec{Mit dem Mausrad im Kartenfenster zoomen und verschieben}

Während des Digitalisierens können Sie auf das Mausrad drücken und dann
gleichzeitig das
Kartenfenster verschieben. Oder Sie können das Mausrad drehen, um im
Kartenfenster hinein- und hinauszuzoomen. Zum Zoomen platzieren Sie den
Mauszeiger auf einen Kartenbereich und drehen dann das Mausrad nach vorne
(weg von Ihnen) zum Hineinzoomen oder nach hinten (näher an Sie heran) zum
Hinauszoomen bewegen. Die Position des Mauszeigers ist dabei das Zentrum des
Zoomvorgangs. Sie können das Zoomberhalten des Mausrades in dem Reiter
\tab{Kartenwerkzeuge} des Menüs \mainmenuopt{Einstellungen} >
\dropmenuopt{Optionen} verändern.

\minisec{Den Layer mit den Pfeiltasten im Kartenfenster verschieben}

Das Verschieben des Layers im Kartenfenster während des Digitalisierens ist
mit den Pfeiltasten möglich. Plazieren Sie den Mauszeiger in das
Kartenfenster und drücken Sie rechte Pfeiltaste, um den Layer nach Osten zu
verschieben, die linke Pfeiltaste für Westen, die Pfeiltaste nach unten für
Süden und die Pfeiltaste nach oben für das Verschieben nach Norden.

Sie können auch die gedrückte Leer-Taste dazu verwenden, um den Layer im
Kartenfenster zu verschieben, wenn Sie mit dem Mauszeiger darübergehen. Die
Leer-Taste übernimmt dabei die Aufgabe der linken Maustaste. Zum Hinein- und
Herauszoomen können Sie übrigens auch die \keystroke{BildHoch} und
\keystroke{BildRunter} Tasten verwenden, so wie Sie es ansonsten mit dem
Mausrad tun können.

All diese Funktionen ermöglichen es Ihnen, in einem Layer zu zoomen oder
diesen zu verschieben, ohne das Sie das Digitalisieren unterbrechen müssen.

\subsubsection{Topologisches Editieren}

Abgesehen von der Einstellung des Layer-basierten Fangmodus können im Reiter
\tab{Allgemein} im Menü \mainmenuopt{Einstellungen} >
\dropmenuopttwo{mActionOptions}{Projekteigenschaften} auch topologische
Funktionalitäten eingestellt werden. In der Sektion
\classname{Digitalisierung} können Sie \checkbox{Ermögliche topologisches
Editieren} und/oder \checkbox{Vermeide Überschneidung neuer Polygone} aktivieren.

\minisec{Ermögliche topologisches Editieren}

Das Kontrollkästchen \checkbox{Ermögliche topologisches Editieren}
unterstützt das Editieren und Kontrollieren gemeinsamer Grenzlinien in
Polygon-Layern. QGIS 'erkennt' gemeinsame Flächengrenzen und beim Verschieben
des Stützpunktes einer Fläche werden dann automatisch die anderen
Flächengrenzen angepasst und mit verschoben.

\minisec{Vermeide Überschneidung neuer Polygone}

Als zweite topologische Funktion gibt es das Kontrollkästchen
\checkbox{Vermeide Überschneidung neuer Polygone}. Damit wird es vereinfacht,
angrenzende Polygone zu digitalisieren. Wenn bereits ein Polygon digitalisiert
wurde, kann das zweite auch mit einer Überlagerung des ersten Polygons
erstellt werden und QGIS schneidet dann die Überlagerungen weg, so dass die
Flächen exakt aneinander liegen. Der Vorteil ist, dass nicht alle Stützpunkte
einer gemeinsamen Grenzlinie digitalisiert werden müssen.

\subsubsection{Einen vorhandenen Layer editieren}
\index{Vektorlayer!Editierfunktionen}
\index{Editierfunktionen!existierender Layer}
\label{sec:edit_existing_layer}

Standardmäßig lädt QGIS Vektorlayer im 'read-only' Modus, um ungewolltes
Editieren zu verhindern. Ansonsten können aber alle Ebenen editiert werden,
wenn es der Datenanbieter erlaubt bzw. die Rechte entsprechend gesetzt sind.
Das Editieren von Vektorlayern ist am vielseitigsten bei PostgreSQL/PostGIS
Daten. 

Das Editieren von Vektorlayern in QGIS ist unterteilt in Digitalisierung und
erweiterte Digitalisierung, siehe Kapitel \ref{sec:advanced_edit}. Beide
Werkzeugleisten können über das Menü \mainmenuopt{Einstellungen} >
\dropmenuopt{Werkzeugkästen} aktiviert und deaktiviert werden. Mit der
Werkzeugleiste Digitalisierung können folgende Funktionen ausgeführt werden:

\begin{table}[h]\index{Vektorlayer!Grundlegende Editierwerkzeuge}
\centering
\caption{Funktionen der Werkzeugleiste Digitalisierung}\label{tab:vector_editing}\medskip
\small
\begin{tabular}{|l|p{6.9cm}|l|p{6.9cm}|}
\hline \textbf{Icon} & \textbf{Funktion} & \textbf{Icon} & \textbf{Funktion} \\
\hline \includegraphics[width=0.7cm]{mActionToggleEditing}
   & Bearbeitungsstatus umschalten
   & \includegraphics[width=0.7cm]{mActionCapturePoint}
   & Objekte Digitalisieren: Punkt hinzufügen \\
\hline \includegraphics[width=0.7cm]{mActionCaptureLine}
   & Objekte Digitalisieren: Linie hinzufügen
   & \includegraphics[width=0.7cm]{mActionCapturePolygon}
   & Objekte Digitalisieren: Polygon hinzufügen \\
\hline \includegraphics[width=0.7cm]{mActionMoveFeature}
   & Objekt verschieben
   & \includegraphics[width=0.7cm]{mActionMoveVertex}
   & Stützpunkt verschieben \\
\hline \includegraphics[width=0.7cm]{mActionAddVertex}
   & Stützpunkt hinzufügen
   & \includegraphics[width=0.7cm]{mActionDeleteVertex}
   & Stützpunkt löschen \\
\hline \includegraphics[width=0.7cm]{mActionDeleteSelected}
   & Ausgewähltes löschen
   & \includegraphics[width=0.7cm]{mActionEditCut}
   & Ausgewählte Objekte ausschneiden \\
\hline \includegraphics[width=0.7cm]{mActionEditCopy}
   & Objekte kopieren
   & \includegraphics[width=0.7cm]{mActionEditPaste} 
   & Objekte einfügen \\
\hline
\end{tabular}
\end{table}

\begin{Tip}[h]\caption{\textsc{Daten-Integrität}}
\qgistip{Bitte beachten Sie, Daten vor und während des Editierens regelmäßig
zu sichern, um bei Fehlern keine unnötigen Verluste zu erleiden. Auch wenn
QGIS mittlerweile sehr stabil ist, was die Daten-Integrität betrifft, sollten
Sie sich nicht darauf verlassen
}
\end{Tip}

\begin{Tip}[ht]\caption{\textsc{Regelmäßiges Sichern der Daten}}
\qgistip{Bitte schließen Sie die Option
\toolbtntwo{mActionToggleEditing}{Bearbeitungsmodus ändern} regelmäßig.
Dadurch werden alle bis dahin gemachten Änderungen gespeichert und es ist
sichergestellt, dass die Änderungen auch akzeptiert werden.
}
\end{Tip}

\begin{Tip}[h]\caption{\textsc{Zoomen zum letzten Editierstand}}
\qgistip{Vor dem Editieren eines Vektorlayers sollten Sie in den Bereich
zoomen, den Sie verändern möchten. Dadurch wird die zeitaufwendige
Darstellung sämtlicher Knotenpunkte des Vektorlayers im Kartenfenster
verhindert.
}
\end{Tip}

\begin{Tip}[h]\caption{\textsc{Stützpunktsymbol ändern}}
\qgistip{QGIS ermöglicht es, das Symbol für die Stützpunkte zu verändern. Sie
können wählen zwischen einem Kreuz und einem halbtransparenten Kreis. Zum
Ändern gehen Sie in das Menü \mainmenuopt{Einstellungen} >
\dropmenuopttwo{mActionOptions}{Optionen} und wählen im Reiter
\tab{Digitalisierung} das entsprechende Symbol. 
}
\end{Tip}

Vor jedem Editieren eines Vektorlayers muss dieser in der Legende ausgewählt
werden und die Option
\dropmenuopttwo{mActionToggleEditing}{Bearbeitungsstatus umschalten} in der
Werkzeugleiste aktiviert sein. Alternativ können Sie dazu auch mit der
rechten Maustaste auf den Namen des Layers in der Legende klicken und die
Option im Kontextmenü auswählen. Sobald der Layer im Bearbeitungsstatus ist,
erscheinen die Stützpunkte als das von Ihnen gewählte Stützpunktsymbol und
zusätzlich werden die Digitalisier-Tools in der Werkzeugleiste
aktiv.\index{Editierfunktionen!Icons}

\minisec{Objekte digitalisieren}
\index{Vektorlayer!Digitalisieren!Objekt}

Bevor Sie mit dem Digitalisieren von Objekten beginnen, benutzen Sie die Tools
\toolbtntwo{mActionPan}{Karte verschieben} und 
\toolbtntwo{mActionZoomIn}{Hineinzoomen}/\toolbtntwo{mActionZoomOut}{Hinauszoomen},
um sich dem Bereich zu nähern, den Sie verändern möchten.

Danach können Sie mit den Icons \toolbtntwo{mActionCapturePoint}{Punkt
digitalisieren}, \toolbtntwo{mActionCaptureLine}{Linie digitalisieren} oder
\toolbtntwo{mActionCapturePolygon}{Polygon digitalisieren} in der
Werkzeugleiste den Mauszeiger in den Digitalisiermodus bringen.

Für jedes Objekt wird erst die Geometrie digitalisiert und dann das Attribut
hinzugefügt. Um eine Geometrie zu digitalisieren, klicken Sie mit der linken
Maustaste an eine gewünschte Stelle im Kartenfenster, um den ersten Punkt zu
erstellen.

Für Linien und Polygone klicken Sie für jeden weiteren Knotenpunkt wieder die
linke Maustaste. Zum Beenden klicken Sie irgendwo im Kartenfenster auf die
rechte Maustaste, um anzuzeigen, dass die Geometrie ihres Objektes fertig
gestellt ist. Dadurch wird das Attributfenster geöffnet und ermöglicht die
Attribute für das neue Objekt einzutragen. In Abbildung
\ref{fig:vector_digitising} ist ein Beispiel für einen fiktiven Fluss in
Alaska gezeigt.

\begin{figure}[ht]
   \begin{center}
   \caption{Eingabe von Attributen nach dem Digitalisieren eines neuen Objektes \nixcaption}\label{fig:vector_digitising}\smallskip
   \includegraphics[clip=true, width=8cm]{editDigitizing}
\end{center}  
\end{figure}

\begin{Tip}[h]\caption{\textsc{Datentyp der Attribute}}
\qgistip{QGIS kontrolliert beim Editieren von Shapes, ob die eingetragenen
Werte dem Datentyp der Attributspalte entspricht (z.B.: Zahl oder Text).
Ansonsten ist es nicht möglich, im Dialog \dialog{Attributwert eingeben}
eine Zahl in eine Textspalte einzutragen, oder umgekehrt. Falls es dennoch
notwendig sein sollte, können Sie es nachträglich im Fenster der
\dialog{Attributtabelle} ändern.
}
\end{Tip}

\minisec{Objekte verschieben}
\index{Vektorlayer!verschieben!Objekt}

Mit dem Werkzeug \toolbtntwo{mActionMoveFeature}{Objekte verschieben} können Sie
komplette Objekte verschieben.

\minisec{Stützpunkte eines Objektes hinzufügen, verschieben und löschen}
\index{Vektorlayer!Editierfunktionen!Stützpunkt}

Für PostgreSQL/PostGIS- und Shape-Layer können die Stützpunkte von Objekten
editiert werden. Stützpunkte können direkt editiert werden, ohne vorher
auszuwählen, welches Objekt gemeint ist. In einigen Fällen teilen sich
Objekte dieselben Knotenpunkte. Folgende Regeln kommen daher zum Einsatz:

\begin{itemize}
\item \textbf{Linien}    - Die zum Mauszeiger nächste Linie wird als 
			  Zielobjekt
                          benutzt. Beim Verschieben oder Löschen eines
                          Stützpunktes wird der zum Mauszeiger nächste
			  Stützpunkt auf einer Linie editiert.

\item \textbf{Polygone} - Wenn der Mauszeiger sich innerhalb eines Polygons
                          befindet, ist dies das Zielobjekt, ansonsten wird
			  das
                          zum Mauszeiger nächstliegende Objekt benutzt. Beim
                          Verschieben oder Löschen eines Stützpunktes
                          wird der zum Mauszeiger nächste Stützpunkt auf dem
			  Polygon editiert.
\end{itemize}

Sie sollten den Suchradius beim Digitalisieren über die Menüleiste unter
\mainmenuopt{Einstellungen} > \dropmenuopttwo{mActionOptions}{Optionen} >
\tab{Digitalisierung} größer 0 einstellen. Ansonsten ist QGIS nicht in der
Lage, ein Objekt auszuwählen.

\minisec{Stützpunkte hinzufügen}
\index{Vektorlayer!hinzufügen!Stützpunkt}

Sie können einen Stützpunkt zu einem Objekt hinzufügen, indem Sie das Icon
\toolbtntwo{mActionAddVertex}{Stützpunkt hinzufügen} aus der Werkzeugleiste
auswählen. Beachten Sie, es macht wenig Sinn, weitere Stützpunkte zu einem
Punktobjekt zu ergänzen.

In dieser QGIS Version können Knotenpunkte nur zu \texttt{bereits
vorhandenen} Liniensegmenten einer Linie hinzugefügt werden. Wenn Sie eine
Linie über ihr Ende hinaus verlängern möchten, müssen Sie erst den letzten
Stützpunkt verschieben und können dann weitere Stützpunkte ergänzen.

\minisec{Stützpunkte verschieben}
\index{Vektorlayer!verschieben!Stützpunkt}

Sie können Stützpunkte mit dem Icon \toolbtntwo{mActionMoveVertex}{Stützpunkt
verschieben} aus der Werkzeugleiste verschieben.

\minisec{Stützpunkte löschen}
\index{Vektorlayer!löschen!Stützpunkt}

Sie können einen Stützpunkt aus einem Objekt löschen, indem Sie das Icon
\toolbtntwo{mActionDeleteVertex}{Stützpunkt löschen} aus der Werkzeugleiste
auswählen. Beachten Sie, es macht keinen Sinn, einen Stützpunkt aus einem
Punktobjekt zu löschen. Löschen Sie in dem Fall das Objekt. Ebenso ist eine
Linie, die aus einem Stützpunkt besteht oder ein Polygon, das aus zwei
Stützpunkten besteht sinnlos und führt zu fehlerhaften Ergebnissen.

\textbf{Warnung:} Ein Stützpunkt ist zum Löschen ausgewählt, sobald Sie mit
bei entsprechend gewählten Suchradius der Maus in die Nähe des Stützpunktes
klicken. Um dies rückgänggig zu machen, müssen Sie den Editiermodus verlassen
und bei der Nachfrage, ob die Veränderungen gespeichert werden sollen
\button{Nein} auswählen. Dadurch werden aber natürlich auch alle anderen bis
dahin vorgenommenen Änderungen verworfen.

\minisec{Ausgewählte Objekte löschen}
\index{Vektorlayer!löschen!Objekte}

Wenn Sie ein ganzes Polygon löschen möchten, selektieren Sie es erst mit dem
\toolbtntwo{mActionSelect}{Wähle Objekt aus} Werkzeug. Sie können dabei auch
mehrere Objekte gleichzeitig auswählen. Wenn Sie die Objekte ausgewählt
haben, klicken Sie auf das Icon
\toolbtntwo{mActionDeleteSelected}{Ausgewähltes löschen}. Es gibt keine
Funktion, um das Löschen wieder rückgängig zu machen. Aber bedenken Sie, dass
die Änderungen erst dann wirksam werden, nachdem Sie den Bearbeitungsstatus
verändert und die Veränderungen gespeichert haben. Wenn Sie also einen Fehler
gemacht haben, können Sie einfach das Speichern abbrechen.

Das Werkzeug \toolbtntwo{mActionEditCut}{Ausgewählte Objekte ausschneiden}
kann auch benutzt werden, um Objekte zu löschen. Die Objekte werden gelöscht
aber zusätzlich noch im ``spatial clipboard' abgelegt. In diesem Fall könnte
man dann den letzten Schritt, falls ein Fehler unterlaufen ist, wieder
rückgängig machen, indem wir auf das Werkzeug
\toolbtntwo{mActionEditPaste}{Objekte einfügen} drücken. Ausschneiden,
kopieren und übergeben von Objekten funktioniert mit den gerade ausgewählten
Objekten und können nach Bedarf kombiniert verwendet werden.

\begin{Tip}[h]\caption{\textsc{Unterstützung zum Löschen von Objekten}}
\qgistip{Wenn Sie Shapes editieren wird das Löschen von Objekten nur
unterstützt, wenn QGIS zu einer GDAL Version 1.3.2 oder höher verlinkt ist.
Alle OS X, Windows und GNU/Linux Binärpakete auf der QGIS Downloadseite
wurden mit GDAL Version 1.3.2 oder höher erstellt.
}
\end{Tip}


\minisec{Objekte ausschneiden, kopieren und einfügen}
\index{Vektorlayer!Objekte ausschneiden}
\index{Vektorlayer!Objekte kopieren}
\index{Vektorlayer!Objekte einfügen}
\index{Editierfunktionen!Objekte ausschneiden}
\index{Editierfunktionen!Objekte kopieren}
\index{Editierfunktionen!Objekte einfügen}

Ausgewählte Objekte können ausgeschnitten, kopiert und an andere Ebenen im
aktuellen QGIS-Projekt übergeben (eingefügt) werden, wenn sich der Ziellayer
auch im Editiermodus befindet, indem Sie nach Auswahl des Ziellayers auf den
Knopf \toolbtntwo{mActionToggleEditing}{Bearbeitungsstatus umschalten}
klicken.

Objekte können auch als Text an externe Applikationen übergeben werden: Dabei
wird ein Objekt im .csv Format mit ihrer Geometrie im OGC Well-Known Text
(WKT) Format erzeugt.

In dieser QGIS Version können Textobjekte außerhalb von QGIS nicht in eine
geladene Ebene eingefügt werden. Aber wann macht es Sinn, Objekte zum
kopieren, auszuschneiden und einzufügen? Ein Beispiel ist, wenn Sie parallel
an mehreren Layern arbeiten und Objekte zwischen den Layern hin- und
herkopieren möchten. Ein Szenario könnte sein, dass Sie einen neuen Layer
erstellen möchten, in dem aber nur einige Objekte aus einem bereits
existierenden Layer verwendet werden sollen, wie etwa 5 Seen aus der Karte
lakes.shp, die insgesamt aber tausende Seen enthält.

Wir nutzen diese Idee und machen daraus ein kleines Anwendungsbeispiel:

\begin{enumerate}
\item Laden Sie den Layer, von dem Sie einige Objekte kopieren wollen
(Quelle)
\item Laden oder erstellen Sie einen Layer, in den die kopierten Objekte
eingefügt werden sollen (Ziel)
\item Schalten Sie für den Ziel Layer den Bearbeitungsstatus ein
\item Stellen Sie die Quelle aktiv, indem Sie es in der Legende anklicken
\item Benutzen Sie das \toolbtntwo{mActionSelect}{Wähle Objekt aus} Werkzeug
und wählen ein paar Objekte in der Quelle aus
\item Klicken Sie auf das Icon \toolbtntwo{mActionEditCopy}{Objekte kopieren}
\item Stellen Sie das ``Ziel'' aktiv, indem Sie es in der Legende anklicken
\item Klicken Sie auf das Icon \toolbtntwo{mActionEditPaste}{Objekte
einfügen}
\item Beenden Sie den Bearbeitungsstatus für beide Layer und speichern Sie
das
Ergebnis ab.
\end{enumerate}

Was passiert, wenn der Quell- und Ziellayer ein unterschiedliches Schema
enthält (Spaltennamen und -typen unterscheiden sich)? QGIS verwendet die
Einträge, die gleich sind und ignoriert den Rest. Wenn es Ihnen egal ist, ob
die Attribute korrekt übernommen werden, dann ist es egal, wie Sie die
Spaltennamen und -typen der Attributtabelle erstellen. Wenn auch die
Attributdaten korrekt übernommen werden sollen, dann stellen Sie sicher, dass
auch die Spaltennamen und -typen beider layer zueinander passen.

\subsubsection{Erweiterte Digitalisierung}
\index{Vektorlayer!Erweiterte Digitalisierung}
\index{Erweiterte Digtalisierung!einen existierenden Layer}
\label{sec:advanced_edit}

\begin{table}[h]
\centering
\caption{Funktionen der Werkzeugleiste erweiterte Digitalisierung}\label{tab:advanced_editing}\medskip
\small
\begin{tabular}{|l|p{6.9cm}|l|p{6.9cm}|}
\hline \textbf{Icon} & \textbf{Funktion} & \textbf{Icon} & \textbf{Funktion} \\
\hline \includegraphics[width=0.7cm]{mActionUndo}
   & Rückgängig 
   & \includegraphics[width=0.7cm]{mActionRedo}
   & Wiederholen \\
\hline \includegraphics[width=0.7cm]{mActionSimplify}
   & Objekt vereinfachen
   & \includegraphics[width=0.7cm]{mActionAddRing}
   & Ring hinzufügen\\
\hline \includegraphics[width=0.7cm]{mActionAddIsland}
   & Insel hinzufügen
   & \includegraphics[width=0.7cm]{mActionDeleteRing}
   & Ring löschen \\
\hline \includegraphics[width=0.7cm]{mActionDeletePart}
   & Teil löschen
   & \includegraphics[width=0.7cm]{mActionReshape}
   & Objekte überarbeiten \\
\hline \includegraphics[width=0.7cm]{mActionSplitFeatures}
   & Objekte trennen
   & \includegraphics[width=0.7cm]{mActionMergeFeatures}
   & Gewählte Objekte verschmelzen \\
\hline \includegraphics[width=0.7cm]{mActionNodeTool}
   & Knotenwerkzeug
   &
   & \\
\hline
\end{tabular}
\end{table}

\minisec{Rückgängig und Wiederholen}
\index{Vektorlayer!Rückgängig}
\index{Vektorlayer!Wiederholen}

Die Werkzeuge \toolbtntwo{mActionUndo}{Rückgängig} und
\toolbtntwo{mActionRedo}{Wiederholen} ermöglichen es, Arbeitsschritte der
Vektoreditierung rückgängig zu machen oder zu wiederholen. Im Dialog
\dialog{Rücknahme/Wiederholung} werden alle durchgeführten Operationen
angezeigt (siehe Abbildung~\ref{fig:vector_redoundo}). Dieser Dialog wird
nicht standardmäßig angezeigt. Klicken Sie dazu in einem freien Bereich der
Werkzeugleiste auf die rechte Maustaste und aktivieren dann das
Kontrollkästchen \checkbox{Rücknahme/Wiederholung}. Die Funktion ist
übrigens immer aktiv, auch wenn der Dialog nicht angezeigt wird.

Wenn Sie auf die Funktion 'Rückgängig' klicken, werden alle Geometrien und
Attribute auf den Status zurückgestellt, bevor die rückgängig gemachte
Operation stattgefunden hat. Veränderung, die an anderer Stelle, z.B. in
anderen Plugins durchgeführt wurden, können unspezifisch sein für die
unterschiedlichen Operationen - d.h. sie können rückgängig gemacht werden
oder aber einfach so bleiben.

Eine Änderung kann initialisiert werden, indem Sie auf die Rückgängig oder
Wiederholen Knöpfe oder direkt auf die Aktion klicken, die verändert werden
soll. Eine andere Möglichkeit besteht darin, dass Sie auf die Icons 
\toolbtntwo{mActionUndo}{Rückgängig} und
\toolbtntwo{mActionRedo}{Wiederholen} in der Werkzeugleiste erweiterte
Digitalisierung klicken. 

\begin{figure}[ht]
   \begin{center}
   \caption{Dialog, um Editierfunktionen zu wiederholen und rückgängig zu
machen \nixcaption}\label{fig:vector_redoundo}\smallskip
   \includegraphics[clip=true, width=14cm]{redo_undo}
\end{center}
\end{figure}

\minisec{Objekte vereinfachen}
\index{Vektorlayer!vereinfachen}

Das Werkzeug \toolbtntwo{mActionSimplify}{Objekte vereinfachen} ermöglicht
es, die Anzahl der Stützpunkte eines Objektes zu veringern, solange sich die
Geometrie nicht verändert. Sie müssen dazu eines oder mehrere Objekte
auswählen. Dadurch werden diese von einem roten Gummiband umrandet und ein
Schieber erscheint. Wenn Sie die Stellung des Schiebers verändern, können Sie
sehen, wie das Objekt vereinfacht wird. Durch einen Klick auf \button{OK} 
wird die neue Geometrie abgespeichert. Wenn ein Objekt nicht vereinfacht
werden kann, erscheint ein Fenster mit einer entsprechenden Meldung.

\minisec{Ring hinzufügen}
\index{Vektorlayer!hinzufügen!Ring}

Sie können Ring-Polygone mit dem Werkzeug \toolbtntwo{mActionAddRing}{Ring
hinzufügen} erstellen. Das bedeutet, dass Sie innerhalb eines bestehenden
Polygons weitere Polygone digitalisieren können. Diese erscheinen dann als
'Loch', so dass nur der Zwischenraum des inneren und des äußeren Polygons als
Ring-Polygon übrig bleibt.

\minisec{Insel hinzufügen}
\index{Vektorlayer!hinzufügen!Insel}

Mit dem Tool \toolbtntwo{mActionAddIsland}{Insel hinzufügen} können Sie ein
neues Polygons digitalisieren und einem zuvor selektierten Multipolygon
zuweisen. Das neue Inselpolygon muss ausserhalb des selektierten
Multipolygons digitalisiert werden.

\minisec{Ring löschen}
\index{Vektorlayer!löschen!Ring}

Das Werkzeug \toolbtntwo{mActionDeleteRing}{Ring löschen} ermöglicht es,
Ringpolygone innerhalb eines existierenden Fläche zu löschen. Das Werkzeug
funktioniert nur mit Polygonlayern und kann für Polygon- und
Multipolygon-Objekte benutzt werden. Es findet keine Veränderung statt, wenn
es auf den äußeren Ring eines Polygons angewendet wird. 

\minisec{Teil löschen}
\index{Vektorlayer!löschen!Teil}

Mit dem \toolbtntwo{mActionDeletePart}{Teil löschen} Werkzeug können Teile
eines Multi-Feature Objektes gelöscht werden (z.B. ein Polygon von einem
Multipolygon Objekt löschen). Dabei wird der letzte Teil des Multi-Feature
Objektes nicht gelöscht. Das Werkzeug funktioniert mit alles Multi-Feature
Geometrien Punkte, Linien und Polygone.

\minisec{Objekte überarbeiten}
\index{Vektorlayer!überarbeiten!Objekte}

Die Geometrien von Linien und Polygonen können mit dem Werkzeug
\toolbtntwo{mActionReshape}{Objekt überarbeiten}. Dabei ersetzt die gezogene
Linie die originale Linie oder Flächenlinie eines Objektes von der ersten bis
zur zweiten Überschneidung. Für Polygone kann dies manchmal zu unerwünschten
Resultaten führen und ist vorwiegend sinnvoll, wenn man nur kleinere Teile
einer Fläche ersetzen möchte und nicht für eine vollständige Überarbeitung.
Dabei ist es für die Vereinfachungslinie auch nicht erlaubt, mehrere
Polygongrenzen zu überschneiden.

\textbf{Note}: Das Werkzeug 'Objekte überarbeiten' kann den Startpunkt eines
Polygons oder einer geschlossenen Linie verändern. Der Punkt, der doppelt
abgelegt ist, ist dadurch verändert. Dies ist wahrscheinlich kein Problem für
die meisten GIS Applikationen, sollte aber beachtet werden.

\minisec{Objekte teilen}
\index{Vektorlayer!teilen!Objekte}

Objekte können mit dem Werkzeug \toolbtntwo{mActionSplitFeatures}{Objekt
teilen} geteilt werden.

\minisec{Gewählte Objekte verschmelzen}
\index{Vektorlayer!verschmelzen!Objekte}

Das Werkzeug \toolbtntwo{mActionMergeFeatures}{Gewählte Objekte verschmelzen}
erlaubt es, Objekte die eine gemeinsame Grenzlinie und die gleichen Attribute
tragen zu verschmelzen.

\minisec{Knotenwerkzeug}
\index{Vektorlayer!Knotenwerkzeug}

Das Werkzeug \toolbtntwo{mActionNodeTool}{Knotenwerkzeug} erlaubt es, die
Stützpunkte von Objekten zu manipulieren, ählich wie ein CAD-Programm. Dazu
kann man mehrere Stützpunkte gemeinsam selektieren, um sie dann zusammen zu
verschieben, zu löschen oder hinzuzufügen. Das Knotenwerkzeug funktioniert
auch mit angeschalteter OTF-Projektion und unterstützt die Funktionen für
topologisches Editieren. Anders als die anderen Editierfunktionen, bleibt die
Auswahl für die Veränderungen des Objektes bestehen.

\minisec{Eine einfache Übung}

Beginnen Sie, indem Sie das Werkzeug
\toolbtntwo{mActionNodeTool}{Knotenwerkzeug} aktivieren und dann ein Objekt
selektieren. Rote Boxen erscheinen an jedem Stützpunkt des Objektes. Nun sind
folgende Funktionen vorhanden:

\begin{itemize}
\item \textbf{Einen Stützpunkte auswählen}: Das Auswählen ist einfach.
Klicken Sie einfach auf einen Stützpunkt und die Farbe der Box wechselt nach
Blau. Sie können mehrere Stützpunkte auswählen, indem Sie die Tasten
\keystroke{Shift} gedrückt halten. Mit der Taste \keystroke{Ctrl} kann die
Auswahl umgekehrt werden (selektierte Stützpunkte werden deselektiert, nicht
ausgwählte Stützpunkte werden ausgewählt). Es ist auch möglich, mehrere
Stützpunkte auszuwählen, indem Sie ein Rechteck mit der Maus aufziehen. Alle
Stützpunkte innerhalb des Rechtecks werden dann selektiert. Oder Sie klicken
auf eine Grenzlinie und beide angrenzenden Stützpunkte werden selektiert.
\item \textbf{Stützpunkte hinzufügen}: Dazu klicken Sie doppelt in die Nähe
einer Grenzlinie und ein neuer Stützpunkt erscheint. Beachten Sie, dass der
Stützpunkt auf der Grenzlinie erscheint, und nicht an der Stelle, wo der
Mauspfeil ist. 
\item \textbf{Stützpunkte löschen}: Wählen Sie dazu Stützpunkte aus, die
gelöscht werden sollen und klicken Sie dann auf die Taste
\keystroke{Entfernen}. Beachten Sie, dass eine Mindestanzahl Stützpunkte für
den jeweiligen Objekttyp nicht gelöscht wird. Wenn Sie ein komplettes Objekt
löschen wollen, nutzen Sie das entsprechende Werkzeug.
\item \textbf{Stützpunkte verschieben}: Wählen Sie alle Stützpunkte aus, die
verschoben werden sollen. Alle ausgewählten Stützpunkte werden in dieselbe
Richtung wie der Mauspfeil verschoben. Wenn eine Fangtolerazt eingestellt
ist, können die Stützpunkte zu dem nächstgelegenen Stützpunkt oder Segment
snappen.
\end{itemize}

\begin{Tip}[h]\caption{\textsc{Deckungsgleichheit eingefügter Objekte}}
\qgistip{Wenn der Quell- und Ziellayer die gleiche Projektion nutzen, hat das
übergebene Objekt die identische Geometrie wie in dem Quelllayer. Wenn der
Quell- und Ziellayer eine unterschiedliche Projektion nutzen, kann das
übergebene Objekt eine andere Geometrie wie in dem Quelllayer besitzen. Der
Grund liegt in auftretenden Rundungsabweichungen bei der Konvertierung
zwischen Projektionen.
}
\end{Tip}

\minisec{Fangtoleranz einstellen}
\index{Editierfunktionen!Fangtoleranz}

QGIS ermöglicht es, digitalisierte Stützpunkte an andere Stützpunkte
desselben Layers anzubinden. Dazu müssen Sie die Fangtoleranz im Menü
\mainmenuopt{Einstellungen} > \dropmenuopttwo{mActionOptions}{Optionen} >
\tab{Digitalisierung} entsprechend einstellen. (Unter Mac ist es
\mainmenuopt{QGIS} > \dropmenuopttwo{mActionOptions}{Optionen}). Beachten
Sie, dass der Wert als Layereinheit oder Pixelwert interpretiert wird.

\minisec{Editierte Layer speichern}
\index{Editierfunktionen!Änderungen speichern}

Wenn sich ein Vektorlayer im Editiermodus befindet, werden alle Änderungen im
Speicher von QGIS abgelegt. Sie werden also nicht direkt auf den Datenträger
oder die Festplatte geschrieben. Wenn Sie den Editierstatus oder QGIS selbst
beenden, werden Sie gefragt, ob sie die aktuellen Änderungen speichern
möchten.

Wenn die Änderungen nicht gespeichert werden können (z.B.: weil die
Festplatte voll ist) bleiben diese 'im-memory' Status erhalten. Sie können somit
Veränderungen vornehmen und das Speichern erneut versuchen.

\subsubsection{Neuen Vektorlayer erstellen}\label{sec:create
shape}\index{Editierfunktionen!Neuen Vektorlayer erstellen}

Um einen neuen Vektorlayer zu erstellen, wählen Sie in der Menüleiste
\toolbtntwo{mActionNewVectorLayer}{Neuer Vektorlayer} aus dem Menü
\mainmenuopt{Layer}. Dadurch startet der Dialog \dialog{Neuer Vektorlayer}
(vgl. Abb. \ref{fig:newvectorlayer}). Wählen Sie hier den Typ des neuen
Layers(Punkt, Linie oder Polygon).

\begin{figure}[ht]
   \begin{center}
   \caption{Einen neuen Vektorlayer erstellen \nixcaption}\label{fig:newvectorlayer}\smallskip
   \includegraphics[clip=true, width=8cm]{editNewVector}
\end{center} 
\end{figure}

QGIS kann derzeit noch keine 2,5D Objekte erstellen (z.B. Objekte mit X,Y,Z
Koordinaten). Im Moment können nur Shapes erstellt werden. In zukünftigen
Versionen werden auch andere durch OGR oder PostgreSQL unterstützte
Datenformate erstellt werden können.

Das Erstellen eines GRASS Vektorlayers ist mit dem GRASS-Plugin möglich.
Weitere Information dazu finden Sie im Abschnitt
\ref{sec:creating_new_grass_vectors}.

Um die Erstellung eines neuen Vektorlayers abzuschließen, ergänzen Sie die
gewünschten Attributfelder, indem Sie auf den Knopf \button{Hinzufügen}
klicken und den Namen und Datentyp angeben. Es werden nur die Datentypen
\selectstring{Type}{real}, \selectstring{Type}{integer}, and
\selectstring{Type}{string} unterstützt. Zusätzlich kann entsprechend des
gewählten Datentyps auch die Breite und Genauigkeit der Spalteneinträge
festgelegt werden. Wenn dies getan ist, bestätigen Sie mit
\button{Ok} und geben einen Namen für den Vektorlayer ein. Die Endung
\filename{.shp} wird automatisch ergänzt, der neue Layer wird automatisch
in die Kartenlegende eingefügt und Sie können den Layer entsprechend dem
Kapitel \ref{sec:edit_existing_layer} editieren.

\subsubsection{Die Attributtabelle}\label{sec:attribute table}\index{Editieren!Attributtabelle}

Die Attributtabelle zeigt alle Objekte eines ausgewählten Layers. Jede Zeile
in der Attributtabelle representiert dabei ein Objekt des Layers mit seinen
Attributen, die in einzelne Spalten unterteilt sind. Die Einträge der
Attributtabelle können durchsucht, selektiert, verschoben und verändert
werden.

Um die Attributtabelle eines Vektorlayers zu öffnen, machen Sie diesen in der
Kartenlegende aktiv. Danach wählen Sie
\dropmenuopttwo{mActionOpenTable}{Attributtabelle öffnen} im Menü
\mainmenuopt{Layer}. Es ist auch möglich, die Attributtabelle zu öffnen,
indem Sie mit der rechten Maustaste auf den Namen des Layers in der
Kartenlegende klicken und dann 'Attributtabelle öffnen' aus dem Menü
auswählen. Die dritte und einfachste Variante besteht darin, direkt auf das Icon
\toolbtntwo{mActionOpenTable}{Attributtabelle öffnen} in der Werkzeugleiste
zu klicken. 

In der Attributtabelle werden sämtliche Attribute aller Objekte des
ausgewählten Vektorlayers angezeigt (siehe Abbildung~\ref{fig:attributetable}).

\begin{figure}[ht]
   \begin{center}
   \caption{Attributtabelle des Vektorlayers alaska.shp \nixcaption}\label{fig:attributetable}\smallskip
   \includegraphics[clip=true, width=12cm]{vectorAttributeTable}
\end{center}
\end{figure}

\minisec{Objekte einer Attributtabelle abfragen}

\textbf{Eine selektierte Zeile} in einer Attributtabelle repräsentiert alle
Attribute eines Objektes in dem ausgewählten Layer. Die Attributtabelle zeigt
alle Veränderungen bei einer Abfrage in der Attributtabelle im Kartenfenster
und umgekehrt. Eine neue Abfrage in der Attributtabelle verursacht also eine
Veränderung der im Kartenfenster als ausgewählt dargestellten Objekte und
eine im Kartenfenster geänderte Auswahl von Objekten spiegelt sich durch eine
Veränderung der ausgwählten Zeilen in der Attributtabelle wider.

Zeilen können ausgewählt werden, indem Sie auf die Zeilennummer links neben
der Zeile klicken. Die Auswahl einer Zeile ändert nicht die aktuelle Position
des Mauspfeils. \textbf{Mehrere Zeilen} können ausgewählt werden, indem die
\keystroke{Strg} Taste während der Auswahl gedrückt wird. Eine
\textbf{kontinuierliche Auswahl} ist möglich, indem Sie bei der Selektion die
\keystroke{Shift} Taste gedrückt halten, während Sie die Zeilennummern
auswählen. Alle Zeilen zwischen der aktuell ausgewählten Zeile und der
Mauspfeilposition werden dadurch selektiert.

Jede Spalte kann sortiert werden, indem Sie auf die Kopfzeile klicken. Ein
kleiner Pfeil zeigt die Sortierfolge an. Wenn er nach unten zeigt, werden die
Werte von oben nach unten absteigend angezeigt. Wenn der Pfeil nach oben
zeigt, werden die von oben nach unten aufsteigend angezeigt.

Um eine einfache
Abfrage nach Attributen einer Spalte durchzuführen, kann das \button{Suche
nach} Feld verwendet werden. Wählen Sie zusätzlich zu dem Attributwert noch
eine Spalte aus, in welche die Suche erfolgen soll. Danach klicken Sie auf
\button{Suchen}. Für komplexere Abfragen gibt es den Erweiterte Suche
\button{...} Knopf. Damit wird der Abfrageeditor gestartet, der in Kapitel
\ref{sec:query_builder} genauer beschrieben wird.

Um nur ausgewählte Einträge anzuzeigen, aktivieren Sie das Kontrollkästchen
\checkbox{Nur gewählte Datensätze zeigen}. Damit nur ausgewählte Einträge
durchsucht werden, aktivieren Sie das Kontrollkästchen \checkbox{Nur
ausgewählte Datensätze durchsuchen}. Die anderen Knöpfe im unteren linken
Bereich der Attributtabelle bieten folgende Funktionen: 

\begin{itemize}
\item \toolbtntwo{mActionOpenTable}{Auswahl löschen}
\item \toolbtntwo{mActionSelectedToTop}{Ausgewählte Objekte nach oben}
\item \toolbtntwo{mActionInvertSelection}{Auswahl umkehren}
\item \toolbtntwo{mActionCopySelected}{Ausgewählte Zeilen in die
Zwischenablage kopieren} auch mit \keystroke{Strg-C}
\item \toolbtntwo{mActionZoomToSelected}{Zu den selektierten Zeilen zoomen}
auch mit \keystroke{Strg-J}
\item \toolbtntwo{mActionToggleEditing}{Bearbeitungsmodus umschalten}, um
einen einzelnen Wert zu editieren.
\end{itemize}

\begin{Tip}[ht]\caption{\textsc{Attributdaten manipulieren}}
\qgistip{Momentan wird nur für PostGIS-Layer das Hinzufügen und Löschen von
Attributspalten unterstützt. In zukünftigen Version wird diese Funktion auch
für andere Daten unterstützt, da diese erst kürzlich in GDAL/OGR > 1.6.0
implementiert wurde. Ohne jegliche Garantie kann als Notlösung solange das
externe Python Plugin 'Table Manager' verwendet werden.
}
\end{Tip}

\subsection{Abfrageeditor}\label{sec:query_builder}
\index{Abfrageeditor}

Über den \button{Erweiterte Suche \dots} Knopf wird der Abfrageeditor
gestartet. Er ermöglicht es, mit
Hilfe von SQL-ähnlichen WHERE Abfragen eine Auswahl einer Attributtabelle zu
erstellen und die dazu gehörigen Geometrien im Kartenfenster anzuzeigen. Er
kann für alle OGR-unterstützten Formate, GRASS- und PostGIS-Ebenen verwendet
werden. Wenn Sie beispielsweise einen Layer \filename{Städte} haben, können
Sie alle Städte mit einer \usertext{Einwohnerzahl > 100000} auswählen und
anzeigen lassen. Abbildung \ref{fig:query_builder} zeigt eine
Beispielanwendung des Abfrageeditors mit einem PostGIS-Layer, dessen
Attribute in einer Postgres Datenbank abgelegt sind. Die Bereiche Felder,
Werte und Operatoren im Abfrageeditor helfen, die WHERE Abfrage in dem Feld
'SQL where clause' zu definieren. 

\begin{figure}[ht]
  \begin{center}
    \caption{Abfrageeditor \nixcaption}\label{fig:query_builder}\smallskip
    \includegraphics[clip=true, width=14cm]{queryBuilder}
  \end{center}  
\end{figure}

Das \textbf{Felderfenster} enthält eine Liste alle Attributspalten, die
durchsucht werden können. Um eine Spalte in das 'SQL where clause' Fenster
zu schreiben, doppelklicken Sie auf den Namen im Felderfenster. Allgemein
können Sie mehrere Felder, Werte oder Operatoren auswählen. Oder Sie
schreiben die SQL-Abfrage direkt in das 'SQL where clause' Fenster.

Das \textbf{Wertefenster} enthält eine Liste aller Werte der im Feldfenster
ausgewählten Attributspalte. Um alle möglichen Werte anzuzeigen, klicken Sie
auf den Knopf \button{Alle}\index{Abfrageeditor!Alle Werte anzeigen}. Um eine
Stichprobe aller Werte anzuzeigen, klicken Sie auf
\button{Stichprobe}\index{Abfrageeditor!Stihprobe anzeigen}. Um einen Wert in
das 'SQL where clause' Fenster zu schreiben, doppelklicken Sie auf den Namen
im Wertefenster.

Das \textbf{Operatorenfenster} enthält alle Operatoren, die bei der
Erstellungen des 'SQL where clause' genutzt werden können. Um einen
Operator hinzuzufügen, klicken Sie auf das entsprechende Icon. Relationale
Operatoren ( = , > , \dots), Text vergleichende Operatoren ( LIKE ) und
logische Operatoren ( AND , OR , \dots) stehen zur Verfügung. 

Der Knopf \button{Löschen} löscht den Eintrag im 'SQL where clause' Fenster.
Der Knopf \button{Testen} zeigt eine Nachricht, mit der Anzahl von Objekten,
die durch die aktuelle Abfrage gefunden werden. Der Knopf \button{OK}
schließt den Abfrageeditor und führt die Abfrage durch. Mit dem Knopf
\button{Abbrechen} wird der Abfrageeditor geschlossen, ohne die aktuelle
Auswahl zu verändern. 

\begin{Tip}\caption{\textsc{Ändern der
Layer-Definition}}\index{Abfrageeditor!Layer-Definition ändern}
\qgistip{Sie können die Definition der Ebene ändern nachdem sie geladen ist,
indem sie die SQL-Abfrage anders starten. Dazu öffnen Sie den Dialog
\dialog{Layereigenschaften} durch Doppelklicken auf den Layernamen in der
Legende. Im Reiter \tab{Allgemein} befindet sich der Knopf \button{Erweiterte
Suche}. Weitere Informationen können Sie im Kapitel \ref{sec:vectorprops}
finden.}
\end{Tip}

\minisec{Aufruf des Abfrageeditors für
PostGIS-Layer}\index{Abfrageeditor!starten}

Der Abfrageeditor funktioniert grundsätzlich mit allen von QGIS unterstützen
Vektorformaten. Im oberen Beispiel haben Sie den Abfrageeditor dazu
verwendet, um eine Abfrage eines PostGIS-Layers durchzuführen. Dazu haben Sie
den \dialog{Layereigenschaften} Dialog des geladenen PostGIS-Layers geöffnet
und im Reiter \tab{Allgemein} auf den Knopf \button{Erweiterte Suche} geklickt. 

\minisec{Aufruf des Abfrageeditors für OGR- und GRASS-Layer}

Dieses Vorgehen funktioniert momentan aber nur für PostGIS-Layer. Um den
Abfrageeditor zu öffnen, und einen geladene OGR- oder GRASS-Layer abzufragen,
öffnen müssen Sie auf das Icon \toolbtntwo{mActionOpenTable}{Attributtabelle
öffnen} in der Werkzeugleiste klicken und dann im Dialogfenster auf den Knopf
\button{Erweiterte Suche} drücken. Dadurch wird ebenfalls der Abfrageeditor
gestartet und ermöglicht Abfragen wie im obigen Abschnitt
\ref{sec:query_builder} für PostGIS beschrieben.


