% vim: set textwidth=78 autoindent:

\subsection{OpenStreetMap Plugin}

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

In den letzten Jahren hat das OpenStreetMap-Projekt an Popularität gewonnen,
weil in vielen Ländern keine freien Geodaten, wie etwa digitale Straßenkarten
zur Verfügung stehen. Ziel des OSM-Projekts ist es, eine frei editierbare
Karte der Welt auf Basis von GPS-Daten, Luftaufnahmen oder einfach nur
Ortskenntnis zu erschaffen. Um diese Idee zu unterstützen, wurde ein QGIS
Plugin geschrieben, das die Arbeit mit OSM-Daten ermöglicht.

Das Plugin bietet alle grundlegenden Funktionen für die Manipulation von OSM 
Daten, wie das Laden von Daten, Importieren, Speichern, Herunterladen, Bearbeiten 
und Hochladen von Daten zurück auf den OpenStreetMap Server. Während der 
Erstellung des OSM Plugins fanden Treffen mit OSM Nutzern statt. 
Ziel war es, ihre Ideen einzubeziehen, um ein optimales Ergebnis zu erreichen.

Der folgende Abschnitt gibt eine kurze Einführung in die Prinzipien des OSM
Projektes. Wenn Sie die Informationen über OSM nicht interessieren,
überspringen Sie diesen Teil und lesen im nächsten Abschnitt weiter. Teile
der folgenden Absätze sind aus der OpenStreetMap Internetseite unter der URL
\url{http://www.openstreetmap.org} herauskopiert.

\minisec{Das OpenStreetMap Projekt}

OpenStreetMap ist ein Projekt, um eine frei editierbare Karte der Welt zu
erstellen. Die Karten werden aus GPS-Daten, Luftaufnahmen, anderen freien
Quellen oder einfach aus Ortskenntnis der Teilnehmer generiert. Das Projekt
wurde gestartet, weil die meisten Karten rechtliche oder technische
Einschränkungen für ihre Verwendung haben, die den Anwender daran hindern,
die Daten für kreative, produktive, oder sonstige Arbeiten und Projekte
einzusetzen. Beides, die gerenderten Bilder und die Vektordaten des
OSM-Projektes stehen zum Download bereit unter der Creative Commons
Attribution ShareAlike 2.0 Lizenz.

\begin{figure}[ht]
   \begin{center}
   \caption{OpenStreetMap Daten im Internet \nixcaption}\label{fig:osmweb}\smallskip
   \includegraphics[clip=true, width=\textwidth]{osmweb}
\end{center}
\end{figure}

OpenStreetMap wurde von Seiten wie Wikipedia inspiriert - die Karte
(siehe Abbildung \ref{fig:osmweb}) verfügt über einen deutlich
hervorgehobenen \tab{Bearbeiten} Reiter sowie eine vollständige Historie der
durchgeführten Änderungen. Registrierte Nutzer können GPS-Track Protokolle
hochladen und die Vektordaten unter Verwendung der bereitgestellten
Bearbeitungswerkzeuge editieren.

Das OSM-Daten Primitiv ist eine Objektklasse, die über die API auf dem Server
gespeichert werden kann. Die drei unterstützten Datentypen sind:
\textbf{Knoten}, \textbf{Weg} und \textbf{Relation}.

\begin{itemize}
\item \textbf{Ein Knoten} ist ein Lat/Long Koordinatenpaar. Es wird
als Grundlage für andere Objekte oder selbst als Objekt (Point of Interest)
verwendet, wenn es entsprechend gekennzeichnet ist. 
\item \textbf{Ein Weg} ist eine Liste von mindestens zwei Knoten, die ein
lineares Objekt beschreiben, z.B. eine Straße. Knoten können Teil von
multiplen Wegen sein.
\item \textbf{Eine Relation} ist eine Gruppe von null oder mehreren
Primitivs und den damit zusammenhängenden Rollen. Sie wird verwendet, um
Beziehungen zwischen Objekten festzulegen und kann darüberhinaus auch ein
abstraktes Objekt darstellen.
\end{itemize}

Eine Vielzahl logischer Objekte können in einer gemeinsamen Karte definiert
werden (z.B. 'Point Of Interest', 'Straße', 'Straßenbahnlinie' oder 
'Bushaltestelle'). Diese Kartenobjekte sind allesamt gut in der
OSM-Community bekannt und werden als sogenannte 'Tags' auf Grundlage eines 
Keys und eines Values gespeichert. OSM Daten sind in der Regel im
XML-Format abgelegt. Für die Kommunikation mit dem OSM-Server wird XML 
Payload verwendet.

\minisec{QGIS - OSM Verbindung}\label{qgis-osm-connection}

Der erste Teil dieses Abschnitts beschreibt, wie OSM Daten-Primitivs in QGIS
Vektorlayern angezeigt werden. Wie oben beschrieben, bestehen OSM Daten aus
Knoten, Wegen und Relationen. In QGIS werden sie als drei verschiedene
Layertypen angezeigt: Punktlayer, Linienlayer und Polygonlayer. Es ist nicht
möglich, diese Layertypen zu entfernen und stattdessen mit den anderen zu
arbeiten.

\begin{itemize}
\item Ein \textbf{Punktlayer} zeigt alle Objekte des Typs Knoten, die
eigenständig sind. Also nur die Knoten, die nicht Teil von Wegen sind, werden
als Punktlayer dargestellt.
\item Ein \textbf{Linienlayer} zeigt die OSM Objekte des Typs Weg, die nicht
geschlossen sind. D.h. kein Weg beginnt und endet mit demselben
Koordinatenpaar (Knoten).
\item Ein \textbf{Polygonlayer} zeigt alle Wege, die nicht im Linienlayer
gespeichert sind.
\end{itemize}

OpenStreetMap Daten haben neben den bereits angesprochenen Primitivs noch ein
weiteres: \textbf{Relationen}. Es gibt absichtlich keinen Vektorlayer, um
Relationen darzustellen. Eine Relation definiert Beziehungen zwischen
einer beliebigen Anzahl von Primitivs. Nachdem ein Punkt, eine Linie
oder ein Polygon auf der Karte identifiziert wurde, zeigt das OSM Plugin eine
Liste aller Verknüpfungen des identifizierten Objekts an.

Anspruchsvoll war das Design der Verbindung zwischen den OSM-Daten und den
Standard QGIS Bearbeitungswerkzeugen. Diese Instrumente arbeiten jeweils mit
einem einzigen Vektorlayer zur Zeit, egal, welche Objektart angezeigt wird.
Dies bedeutet, dass, wenn OSM Daten in QGIS mit dem Plugin geladen werden,
theoretisch einzelne Punkt-, Linien- oder Polygonlayer mit diesen
Standardtools getrennt bearbeitet werden können.

Das Problem ist, dass Linenlayer aus zwei verschiedenen Arten von OSM
Objekten bestehen - Wege und Knoten. Warum? Weil im OSM-Format ein Weg aus
Knoten besteht. Wenn Sie beginnen, einen Linienlayer zu verändern, haben die
Veränderungen nicht nur Auswirkungen auf die OSM Wege, sondern auch auf die
OSM Knoten, die dazu gehören.

Die QGIS Standard-Editierwerkzeuge können dem OSM-Provider nicht mitteilen,
welche Bestandteile welcher Linie geändert wurden und wie. Es wird nur
mitgeteilt, was die neue Geometrie err Linie ist, und das ist nicht genug, um
Änderungen korrekt an die OSM-Datenbank zu übertragen. Der Linienlayer kennt
auch nicht die Bezeichnung (Relationen) der Linienmitglieder. Das gleiche 
Problem tritt auf, wenn Sie versuchen, Polygonlayer zu bearbeiten.

Aus diesem Grund muss das OSM Plugin seine eigenen Werkzeuge für die
Bearbeitung von OSM Daten bereitstellen, damit diese korrekt editiert werden
können. Das Plugin besteht aus Werkzeugen für das Erstellen, Löschen und
Verschieben von Punkten, Linien, Polygonen und Relationen.

\textbf{Anmerkung:} Um eine Verbindung zwischen den Editierwerkzeugen von QGIS und
dem OSM-Plugin zu ermöglichen, wären umfangreiche Änderungen im QGIS Kern
notwendig.

\subsubsection{Installation}

Das OpenStreetMap Plugin ist ein Kern-Plugin in QGIS. Wenn Ihre QGIS-Installation 
Python unterstützt, dann kann das OpenStreetMap Plugin über den Plugin Manager
geladen werden, wie in Kapitel \ref{sec:load_core_plugin} beschrieben. 

\subsubsection{Die Benutzeroberfläche des OSM Plugins}

Beim ersten Start des OSM Plugins, und nachdem die ersten Daten geladen
wurden, erscheinen eine Reihe von Icons im QGIS Werkzeugmenü, zusammen mit
neuen grafischen Elementen, wie in Abbildung \ref{fig:osmwidget} zu sehen.

\begin{figure}[ht]
   \begin{center}
   \caption{Benutzeroberfläche des OSM Plugins \nixcaption}\label{fig:osmwidget}\smallskip
   \includegraphics[clip=true, width=\textwidth]{osm_widgets}
\end{center}
\end{figure}

\minisec{OSM Objekt Dialog}

Der OSM Objekt Dialog erlaubt es, OSM Objekte zu identifizieren. Er 
zeigt grundlegende Informationen über die Objektart, die Kennung und wer, 
wann ein Objekt verändert hat. Außerdem enthält der Objekt Dialog alle 
OSM-Editiertools, wie oben beschrieben. Weitere Informationen zu diesen 
Werkzeugen finden Sie in den folgenden Abschnitten. Der Dialog ist 
zunächst deaktiviert. Er wird automatisch aktiviert, nachdem Sie OSM 
Daten erfolgreich geladen haben.

\minisec{OSM Bearbeitungshistorie Dialog}

Der Bearbeitungshistorie Dialog wird verwendet, um Veränderungen rückgängig 
zu machen oder zu wiederholen. Es besteht aber nicht nur aus den typischen 
\button{Zurücknehmen} und \button{Wiederholen} Tasten, sondern zeigt auch 
eine Liste mit einer kurzen Beschreibung der bisher durchgeführten Aktionen. 
Der Bearbeitungshistorie Dialog ist zu Beginn deaktiviert. Sie können ihn über 
das Icon 'Bearbeitungshistorie anzeigen/ausblenden' aktivieren im OSM Objekt 
Dialog.

\minisec{OSM Icons in der Werkzeugleiste}

\begin{description}
\item \toolbtntwo{osm_load}{Load OSM from file}: wird benutzt, um Daten im 
speziellen XML OSM-Format zu laden.
\item \toolbtntwo{osm_featureManager}{Show/Hide OSM Feature Manager} wird 
benutzt, um den OSM Objekt Dialog zu aktivieren oder zu deaktivieren. Mit dem 
Dialog kann man OSM Objekte abfragen und editieren.
\item \toolbtntwo{osm_download}{Download OSM data} wird benutzt, um Daten 
direkt vom OpenStreetMap Server herunterzuladen und zu visualisieren.
\item \toolbtntwo{osm_upload}{Upload OSM data} wird benutzt, um veränderte 
Daten wieder hochzuladen. 
\item \toolbtntwo{osm_import}{Import data from a layer} wird benutzt, um 
Daten von einem Vektorlayer zu importieren. Dazu muss mindestens ein 
Vektorlayer ausgewählt und ein aktueller OSM-Layer geladen sein.
\item \toolbtntwo{osm_save}{Save OSM to file} wird benutzt, um OSM Daten 
wieder als XML-Datei abzuspeichern.
\end{description}

Weitere Informationen zu den Fenstern, Dialogen und Icons sowie zu den
dahinter stehenden Funktionalitäten finden Sie in den entsprechenden Abschnitten 
dieser Pluginbeschreibung. 

\subsubsection{OSM Daten laden}

Die erste Aktion, nachdem Sie das OSM Plugin gestartet haben, besteht darin, 
eine OSM-Datei zu laden. OSM-Daten können als Datei importiert, oder 
direkt vom OSM Server heruntergeladen werden. In diesem Abschnitt wird die 
erste Variante vorgestellt.

Zum Laden einer OSM Datei drücken Sie auf das Icon 
\toolbtntwo{osm_load}{Load OSM from file}. Wenn Sie das Icon nicht finden, 
müssen Sie das Plugin erst aktivieren über das Menü 
\mainmenuopt{Einstellungen} > \mainmenuopt{Werkzeuge} > 
\dropmenuopt{OpenStreetMap}.

\begin{figure}[ht]
   \begin{center}
   \caption{Der Dialog zum Laden von OSM Daten \nixcaption}\label{fig:osmload}\smallskip
   \includegraphics[clip=true, width=12cm]{osmloaddialog}
\end{center}
\end{figure}

\begin{description}
\item \textbf{Zu ladende OpenStreetMap Datei}: Wählen Sie eine OSM Datei 
(.osm) aus, von der Sie Informationen laden wollen.
\item \textbf{Spalten für Elemente hinzufügen}: Diese Option erstellt eine 
Verknüpfung zwischen den OSM und QGIS Daten. Jedes Objekt in einem OSM 
Datensatz besteht aus sog. 'Tags' (einem Schlüsselpaars (Key) und einem Value), 
über das die Objekteigenschaften definiert sind. Jedes Objekt in einem QGIS
Datensatz wird über seine Attribute (einer Schlüssel-ID und Werte) definiert. 
Mit dieser Option kann festgelegt werden, welche Eigenschaften eines OSM 
Objektes angezeigt werden sollen, wenn Sie sich detailierte Informationen 
zu einem QGIS Objekt anzeigen lassen.
\item \textbf{Aktuelle Daten ersetzen}: Wenn Sie dieses Kontrollkästchen 
aktiviert haben, werden die aktuellen Daten, mit denen Sie gerade arbeiten 
durch die neuen Daten ersetzt. Die alten Daten werden dadurch gelöscht. Wenn 
Sie zum ersten Mal OSM Daten laden, ist diese Option entsprechend nicht 
auswählbar. 
\item \textbf{Benutzerdefinierte Darstellung}: Diese Option legt fest, 
wieviele Details der Karte angezeigt werden sollen. Es gibt drei 
Voreinstellungen, um eine OSM-Datei anzuzeigen. Verwenden Sie die 
Standardeinstellung \button{Small scale}, wenn Sie die OSM Daten mit allen 
Details sehen möchten, um etwas zu editieren. Ansonsten können Sie die beiden 
Einstellungen \button{Medium scale} oder \button{Large scale} verwenden. 
QGIS \CURRENT unterstützt momentan noch nicht das dynamische Umschalten 
zwischen den verschiendenen Darstellungsvarianten.
\end{description}

Klicken Sie auf den Knopf \button{Ok}, um die Daten zu laden. Wenn es das 
erste Mal ist, dass Sie einen Datensatz laden, muss das Plugin die Datenbank 
zuerst durchsuchen. Dies kann einige Minuten dauern, wenn es ein großer 
Datensatz ist.

\subsubsection{OSM Daten anschauen}

Nachdem die OSM-Daten geladen sind, können Sie die Objekte abfragen. Verwenden Sie 
dazu das \toolbtntwo{osm_identify}{Objekt abfragen} Werkzeug in der linken oberen 
Ecke des Objekt Dialogs. Wenn sich der Mauszeiger über einem Objekt befindet, können 
Sie alle Informationen im OSM Objektfenster anschauen. Es wird dazu auch ein 
dynamisches Gummiband in der Karte angezeigt, damit Sie immer wissen, welches Objekt 
gerade abgefragt wird.

Der Reiter \tab{Eigenschaften} zeigt alle Objektattribute. Mit einem Klick auf 
den Reiter \tab{Relationen} werden alle Relationen des Objektes angezeigt.

Wenn Sie sich ein Objekt länger anschauen wollen, um die Eigenschaften und 
Relationen genau zu prüfen, dann klicken Sie auf die linke 
Maustaste während sich der Mauspfeil über dem Objekt befindet. Die Funktion zum 
Identifizieren von Objekten stoppt dann solange, bis Sie wieder auf die linke 
Maustaste klicken.

Manchmal gibt es mehr als ein Objekt an einer Stelle, wo der Linksklick 
durchgeführt wurde. Dies geschieht vor allem, wenn Sie auf Kreuzungen klicken 
oder wenn Sie nicht weit genug in die Karte hineingezoomt sind. In dieser Situation 
wird zwar nur eines der Objekte abgefragt, angezeigt und mit dem Gummiband 
markiert, aber das Plugin erinnert sich auch an die anderen. Während Sie sich 
noch im Pause-Modus der linken Maustaste befinden, können Sie die anderen 
Objekte durchlaufen, indem Sie nacheinander auf die rechte Maustaste klicken.

\subsubsection{Die Basisdaten eines OSM Datensatzes editieren}

Unter den Basisdaten eines OSM Datensatzes verstehen wir jene Daten, die nicht 
die Relationen (Verknüpfungen) darstellen, also Knoten und Wege. Wenn Sie 
Informationen über das Editieren von Relationen suchen, gehen Sie einfach zum 
nächsten Abschnitt weiter.

Das Editieren der Basisdaten eines OSM Datensatzes ist eine Schlüsselfunktion 
des OSM Plugin. Dabei können Sie die Attribute, Lage oder Geometrie eines 
Objektes verändern und Sie können Objekte löschen oder neue hinzufügen. Alle 
Veränderungsschritte an den Knoten und Wegen werden gespeichert, sind 
über die Bearbeitungshistorie nachvollziehbar und können dann problemlos 
und korrekt wieder auf den OSM Server hochgeladen werden.

\minisec{Objekteigenschaften ändern}

Sie können Sie Eigenschaften (Tags) eines OSM Objektes in der Tabelle mit den 
Objekteigenschaften editieren. Die Tabelle befindet sich im OSM Objekte Dialog. 
Vergessen Sie dabei nicht, vorher ein Objekt abzufragen bzw. zu identifizieren.

\begin{figure}[ht]
   \begin{center}
   \caption{OSM Objekteigenschaften ändern \nixcaption}\label{fig:osmchfeattag}\smallskip
   \includegraphics[clip=true, width=12cm]{osm_changefeaturetag}
\end{center}
\end{figure}

Wenn Sie ein Attribut ändern möchten, klicken Sie einfach doppelt in die 
entsprechende Zeile der Spalte 'Value' und geben Sie einen neuen Wert ein. Wenn 
Sie ein Attribut entfernen wollen, klicken Sie in die entsprechende Zeile und 
dann auf den Knopf \button{gewählte Elemente löschen} rechts unterhalb der Tabelle.

Um ein neues Attribut zu erstellen, schreiben Sie einfach seinen Schlüssel und 
den Wert in die letzte Zeile der Tabelle, wo '<next tag value>' geschrieben steht. 
Beachten Sie, dass der Schlüssel eines bereits existierenden Attributs nicht 
verändert werden kann. Um das Editieren zu vereinfachen, gibt es ein paar 
Kombinationsfelder, in denen bereits alle vorkommenden Schlüssel mit ihren 
typischen Werten vorgegeben sind.

\minisec{Punkte erstellen}

Für das Erstellen von Punkten gibt es das Icon 
\toolbtntwo{osm_createPoint}{Punkt erzeugen} im OSM Objekt Dialog. Klicken Sie 
einfach auf das Icon und setzen Sie ein paar Punkte in die Karte. Wenn sich der 
Mauspfeil über existierenden Objekten befindet, werden diese markiert und deren 
Eigenschaften angezeigt. Wenn an der Stelle, an der Sie einen neuen Punkt 
erstellen wollen eine Linie oder ein Polygon markiert sind, dann wird der neue Punkt 
automatisch als neuer Mitgliedsstützpunkt dieses Objektes abgelegt. Wenn der neue 
Punkt über einem bereits existierenden Punkt erstellt werden soll, dann 
funktioniert das nicht. Stattdessen wird eine Fehlermeldung wie in Abbildung
\ref{fig:osmpoicreat} angezeigt.

\begin{figure}[ht]
   \begin{center}
   \caption{OSM Punkt Erstellungsnachricht \nixcaption}\label{fig:osmpoicreat}\smallskip
   \includegraphics[clip=true, width=8cm]{osm_pointcreation}
   \end{center}
\end{figure}

Der Mechanismus, den Anwender dabei zu unterstützen, eine Linie oder ein Polygon 
beim Digitalisieren zu treffen, wird snapping genannt und ist standardmäßig 
aktiviert. Wenn Sie einen Punkt sehr nahe an einer Linie platzieren wollen, aber 
nicht darauf, dann müssen Sie das Snapping erst deaktivieren, indem Sie gleichzeitig 
die \keystroke{Strg}-Taste gedrückt halten.

\minisec{Linien erstellen}

Für das Erstellen von Linien gibt es das Icon
\toolbtntwo{osm_createLine}{Linie erzeugen} im OSM Objekt Dialog. Klicken Sie
einfach auf das Icon und fügen Sie eine neue Linie in die Karte ein. Jeder Klick 
wird dabei als ein Mitgliedsstützpunkt der Linie gespeichert. Das Erstellen 
der Linie wird beendet, indem Sie auf die rechte Maustaste klicken. Die neue 
Linie erscheint dann automatisch im Kartenfenster. 

\textbf{Bemerkung}: Eine Linie mit weniger als zwei Mitgliedsstützpunkten kann nicht 
erstellt werden. In diesem Fall wird die Aktion einfach ignoriert.

Snapping wird für alle Stützpunkte durchgeführt, also zu allen Punkten eines 
Punktlayers und zu allen Mitgliedsstützpunkten eines Linien- oder Polygonlayers.
Snapping kann deaktiviert werden, indem Sie gleichzeitig zum Digitalisieren 
die \keystroke{Strg}-Taste gedrückt halten.

\minisec{Polygone erstellen}

Für das Erstellen von Polygonen gibt es das Icon
\toolbtntwo{osm_createPolygon}{Polygon erzeugen} im OSM Objekt Dialog. Klicken Sie
einfach auf das Icon und fügen Sie ein neues Polygon in die Karte ein. Jeder Klick
wird dabei als ein Mitgliedsstützpunkt des Polygons gespeichert. Das Erstellen
des Polygons wird beendet, indem Sie auf die rechte Maustaste klicken. Das neue
Polygon erscheint dann automatisch im Kartenfenster. 

\textbf{Bemerkung}: Ein Polygon mit weniger als drei Mitgliedsstützpunkten kann 
nicht erstellt werden. In diesem Fall wird die Aktion einfach ignoriert.

Snapping wird für alle Stützpunkte durchgeführt, also zu allen Punkten eines
Punktlayers und zu allen Mitgliedsstützpunkten eines Linien- oder Polygonlayers.
Snapping kann deaktiviert werden, indem Sie gleichzeitig zum Digitalisieren
die \keystroke{Strg}-Taste gedrückt halten.

\minisec{Kartenobjekte verschieben}

Wenn Sie ein Objekt verschieben wollen (egal welcher Art) nutzen Sie dazu das 
Icon \toolbtntwo{osm_move}{Objekt verschieben} im OSM Objekt Dialog. 
Dann können Sie mit dem Mauspfeil durch die Karte wandern (die Objekte werden 
dynamisch gekennzeichnet, wenn der Mauspfeil drüberfährt), und das Objekt 
auswählen, dass Sie verschieben möchten. Wenn ein falsches Objekt an der richtigen 
Stelle ausgewählt wurde, bleiben Sie mit dem Mauspfeil an der Stelle und klicken 
Sie mehrmals auf die rechte Maustaste, bis das richtige Objekt ausgewählt ist. Wenn 
Sie den Mauspfeil vorher bewegen, können Sie die Auswahl nicht mehr ändern. Nachdem 
Sie das Objekt verschoben haben, bestätigen Sie mit der linken Maustaste. 
Um das Verschieben abzubrechen, klicken Sie auf eine andere Maustaste.

Wenn Sie ein Objekt verschieben, das mit einem oder mehren Objekten verbunden ist, 
dann werden diese Verknüpfungen nicht beschädigt. Die anderen Objekte passen sich 
an die neue Position des verschobenen Objektes an.

Snapping wird bei diesen Operationen auch unterstützt, d.h.:

\begin{itemize}
\item Beim Verschieben eines eigenständigen Punktes (nicht Teil einer Linie oder 
eines Polygons) wird das Snapping auf alle Kartensegmente und Stützpunkte 
unterstützt.
\item Beim Verschieben eines Punktes, der ein Mitgliedsstützpunkt von Linien 
oder Polygonen ist, wird das Snapping auf alle Kartensegmente und Stützpunkte
unterstützt, außer zu eigenständigen Punkten.
\item Beim Verschieben einer Linie oder eines Polygons, wird Snapping auf alle 
Kartensegmente und Stützpunkte unterstützt. Beachten Sie, dass das Snapping beim 
OSM Plugin nur auf die drei am nächsten gelegenen Stützpunkte einer verschobenen 
Linie oder eines verschobenen Polygons durchgeführt wird. Ansonsten wäre die 
Operation sehr langsam. Snapping kann deaktiviert werden, indem Sie gleichzeitig 
zum Digitalisieren die \keystroke{Strg}-Taste gedrückt halten. 
\end{itemize}

\minisec{Kartenobjekte löschen}

Wenn Sie ein Objekt löschen wollen, dann müssen Sie es zuerst identifizieren, 
und klicken dann auf das Icon \toolbtntwo{osm_removeFeat}{Objekt löschen} im 
OSM Objekt Dialog. Wenn Sie eine Linie oder ein Polygon löschen, wird zum einen 
die Linie bzw. das Polygon gelöscht und zusätzlich auch alle Mitgliedsstützpunkte, 
die zu der Linie bzw. dem Polygon gehören.

Wenn Sie einen Punkt löschen, der auch Mitglied von einer Linie oder einem 
Polygon ist, wird der Punkt gelöscht und die Geometrien der Linie bzw. des 
Polygons werden geändert. Die neue Geometrie hat dann also weniger Stützpunkte 
als zuvor.

Wenn das Objekt ein Polygon mit genau drei Stützpunkten war, dann hat die 
neue Geometrie nur zwei Stützpunkte. Und weil es kein Polygon mit nur 
zwei Stützpunkten gibt, wird der Objekttyp automatisch zur Linie geändert.

Wenn das Objekt eine Linie mit genau zwei Stützpunkten war, dann hat die
neue Geometrie nur noch einen Stützpunkt. Und weil es keine Linie mit nur
einem Stützpunkt gibt, wird der Objekttyp automatisch zum Punkt geändert.

\subsubsection{Relationen editieren}\label{editing_osm_relation}

Aufgrund der Existenz von OSM Relationen können OSM Objekte in Gruppen 
mit gemeinsamen Eigenschaften zusammengefasst werden - so kann jedes 
mögliche Kartenobjekt dargestellt werden, z.B. die Grenzen einer Region 
(als Gruppe von Wegen und Punkten) oder eine Busroute. Jedes Mitglied 
einer Relation hat dabei ihre besondere Rolle. Es gibt eine recht gute
Unterstützung für OSM Relationen im QGIS Plugin. In den folgenden 
Abschnitten werden Sie sehen, wie man Relationen prüft, erstellt, 
aktualisiert oder entfernt.

\minisec{Relationen überprüfen}\label{examrelation}

Wenn Sie die Eigenschaften von Relationen sehen möchten, identifizieren Sie 
zuerst ein Objekt. Danach öffnen Sie den Reiter \tab{Relationen} im OSM 
Objekte Dialog. Oben im Reiter wird eine Liste aller Relationen des 
abgefragten Objektes angezeigt. Wählen Sie nun die gewünschte Relation aus, 
die Informationen dazu werden weiter unten angezeigt. In der ersten Tabelle 
mit dem Namen 'Relation Tags' finden Sie die Eigenschaften der gewählten 
Relation. In der Tabelle mit dem Namen 'Relation Mitglieder' werden 
Informationen über die Relation Mitglieder angezeigt. Wenn Sie ein Mitglied 
mit der Maus auswählen, wird das Plugin ein Gummiband um das Objekt in der 
Karte anzeigen.

\minisec{Relationen erstellen}

Es gibt zwei Möglichkeiten eine Relation zu erstellen:

\begin{enumerate}
\item Sie können das Icon \toolbtntwo{osm_createRelation}{Relation erstellen} 
im OSM Objekt Dialog verwenden.
\item Sie können sie im Reiter \tab{Relationen} des OSM Objekt Dialogs über 
das Icon \toolbtntwo{osm_addRelation}{Relation hinzufügen} erstellen.   
\end{enumerate}

In beiden Fällen erscheint ein Dialogfenster. Für den zweiten Fall wird das 
gerade ausgewählte Objekt automatisch als das erste Relationsmitglied 
angenommen, so dass der Dialog breits ein wenig vorausgefüllt ist. Bei der 
Erstellung einer Relation wählen Sie zuerst den Typ. Dabei können Sie 
einen vordefinierten Relationstyp verwenden oder Sie schreiben Ihren 
eigenen Typ. Dann geben Sie den Tag der Relation an und wählen Sie ihre 
Mitglieder.

Wenn Sie bereits eine Relation gewählt haben, versuchen Sie es mit dem Icon 
\toolbtntwo{osm_generateTags}{Tags erstellen}. Es erstellt typische Tags 
für den Relationstyp. Danach wird erwartet, dass Sie die Werte für den 
Schlüssel eintragen. Die Wahl von Relationsmitgliedern kann entweder durch 
das eintragen einer ID, eines Typ oder einer Rolle des Mitglieds stattfinden, 
oder Sie verwenden dazu das Werkzeug \toolbtntwo{osm_identify}{Abfragen} und 
klicken dazu in die Karte.

Am Ende, wenn Sie Typ, Tag und Mitglied ausgewählt haben, können Sie den 
Dialog abschicken. In diesem Fall erstellt das Plugin eine neue Relation. 

\minisec{Relationen ändern}

Wenn Sie eine bestehende Relation ändern möchten, müssen Sie diese zunächst 
ermitteln (die Schritte dazu sind im oberen Abschnitt 'Relationen überprüfen'
beschrieben. Danach klicken Sie im OSM Objekt Dialog auf das Icon 
\toolbtntwo{osm_editRelation}{Relation editieren}. Ein neuer Dialog erscheint, 
fast der gleiche, wie für das Erstellen einer Relation. Der Dialog ist bereits 
ausgefüllt mit Informationen über die existierende Relation. Sie können 
nun die Relation Tags, Mitglieder oder auch den Typ ändern. Nachdem Sie die 
Veränderungen abgeschickt haben, werden Sie auch committet.

\subsubsection{OSM Daten herunterladen}  

Um Daten direkt vom OSM Server herunterzuladen, klicken Sie auf das Icon 
\toolbtntwo{osm_download}{Download OSM data}. Wenn Sie das Icon nicht finden,
müssen Sie das Plugin erst aktivieren über das Menü
\mainmenuopt{Einstellungen} > \mainmenuopt{Werkzeuge} >
\dropmenuopt{OpenStreetMap}. Danach öffnet sich der Dialog und Sie finden 
folgende Funktionen:

\begin{figure}[ht]
   \begin{center}
   \caption{OSM download Dialog \nixcaption}\label{fig:osmdownload}\smallskip
   \includegraphics[clip=true, width=8cm]{osm_downloaddialog}
\end{center}
\end{figure}

\begin{description}
\item \textbf{Ausdehnung}: Hier wird ein Downloadbereich als Latitude und
Longitude angegeben. Da der OSM Server einige Einschränkungen hat, was 
die Datenmenge beim Download betrifft, darf das definierte Gebiet nicht zu 
groß sein. Weitere Informationen dazu werden angezeigt, wenn Sie auf das Icon 
\toolbtntwo{osm_questionMark}{Hilfe} klicken.
\item \textbf{Herunterladen nach}: Hier müssen Sie den Pfad angeben, unter 
dem die heruntergeladene Datei abgespeichert werden soll. Sie können dabei
auch den \button{\dots} Knopf zur Hilfe nehmen.
\item \textbf{Daten nach Laden automatisch öffnen}: Damit legen Sie fest, 
ob die Daten nach dem Download direkt dargestellt werden sollen oder nicht. 
Wenn Sie die Daten lieber später laden möchten, dann können Sie es 
mit dem Icon \toolbtntwo{osm_load}{Load OSM from file} tun.
\item \textbf{Aktuelle Daten ersetzen}: Wenn Sie dieses Kontrollkästchen
aktiviert haben, werden die aktuellen Daten, mit denen Sie gerade arbeiten
durch die neuen Daten ersetzt. Die alten Daten werden dadurch gelöscht. Wenn
Sie zum ersten Mal OSM Daten laden, ist diese Option entsprechend nicht
auswählbar.
\item \textbf{Benutzerdefinierte Darstellung}: Diese Option legt fest,
wieviele Details der Karte angezeigt werden sollen. Es gibt drei
Voreinstellungen, um eine OSM-Datei anzuzeigen. Verwenden Sie die
Standardeinstellung \button{Small scale}, wenn Sie die OSM Daten mit allen
Details sehen möchten, um etwas zu editieren. Ansonsten können Sie die beiden
Einstellungen \button{Medium scale} oder \button{Large scale} verwenden.
QGIS \CURRENT unterstützt momentan noch nicht das dynamische Umschalten
zwischen den verschiendenen Darstellungsvarianten.
\end{description}

Klicken Sie nun auf den Knopf \button{Herunterladen}.

Ein Dialogfenster wird Sie über den Stand des Herunterladens informieren. 
Wenn ein Fehler geschieht, wird dieser angezeigt. Nach erfolgreicher 
Beendigung schließen sich beide Fenster automatisch.

\subsubsection{OSM Daten hochladen}  

Beachten Sie, dass beim Hochladen immer der aktuelle OSM Datensatz benutzt 
wird. Bevor Sie den Dialog zum Hochladen von OSM Daten öffnen, gehen Sie 
sicher, dass der richtige Layer aktiv ist. 

Um ihre aktuellen Daten auf den OSM Server zu laden, klicken Sie auf das 
Icon \toolbtntwo{osm_upload}{Upload OSM data}. Wenn Sie das Icon nicht finden,
müssen Sie das Plugin erst aktivieren über das Menü
\mainmenuopt{Einstellungen} > \mainmenuopt{Werkzeuge} >
\dropmenuopt{OpenStreetMap}. Danach öffnet sich der Dialog und Sie finden
folgende Funktionen:

\begin{figure}[ht]
   \begin{center}
   \caption{OSM upload Dialog \nixcaption}\label{fig:osmupload}\smallskip
   \includegraphics[clip=true, width=8cm]{osm_uploaddialog}
\end{center}
\end{figure}

Im oberen Bereich des Dialogs können Sie überprüfen, ob Sie die richtigen Daten 
hochladen. Dort wird ein kurzer Name der aktuellen Datenbank angezeigt. In der 
Tabelle finden Sie Informationen darüber, wie viele Änderungen hochgeladen werden. 
Die Statistiken werden separat für jeden Objekttyp ausgewiesen.

In dem Feld 'Kommentieren Sie ihre Änderungen' können Sie kurze Informationen 
eintragen, die den Upload umschreiben. Schreiben Sie hier kurz, welche 
Datenänderungen Sie vorgenommen haben oder lassen Sie das Feld einfach leer.
Füllen Sie nun den Bereich 'OSM-Konto' aus, damit Sie sich beim Server 
authentifizieren können. Wenn Sie noch keinen Account für den OSM Server haben, 
können Sie es unter der URL \url{http://www.openstreetmap.org} machen. 
Danach klicken Sie auf den Knopf \button{Hochladen}, um den Uploadvorgang zu
starten.

\subsubsection{OSM Daten speichern}  

Um Daten eines aktuellen Kartenausschnitts als XML-Datei abzuspeichern, 
klicken Sie auf das Icon \toolbtntwo{osm_save}{Save OSM to file}. Wenn Sie 
das Icon nicht finden, müssen Sie das Plugin erst aktivieren über das Menü
\mainmenuopt{Einstellungen} > \mainmenuopt{Werkzeuge} >
\dropmenuopt{OpenStreetMap}. Danach öffnet sich der Dialog und Sie finden
folgende Funktionen:

\begin{figure}[ht]
   \begin{center}
   \caption{OSM saving Dialog \nixcaption}\label{fig:osmsave}\smallskip
   \includegraphics[clip=true, width=8cm]{osm_savedialog}
\end{center}
\end{figure}

Wählen Sie die Objekte aus, die Sie in der XML-Datei speichern wollen 
und den Dateinamen. Drücken Sie dann auf den Knopf \button{Ok}. Dadurch wird 
eine XML-Datei erstellt, in der alle Daten des aktuellen Kartenausschnitts 
gespeichert sind. Die OSM-Version der Ausgabe-Datei ist 0.6. Die Objekte 
der OSM-Daten (<Knoten>, <Wege>, <Relationen>) enthalten keine Informationen 
über ihre Changesets und UIDs. Diese Informationen sind noch nicht zwingend 
vorgeschrieben, siehe DTD OSM-XML-Version 0.6. Zudem sind die Objekte in der 
Ausgabedatei nicht geordnet.

Beachten Sie, dass nicht nur Daten aus dem aktuellen Kartenausschnitt 
gespeichert werden. In der Ausgabedatei werden komplette Polygone und 
Linien gespeichert, auch wenn sich nur ein kleiner Teil von ihnen im aktuellen 
Kartenausschnitt befindet. Für jede gespeicherte Linie und jedes gespeicherte 
Polygon werden alle Mitgliedstützpunkte mit abgespeichert.

\subsubsection{OSM Daten importieren}  

Um OSM Daten aus einem geöffneten, nicht OSM Vektorlayer zu importieren, 
wählen Sie den aktuellen OSM Datensatz indem Sie auf einen der Layer 
klicken und klicken Sie dann auf das Icon \toolbtntwo{osm_import}{Import 
data from a layer}. Wenn Sie das Icon nicht finden, müssen Sie das Plugin 
erst aktivieren über das Menü \mainmenuopt{Einstellungen} > 
\mainmenuopt{Werkzeuge} > \dropmenuopt{OpenStreetMap}. Daraufhin könnte 
folgendes Dialogfenster erscheinen:

\begin{figure}[ht]
   \begin{center}
   \caption{OSM import message dialog \nixcaption}\label{fig:osmimportmessage}\smallskip
   \includegraphics[clip=true, width=8cm]{osm_importdialog}
\end{center}
\end{figure}

In diesem Fall ist kein Vektorlayer geladen. Der Import muss von einem geladenen 
Vektorlayer stattfinden. Laden Sie also einen Vektorlayer, von dem Sie Daten 
importieren möchten. Beim zweiten Versuch sollte es klappen (vergessen Sie nicht, 
den aktuellen OSM-Layer wieder auszuwählen):

\begin{figure}[ht]
   \begin{center}
   \caption{Import data to OSM Dialog \nixcaption}\label{fig:osmimporttoosm}\smallskip
   \includegraphics[clip=true, width=8cm]{osm_importtoosmdialog}
\end{center}
\end{figure}

Benutzen Sie den 'Submit' Dialog, um die OSM Daten zu importieren. Wenn Sie 
sich nicht sicher sind, brechen Sie den Import ab.

