25. GRASS GIS Integration

Die GRASS-Integration stellt den Zugang zu GRASS GIS Datenbanken und Funktionalitäten (siehe GRASS-PROJECT in Literatur und Internetreferenzen) bereit. Die Integration besteht aus zwei Teilen: Anbieter und Plugin. Der Anbieter erlaubt das Browsen, Managen und Visualisieren von GRASS Raster- und Vektorlayern. Das Plugin kann verwendet werden, um neue GRASS Locations und Mapsets zu erstellen, die GRASS Region zu ändern, Vektorlayer zu erstellen oder zu verändern und GRASS 2-D und 3-D Daten mit Hilfe von mehr als 400 GRASS Modulen zu analysieren. In diesem Abschnitt führen wir in die Funktionalitäten des Anbieters und des Plugins ein und geben einige Beispiele zur Handhabung und Arbeit mit GRASS-Daten.

Der Anbieter unterstützt GRASS Version 6 und 7, das Plugin unterstützt GRASS 6 und 7 (ab QGIS 2.12). QGIS Distribution kann entweder Provider/Plugin für GRASS 6 oder GRAS 7 oder für beide Versionen gleichzeitig enthalten (Binärdateien haben unterschiedliche Dateinamen). Nur eine Version des Anbieters/Plugin kann zur Laufzeit jedoch geladen werden.

25.1. Beispieldatensatz

Als Beispiel nutzen wir den QGIS Alaska Datensatz (siehe Abschnitt Beispieldaten herunterladen). Er beinhaltet eine kleine Muster GRASS LOCATION mit drei Vektorlayern und einer Rasterhöhenkarte. Legen Sie eine neuen Ordner grassdata an, laden den QGIS ‚Alaska‘ Datensatz qgis_sample_data.zip von https://qgis.org/downloads/data/ herunter und entpacken die Datei nach grassdata.

More sample GRASS LOCATIONs are available at the GRASS website at https://grass.osgeo.org/download/data/.

25.2. GRASS Layer visualisieren

Wenn der Anbieter in QGIS geladen ist, wird für jeden Ordner der eine GRASS Location enthält das GRASS grassLogo Icon im QGIS Browser angezeigt. Gehen Sie im QGIS Browser zum Ordner grassdata und erweitern den Ordner alaska und das Mapset demo.

Sie können GRASS Raster- und Vektorebenen wie jeden anderen Layer aus dem Browser entweder durch Doppelklick auf Layer oder per Drag & Drop auf die Karte oder Legende laden.

Tipp

Probleme beim Laden von GRASS-Layern

Wenn Sie keine GRASS Locationitems sehen, überprüfen Sie Hilfe ->:Menüauswahl:`Über`Anbieter, ob GRASS Vektor-Anbieter geladen sind.

25.3. Daten in eine GRASS LOCATION importieren via drag and drop

In diesem Abschnitt wird Ihnen Beispielhaft gezeigt, wie Sie Raster- oder Vektordateien in eine GRASS Mapset laden.

  1. Navigieren Sie im QGIS-Browser zu dem Mapset, aus dem Sie Dateninformationen importieren wollen.

  2. Um QGIS Browser einen Layer zu finden, den Sie GRASS importieren möchten finden, beachten Sie, dass Sie eine andere Instanz des Browsers öffnen können (Browser Panel (2)), wenn Quelldaten zu weit von der mapset im Baum entfernt sind.

  3. Ziehen Sie einen Layer in die Zielkarte. Der Import nimmt unter Umständen für größere Layer etwas Zeit in Anspruch. Man sieht dann ein animiertes Icon import vor dem neuen Layer bis der Import abgeschlossen ist.

Wenn Rasterdaten in einem abweichenden KBS vorliegen, können sie mit Hilfe von Approximate (schnell) oder Exact (genau) transformiert werden. Wenn eine Verknüpfung zur Quelle des Rasters erstellt ist (mit Hilfe von r.external), haben die Quelldaten dasselbe KBS und das Format ist GDAL bekannt. Das KBS der Quelldaten wird verwendet. Man kann diese Optionen im Browser Reiter unter GRASS Optionen einstellen.

Wenn ein Quellraster mehr Kanäle hat, wird eine neue GRASS Karte für jede Schicht mit dem <Kanalnummerr> Suffix und eine Gruppe aller Karten mit rasterGroup Symbol erzeugt. Externe Raster haben ein anderes Symbol rasterLink.

25.4. GRASS Daten im QGIS Browser verwalten

  • Karten kopieren: GRASS Karten können zwischen Mapsets innerhalb der gleichen Stelle mit Drag & Drop kopiert werden.

  • Löschen von Karten: Rechtsklick auf eine GRASS Karte und wählen Sie :gui-Label:`Löschen` aus dem Kontextmenü.

  • Umbenennen von Karten: Rechtsklick auf eine GRASS Karte und wählen Sie: gui-Label: Umbenennen aus dem Kontextmenü.

25.5. GRASS Optionen

GRASS Optionen werden im GRASS Optionen Dialog eingestellt, welchen Sie auch durch Rechtsklick auf die Location oder das Mapset Element im Browser öffnen können, wenn Sie GRASS Optionen wählen.

25.6. GRASS Plugin starten

Um die GRASS Funktionalitäten in QGIS zu nutzen, muss das GRASS Plugin in den Erweiterungen ausgewählt und geladen werden. Man geht dazu im Menü zu Erweiterungen ► showPluginManager Erweiterungen verwalten und installieren…, wählt dort checkbox GRASS und klickt auf OK.

Die folgenden Haupteigenschaften werden beim Starten des GRASS Plugins im GRASS Menü bereitgestellt (Erweiterungen ► GRASS):

  • grassOpenMapset Mapset öffnen

  • grassNewMapset Neues Mapset

  • grassCloseMapset Schließe Mapset

  • grassTools GRASS-Werkzeugkiste öffnen

  • grassRegion Aktuelle GRASS-Region darstelllen

  • general GRASS Optionen

25.7. GRASS Mapset öffnen

Ein GRASS Mapset muss geöffnet werden, um Zugang zu den GRASS Tools im Plugin zu bekommen (die Werkzeuge sind deaktiviert, wenn kein Mapset geöffnet ist). Sie können ein Mapset aus dem Browser öffnen: Rechtsklick auf das Mapset Element und wählen Sie dann Mapset öffnen aus dem Kontextmenü.

25.8. Information zur GRASS-Datenbank

GRASS data are stored in a directory referred to as GISDBASE. This directory, often called grassdata, must be created before you start working with the GRASS plugin in QGIS. Within this directory, the GRASS GIS data are organized by projects stored in subdirectories called LOCATIONs. Each LOCATION is defined by its coordinate system, map projection and geographical boundaries. Each LOCATION can have several MAPSETs (subdirectories of the LOCATION) that are used to subdivide the project into different topics or sub-regions, or as workspaces for individual team members (see Neteler & Mitasova 2008 in Literatur und Internetreferenzen). In order to analyze vector and raster layers with GRASS modules, you generally have to import them into a GRASS LOCATION. (This is not strictly true – with the GRASS modules r.external and v.external you can create read-only links to external GDAL-supported datasets without importing them. This is not the usual way for beginners to work with GRASS, therefore this functionality will not be described here.)

../../../_images/grass_location.png

Abb. 25.1 GRASS Daten in der Alaska LOCATION

25.9. Daten in eine GRASS LOCATION importieren

Siehe Abschnitt import_data dnd um herauszufinden, wie die Daten einfach importiert per Drag & Drop in den Browser importert werden können.

Dieser Abschnitt zeigt ein Beispiel wie man Raster- und Vektordaten in die ‚alaska‘ GRASS LOCATION aus dem QGIS ‚Alaska‘ Datensatz in einem üblichen Weg, mit Hilfe von Standard GRASS Modulen, importiert. Daher verwenden wir die Landcover Rasterkarte landcover.img und die GML Vektorkarte lakes.gml aus dem QGIS ‚Alaska‘ Datensatz (siehe Beispieldaten herunterladen).

  1. Starten Sie QGIS und laden Sie das GRASS Plugin, falls dies noch nicht geschehen ist.

  2. Klicken Sie in der GRASS Werkzeugleiste das grassOpenMapset Mapset öffnen Icon um den Wählen Sie ein GRASS Mapset Assistenten zu starten.

  3. Wählen Sie als GRASS Datenbank den Ordner grassdata im QGIS Alaska Datensatz, als LOCATION ‚alaska‘, als MAPSET ‚demo‘ und klicken auf OK.

  4. Nun klicken Sie auf das Icon grassToolsGRASS-Werkzeugkiste öffnen, damit die GRASS Werkzeuge (siehe Abschnitt Die GRASS Werkzeugkiste) zur Verfügung stehen.

  5. Um die Rasterkarte landcover.img zu importieren, drücken Sie auf das Modul r.in.gdal im Modulbaum Reiter. Diese GRASS Module ermöglicht es, GDAL-unterstützte Rasterdateien in eine GRASS LOCATION zu importieren.

  6. Browsen Sie zum Ordner raster im QGIS ‚Alaska‘ Datensatz und wählen Sie die Datei landcover.img.

  7. Geben Sie als Ausgabe-Rasterkarte landcover_grass ein und klicken auf Starten. Im Reiter Ergebnis sehen Sie das aktuell ausgeführte GRASS Kommando r.in.gdal -o input=/path/to/landcover.img output=landcover_grass.

  8. Klicken Sie nach der Ausgabe Erfolgreich beendet auf Ergebnis visualisieren. Der Rasterlayer landcover_grass ist nun in GRASS importiert und wird im QGIS Arbeitsbereich angezeigt.

  9. Um die GML Vektordatei lakes.gml zu importieren klicken Sie das Modul v.in.ogr im Modulbaum Reiter. Dieses GRASS Modul ermöglicht den Import con OGR-unterstützen Vektordateien in eine GRASS LOCATION. Der Moduldialog für v.in.ogr erscheint.

  10. Browsen Sie zum Ordner gml im QGIS 'Alaska' Datensatz und wählen Sie die Datei :file:`lakes.gml als OGR Datei aus.

  11. Vergeben Sie lakes_grass als Ausgabe-Vektorkarte und klicken auf Starten. Sie brauchen sich um die anderen Optionen in diesem Beispiel nicht kümmern. Im Reiter Ergebnis sehen Sie das aktuell ausgeführte GRASS Kommando v.in.ogr -o dsn=/path/to/lakes.gml output=lakes\_grass.

  12. Klicken Sie nach Erscheinen der Ausgabe Erfolgreich beendet auf Ergebnis visualisieren. Der Vektorlayer lakes_grass ist nun in GRASS importiert und wird im QGIS Arbeitsbereich dargestellt.

25.9.1. Eine neue GRASS LOCATION erstellen

Als ein Beispiel möchten wir Ihnen zeigen, wie die GRASS LOCATION des Alaska Beispieldatensatzes erstellt wurde. Das Koordinatenbezugssystem ist Albers Equal Area mit der Einheit ‚feet‘. Diese GRASS :file:` LOCATION alaska` wird für alle GRASS GIS Beispiele verwendet. Es ist also sinnvoll, sich diesen Datensatz zu installieren (siehe Abschnitt Beispieldaten herunterladen).

  1. Starten Sie QGIS und laden Sie das GRASS Plugin, falls dies noch nicht geschehen ist.

  2. Laden Sie die Shapedatei alaska.shp aus dem QGIS Alaska Datensatz (see Beispieldaten herunterladen) in QGIS ein (see section Loading a layer from a file).

  3. Klicken Sie in der GRASS Werkzeugleiste auf das grassNewMapset Neues Mapset Icon um den Neues Mapset Assistenten zu öffnen.

  4. Wählen Sie einen vorhandenen GRASS Datenbankordner (GISDBASE) grassdata oder legen Sie für die neue LOCATION mit Hilfe des Dateimanagers einen neuen Ordner an. Klicken Sie dann auf Weiter.

  5. We can use this wizard to create a new MAPSET within an existing LOCATION (see section Eine neue GRASS MAPSET erstellen) or to create a new LOCATION altogether. Select radioButtonOn Create new location (see Abb. 25.2).

  6. Gebe einen Namen für die LOCATION an – wir verwendeten ‚alaska‘ – und klicke auf Weiter.

  7. Definieren Sie die Projektion indem Sie den Radiobutton radioButtonOn Projektion zum Aktivieren der Projektionsliste klicken.

  8. Wir benutzen Albers Equal Area Alaska (Fuß) Projektion. Da wir zufällig wissen dass es durch den EPSG ID 2964 repräsentiert wird geben wir dies in das Suchfenster ein. (Bemerkung: Wenn Sie diesen Ablauf für eine andere LOCATION und Projektion wiederholen wollen und Sie die EPSG ID nicht gespeichert haben, klicken Sie auf das projectionEnabled KBS-Status Icon in der unteren rechten Ecke der Statusleiste (siehe Abschnitt Arbeiten mit Projektionen)).

  9. Geben Sie bei Filter 2964 ein um die Projektion auszuwählen.

  10. Klicken Sie auf Weiter.

  11. Um die voreingestellte Region zu bestimmen, muss man die Grenzen der LOCATION im Norden, Süden, Osten und Westen angeben. Wir klicken einfach auf den Knopf Setze aktuelle QGIS-Ausdehnung, um die Ausdehnung des in QGIS geladenen Layers alaska.shp als voreingestellte GRASS-Region zu verwenden.

  12. Klicken Sie auf Weiter.

  13. Wir müssen außerdem ein MAPSET innerhalb unserer neuen LOCATION vorgeben (das ist beim Erstellen einer neuen LOCATION erforderlich). Sie können hier einen beliebigen Namen vergeben, wir verwendeten ‚demo‘. GRASS erstellt automatisch ein spezielles MAPSET mit Namen PERMANENT, das die Hauptdaten des Projekts, die vorgegebene Ausdehnung und die Vorgaben zum Koordinatensystem speichert (siehe auch Neteler & Mitasova 2008 in Literatur und Internetreferenzen).

  14. Sehen Sie sich die Zusammenfassung an und vergewissern sich, dass alles korrekt ist und klicken anschließend auf Abschließen.

  15. Die neue LOCATION, ‚alaska‘, und zwei MAPSETs, ‚demo‘ und ‚PERMANENT‘ werden erstellt. Die gerade geöffnete Arbeitsumgebung ist ‚demo‘, wie Sie es definiert haben.

  16. Beachten Sie, dass einige Werkzeuge des GRASS Plugins grau hinterlegt waren und nun auch zur Verfügung stehen.

../../../_images/create_grass_location.png

Abb. 25.2 Erstellen einer neuen GRASS LOCATION oder einer neuen MAPSET in QGIS

Wenn das wie eine Menge von Schritten schien ist es doch nicht so schlimm und ein schneller Weg eine LOCATION zu erstellen. Die LOCATION ‚alaska‘ is jetzt bereit für den Datenimport (siehe Abschnitt Daten in eine GRASS LOCATION importieren). Sie können auch die bereits bestehenden Vektor- und Rasterdaten in der Beispiel GRASS LOCATION ‚alaska‘ verwenden, die im |qg| ‚Alaska‘ Datensatz Beispieldaten herunterladen enthalten ist und weiter zu Abschnitt Das GRASS Vektormodell gehen.

25.9.2. Eine neue GRASS MAPSET erstellen

Ein Benutzer hat nur Schreibzugriff auf eine MAPSET die er oder sie erstellt hat. Das heißt dass Sie neben dem Zugriff zu Ihrer eigenen MAPSET Sie Karten in MAPSETs anderer Benutzer lesen können (und Sie können Ihre lesen) aber Sie nur die Karten in Ihrer eigenen MAPSET verändern und löschen können.

Alle MAPSETs beinhalten eine WIND Datei die die aktuellen Grenzkoordinatenwerte und die aktuell ausgewählte Rasterauflösung speichert (siehe Neteler & Mitasova 2008 in Literatur und Internetreferenzen, und Abschnitt Einstellung der GRASS Region).

  1. Starten Sie QGIS und laden Sie das GRASS Plugin, falls dies noch nicht geschehen ist.

  2. Klicken Sie in der GRASS Werkzeugleiste auf das grassNewMapset Neues Mapset Icon um den Neues Mapset Assistenten zu öffnen.

  3. Wählen Sie den GRASS Datenbankordner (GISDBASE) grassdata mit der LOCATION ‚alaska‘ aus wo Sie eine weitere MAPSET genannt ‚test‘ hinzufügen wollen.

  4. Klicken Sie auf Weiter.

  5. We can use this wizard to create a new MAPSET within an existing LOCATION or to create a new LOCATION altogether. Click on the radio button radioButtonOn Select location (see Abb. 25.2) and click Next.

  6. Geben Sie den Namen test ein für ein neues MAPSET. Unten im Wizard sehen Sie eine Liste aller existierenden MAPSETs und ihrer Eigentümer.

  7. Klicken Sie auf Weiter, vergewissern Sie sich, dass alle Angaben richtig sind und klicken auf Abschließen.

25.10. Das GRASS Vektormodell

Es ist wichtig, das :index:`GRASS Vektordaten Modell ‚vor der Digitalisierung zu verstehen. Im Allgemeinen verwendet GRAS ein topologisches Vektormodell. Das bedeutet, dass Flächen nicht als geschlossene Polygone vorhanden sind, sondern als ein oder mehrere Umrandungen (Boundaries). Eine Umrandung (Boundary) zwischen zwei aneinander grenzenden Flächen ist nur einmal digitalisiert worden; beide Flächen teilen sich diese Umrandung. Umrandungen dürfen keine Lücken haben. Eine Fläche besteht also aus einer Umrandung und einem Zentroid, der diese Fläche als ein sog. Labelpunkt mit einer Attributtabelle verknüpft.

Neben den Umrandungen und Zentroiden kann eine Vektorkarte selbstverständlich auch Punkte und Linien enthalten. Alle diese Geometrieelemente können innerhalb ein und dem selben Datensatz enthalten sein. Sie werden in unterschiedlichen ‚Ebenen‘ innerhalb von QGIS dargestellt. Auch wenn es möglich ist, Geometrieelemente zu mischen, so ist es eigentlich unüblich und wird normalerweise auch in GRASS GIS nur selten verwendet. Etwa bei Netzwerkanalysen. Im Normalfall sollten Sie versuchen, unterschiedliche Geometrietypen in unterschiedlichen Datensätzen (Layern) zu speichern.

Es ist auch möglich, unterschiedliche Inhalte des gleichen Geometrietyps in verschiendenen Ebenen eines Vektorlayers zu speichern. Beispielsweise können Felder, Wälder und Seen in einem Vektordatensatz gespeichert werden. Angrenzende Seen, Felder und Wälder teilen sich dann die gleiche Umrandung, jedoch haben sie separate Attributtabellen, die über ihre Ebene angesprochen wird. Darüber hinaus können Sie auch Attribute für die Umrandungen vergeben, falls eine Umrandung gleichzeitg einen Weg darstellt. In diesem Fall könnte auch die Umrandung eine separate Attributtabelle haben.

Die ‚Ebene‘ eines jeden Objektes wird in GRASS intern als ‚layer‘ bezeichnet. ‚Layer‘ ist die Nummer die definiert ob es mehr als einen Layer innerhalb des Datensatzes gibt (z.B. ob die Geometrie Wald oder See ist). Vorerst kann dies nur eine Nummer sein. In Zukunft wird GRASS auch Namen als Felder in der Benutzeroberfläche unterstützen.

Attribute können innerhalb der GRASS LOCATION als dBase oder SQLite3 oder in externen Datenbanktabellen abgelegt werden, z.B. PostgreSQL, MySQL, SQLITE3, etc.

Die Attribute in den Tabellen werden über ein sog. ‚Kategoriefeld‘ an die Geometrien des Datensatzes gehängt.

Die ‚Kategorie‘ (oder key, ID, etc) ist eine Ganzzahl, über die eine Verknüpfung zwischen den Geometrien und den Spalten in der Datenbanktabelle hergestellt wird.

Tipp

Das GRASS Vektormodell verstehen

The best way to learn the GRASS vector model and its capabilities is to download one of the many GRASS tutorials where the vector model is described more deeply. See https://grass.osgeo.org/learn/manuals/ for more information, books and tutorials in several languages.

25.11. Einen neuen GRASS Vektorlayer erstellen

Um einen neuen GRASS Vektorlayer zu erzeugen, wählen Sie eines der folgenden Elemente aus dem Mapset Kontextmenü im Browser:

  • Neuer Punktlayer

  • Neuer Linienlayer

  • Neuer Polygonlayer

und einen Namen in das Dialogfeld eingeben. Eine neue Vektorkarte wird erstellt und der Layer dem Kartenfenster hinzugefügt und die Bearbeitung gestartet. Einen Typ des Layers zu wählen beschränkt nicht den Geometrietypen, der in der Vektorkarte digitalisiert werden kann. In GRASS ist es möglich, alle Arten von Geometrietypen (Punkt, Linie und Polygon) in einer Vektorkarte zu organisieren. Der Typ wird nur verwendet, um die Layer dem Kartenfenster hinzuzufügen, da QGIS von dem Layer fordert eine bestimmte Art zu haben.

Es ist auch möglich, Layer bestehenden Vektorkarten hinzuzufügen, wählen Sie ein Element oben aus dem beschriebenen Kontextmenü der bestehenden Vektorkarte.

GRASS GIS erlaubt es aufgrund des topologischen Datenmodells, die verschiedenen Geometrietypen (Punkt, Linie und Fläche) in einem Vektorlayer abzuspeichern. Aus diesem Grund ist es nicht notwendig im Vorfeld einen Geometrietyp festzulegen. Dies unterscheidet sich von der Erstellung eines neuen Shapefile in QGIS, denn Shapefiles verwenden das Simple Feature Vektormodell (siehe Abschnitt Neue Vektorlayer erstellen).

25.12. Digitalisieren und Editieren eines GRASS Vektorlayers

GRASS Vektorebenen können mit den Standard QGIS Digitalisierfunktionen werden digitalisiert. Es gibt jedoch einige Besonderheiten, die Sie kennen sollten, aufgrund

  • GRASS topologischen Modell im Vergleich zu einfachen QGIS Funktion

  • Komplexität von GRASS-Modellen

    • mehrere Layer in einer Karte

    • mehrere Geometrietypen in einer Karte

    • Geometrieteilung von mehreren Objekte durch mehrere Layer

Die Besonderheiten sind in den folgenden Abschnitten besprochen.

Speichern, Änderungen verwerfen, rückgängig machen, wiederholen

Warnung

Alle während der Bearbeitung vorgenommenen Änderungen werden sofort auf Vektorkarten und die dazugehörigen Attributtabellen geschrieben.

Die Änderungen werden nach jeder Operation geschrieben, es ist jedoch möglich, Rückgängig/Wiederholen zu wählen oder alle Änderungen zu verwerfen, wenn die Bearbeitung geschlossen wird. Wenn Änderungen rückgängig gemacht werden oder Änderungen verworfen werden, wird der ursprüngliche Zustand in der Vektorkarte neu geschrieben und die der Attributtabellen.

Es gibt zwei Hauptgründe für dieses Verhalten:

  • Es ist die Natur von GRASS-Vektoren aus Überzeugung zu kommen, dass der Benutzer tun will, was er tut und es ist besser, dass die Daten gespeichert werden, wenn die Arbeit plötzlich unterbrochen wird (z. B. Stromausfall)

  • Die Notwendigkeit für eine effektive Bearbeitung von topologischen Daten visualisiert Informationen über die topologische Korrektheit, solche Informationen können nur von GRASS Vektorkarte erworben werden, wenn Änderungen an der Karte vorgenommen werden.

Werkzeugleiste

Die ‚Digitalisierungsleiste‘ hat einige spezielle Werkzeuge, wenn Sie einen GRASS Layer bearbeiten:

Icon

Werkzeug

Zweck

capturePoint

Neuer Punkt

Digitalisiert neuen Punkt

captureLine

Neue Linie

Digitalisiert neue Linie

captureBoundary

Neue Grenze

Digitalisiert neue Grenze

captureCentroid

Neuer Zentroid

Digitalisiert neuen Zentroiden (Labelpunkt für eine existierende Fläche)

capturePolygon

Neue geschlossene Grenze

Digitalisiert neue geschlossene Grenze

Tabelle Digitalisierung GRASS: GRASS Digitalisierungstools

Tipp

Polygone in GRASS digitalisieren

Wenn Sie ein Polygon innerhalb eines GRASS Vektorlayers erstellen wollen, digitalisieren Sie zuerst die Boundary der Fläche. Danach fügen Sie einen Zentroid (Labelpunkt) hinzu. Der Grund ist, dass in topologischen Layern die Attributinformationen einer Fläche immer mit dem Zentroiden und nicht mit der Grenze verknüpft werden.

Kategorie

Kategorie, die oft als cat bezeichnet wird, ist eine Art von ID. Der Name stammt aus Zeiten, in denen GRASS-Vektoren nur einzelne Attribut „Kategorien“ hatten. Kategorien werden als Bindeglied zwischen Geometrie und Attribute verwendet. Eine einzelne Geometrie kann mehrere Kategorien haben und somit mehrere Funktionen in verschiedenen Layern darstellen. Derzeit ist es möglich, nur eine Kategorie pro Layer mit QGIS Werkzeugen zu bearbeiten. Neue Funktionen haben automatische neue einzigartige Kategorien, ohne Grenzen. Grenzen bilden in der Regel nur Bereiche und stellen keine lineare Funktionen dar, es ist jedoch möglich, Attribute für eine Grenze später zu definieren, beispielsweise in einer anderen Ebene.

Neue Kategorien werden immer nur in derzeit bearbeiteten Layern erstellt.

Es ist nicht möglich mehrere Kategorien zuweisen, um die Geometrie mit QGIS zu bearbeiten, solchen Daten werden wie mehrere Funktionen dargestellt und einzelne Merkmale, auch aus verschiedenen Schichten, können gelöscht werden.

Attribute

Die Attribute des aktuell bearbeiteten Layer können nur geändert werden, wenn die Vektorkarte mehrere Layer enthält, Merkmale anderer Layer werden alle ‚<nicht editierbar (layer#)>‘ eingestellt, so werden Sie gewarnt, dass solche Attribut nicht editierbar sind. Der Grund dafür ist, dass andere Layer in der Regel andere Gruppe von Feldern haben und haben können, während QGIS nur einen festen Satz von Feldern pro Layer unterstützt.

Wenn einer Geometrie primitive nicht eine Kategorie zugeordnet ist, wird eine neue einzigartige Kategorie automatisch zugeordnet und eine neue Eintragung in der Attributtabelle erstellt, wenn ein Attribut dieser Geometrie verändert wird.

Tipp

Wenn Sie Bulk-Aktualisierung von Attributen in der Tabelle machen wollen, zum Beispiel mit dem ‚Feldrechner‘ (Using the Field Calculator), und es einige Funktionen ohne Kategorie gibt, die Sie nicht aktualisieren wollen (in der Regel Grenzen) , können Sie diese in dem „Erweiterten Filter‘ auf cat is not null einstellen.

Stil editieren

Die topologische Symbologie ist für eine effektive Bearbeitung von topologischen Daten wesentlich. Bei Beginn der Bearbeitung, eine spezialisierter Renderer ‚GRASS Bearbeiten‘ wird automatisch auf die Ebene gesetzt und der ursprüngliche Renderer wiederhergestellt, wenn die Bearbeitung geschlossen ist. Der Stil kann in den Layereigenschaften im ‚Stil‘ Reiter angepasst werden. Der Stil kann auch in der Projektdatei oder in einer separaten Datei gespeichert werden. Wenn Sie den Stil anpassen, ändern sich nicht seinen Namen, weil er zurückgesetzt wird, wenn das Bearbeiten erneut gestartet wird.

Tipp

Speichern Sie die Projektdatei nicht, wenn der Layer bearbeitet wird, dies würde den Layer mit ‚Edit Style‘ speichern, was keine Bedeutung hat, wenn der Layer nicht bearbeitet wird.

Der Stil basiert auf topologischen Informationen, die vorübergehend als Feld ‚topo_symbol‘ der Tabelle hinzugefügt wird. Das Feld wird automatisch entfernt, wenn die Bearbeitung abgeschlossen ist.

Tipp

Entfernen Sie nicht das ‚topo_symbol‘ Feld aus der Attributtabelle, das würde das Objekt unsichtbar machen, weil die Darstellung basiert auf dieser Spalte.

Objektfang

Um einen Bereich zu bilden, müssen Ecken verbundener Grenzen genau die gleichen Koordinaten haben. Dies kann mit dem Schnappen Werkzeug erreicht werden, wenn Kartenfenster und Vektorkarte das gleiche KBS haben. Ansonsten, koordiniert durch Umwandlung von Karte auf Kartenfenster und wieder zurück, können die Koordinaten etwas unterschiedlich wegen Darstellungsfehler und KBS Transformationen werden.

Tipp

Layer KBS verwenden, auch für das Fenster während dem editieren.

Einschränkungen

Die gleichzeitige Bearbeitung von mehreren Layern innerhalb des gleichen Vektors wird nicht unterstützt. Dies ist vor allem deswegen unmöglich, durch das nicht händeln mehrere Handhabungs Stacks für eine einzelne Datenquelle.

nix osx Unter Linux und macOS kann jeweils nur ein GRASS layer bearbeitet werden. Das liegt an einem Fehler in GRASS der es nicht erlaubt, Datenbanktreiber in zufälliger Reihenfolge zu schließen. Der Fehler wird von den GRASS Entwicklern behoben.

Tipp

GRASS Schreibberechtigung

Sie müssen der Besitzer der GRASS MAPSET, die Sie bearbeiten wollen, sein. Es ist unmöglich Datenlayer in einer MAPSET die Ihnen nicht gehört zu bearbeiten, auch wenn Sie Schreibrechte darauf haben.

25.13. Einstellung der GRASS Region

Die Region Einstellung (Einstellung eines räumlichen Arbeitsfensters) in GRASS ist wichtig für das Arbeiten mit Rasterlayern. Vektoranalysen sind standardmäßig nicht auf eine definierte Region Definition begrenzt. Aber alle neu erstellten Raster werden die räumliche Ausdehnung und Auflösung der gerade definierten GRASS Region haben, unabhängig von Ihrer ursprünglichen Ausdehnung und Auflösung. Die aktuelle GRASS Region ist in der $LOCATION/$MAPSET/WIND Datei gespeichert und Sie definiert die Nord-, Süd-. Ost- und Westgrenze, die Anzahl von Spalten und Reihen sowie die horizontale und vertikale räumliche Auflösung.

Es ist auch möglich, die Region mit dem Knopf grassRegion Aktuelle GRASS-Region darstellen aus- bzw. einzuschalten.

Die Region kann im Reiter ‚Region‘ im ‚GRASS-Werkzeuge‘ Widget angepasst werden. Man kann die neuen Grenzen und die neue Auflösung hier eingeben und auf Anwenden drücken. Durch Drücken auf den Knopf Ausdehnung durch Ziehen auf der Karte wählen kann die Region interaktiv durch Ziehen eines Rechteckes mit der Maus im QGIS Arbeitsbereich festgelegt werden.

Das GRASS Modul g.region bietet viele weitere Optionen zur Einstellung der passenden Ausdehnung und Auflösung der Region für die Rasteranalyse. Das Modul g.region können Sie über die GRASS Werkzeugkiste nutzen, wie in Kapitel Die GRASS Werkzeugkiste beschrieben.

25.14. Die GRASS Werkzeugkiste

Die grassTools GRASS-Werkzeugkiste ermöglicht es, GRASS Module auf Daten innerhalb einer ausgewählten GRASS LOCATION und MAPSET anzuwenden. Dazu muss im Vorfeld eine GRASS LOCATION und MAPSET geöffnet werden, in der Sie Schreibrechte besitzen. Dies ist normalerweise garantiert, wenn Sie die MAPSET selbst erstellt haben und notwendig, damit die Ergebniskarten der Raster- und Vektoranalysen in der ausgewählten LOCATION und :file:`MAPSET gespeichert werden können.

../../../_images/grass_toolbox_moduletree.png

Abb. 25.3 GRASS Werkzeuge und Modulbaum

25.14.1. Arbeiten mit GRASS Modulen

Die GRASS Shell der Werkzeugkiste bietet Zugriff auf fast alle (mehr als 300) GRASS Module über die Kommandozeile. Um eine benutzfreundlichere Umgebung zu bieten, sind davon etwa 200 Module graphisch auswählbar und bieten einen Dialog in Form eines zusätzlichen Reiters in der Werkzeugkiste.

Eine vollständige Liste der GRASS-Module, die in der grafischen Toolbox in der QGIS-Version | CURRENT | verfügbar sind ist im GRASS-Wiki unter https://grasswiki.osgeo.org/wiki/GRASS-QGIS_relevant_module_list verfügbar.

Es ist außerdem möglich, die GRASS Werkzeugkiste anzupassen und weitere Module zu integrieren. Die Herangehensweise ist in Abschnitt Anpassen der Module beschrieben.

As shown in Abb. 25.3, you can look for the appropriate GRASS module using the thematically grouped Modules Tree or the searchable Modules List tab.

Wenn Sie auf das grafische Icon eines Modules klicken, öffnet sich ein neuer Moduldialog mit drei Reitern Optionen, Ergebnis und Handbuch.

Optionen

Der Reiter Optionen stellt Ihnen in vereinfachter Form die unbedingt notwendigen Eingabeparameter zur Verfügung, die das Modul zum Laufen benötigt.

../../../_images/grass_module_option.png

Abb. 25.4 GRASS Werkzeuge Modul Optionen

Die zur Verfügung gestellten Modulparameter sind oftmals nicht vollständig um den Dialog einfach zu halten. Wenn Sie weitergehende Modulparamter und -flags verwenden wollen müssen Sie die GRASS Shell starten und das Programm in der Kommandozeile benutzen.

Eine neue Funktion seit der QGIS Version 1.8.0 ist der Knopf Fortgeschrittene Optionen einblenden unterhalb der vereinfachten Moduldialoge im Reiter Optionen. Momentan ist diese Funktion nur für das Modul v.in.ascii umgesetzt. Es ist aber zukünftig für weitere Module vorgesehen und wird so die kompletten Funktionen der GRASS Module grafisch bereitstellen, ohne die GRASS Shell und somit die Kommandozeile benutzen zu müssen.

Ergebnis

../../../_images/grass_module_output.png

Abb. 25.5 GRASS Werkzeuge Modul Ergebnis

Der Reiter Ergebnis stellt Informationen über den Ausgabestatus des Moduls bereit. Nach Klick auf den Starten Knopf wechselt das Modul zum Reiter Ergebnis und zeigt Informationen über die Abarbeitung des Prozesses. Wenn alles funktioniert, erscheint schlussendlich die Meldung Erfolgreich beendet.

Handbuch

../../../_images/grass_module_manual.png

Abb. 25.6 GRASS Werkzeuge Modul Handbuch

Der Reiter Handbuch zeigt die HTML Hilfeseite der GRASS Module. Sie können es zum Überprüfen weitergehender Modulparameter oder -flags oder um vertieftere Kenntnisse über den Anwendungszweck der Module zu erwerben benutzen. Am Ende jeder Modul Handbuchseite sehen Sie weiterführende Links zum Main Help index, dem Thematic index und dem Full index. Diese Links stellen die gleiche Information wie das Modul g.manual zur Verfügung.

Tipp

Ergebnisse direkt anzeigen

Wollen Sie Ihre Ergenisse direkt in der Kartenansicht ansehen, nutzen Sie den Knopf ‚Ergebnis visualisieren‘ im unteren Bereich des jeweiligen Modulreiters

25.14.2. GRASS Beispielanwendung

Die folgenden Beispiele sollen die Anwendung verschiedener GRASS Module demonstrieren.

25.14.2.1. Höhenlinien aus einem DGM erstellen

Im ersten Beispiel wird eine Höhenlinienkarte aus einem Höhenraster (DEM) erstellt. Hier wird angenommen dass Sie die Alaska LOCATION wie in Abschnitt Daten in eine GRASS LOCATION importieren eingerichtet haben.

  • Als erstes öffnen Sie die Location, indem Sie auf das grassOpenMapsetMapset öffnen Icon klicken und dann die Alaska Location auswählen.

  • Als nächstes drücken Sie auf das Icon grassTools GRASS-Werkzeugkiste öffnen.

  • In der Liste von Werkzeugkategorien doppelklicken Sie auf Raster ► Oberflächenverwaltung ► Vektorkonturlinien erzeugen.

  • Jetzt wird ein einfacher Klick auf das Werkzeug r.contour einen Werkzeugdialog wie oben beschrieben öffnen (siehe Arbeiten mit GRASS Modulen).

  • Geben Sie gtopo30 in Name des EIngaberasters ein.

  • Geben Sie im Feld Abstand zwischen den Kontourintervallen selectNumber den Wert 100 an. (Dadurch werden Höhenlinien in einem Abstand von 100m erstellt.)

  • In das Feld Name der Vektorausgabekarte geben Sie den Namen hoehen_100 an.

  • Klicken Sie auf Starten um die Verarbeitung zu starten. Warten Sie bis die Meldung Erfolgreich beendet im Ergebnisfenster erscheint. Drücken Sie dann auf Ergebnis visualisieren und Schließen.

Da die aktuelle GRASS Region ziemlich groß ist, kann es eine Weile dauern, bis der Layer vollständig dargestellt wird. Danach können Sie noch die Layereigenschaften verändern und eine Farbe für die Linien auswählen, die sich deutlich vom Höhenmodell unterscheidet, siehe Vektorlayereigenschaften.

Als nächstes zoomen Sie in einen bergigen Bereich im Zentrum Alaskas. Wenn Sie weit genug in die Karte hineingezoomt sind, werden Sie erkennen, dass die Höhenlinien teilweise sehr eckig erscheinen. Um das Erscheinungsbild zu optimieren, bietet GRASS ein Modul mit dem Namen v.generalize. Dabei wird mit Hilfe des Douglas Peuker Algorithmus und der einer Reduktion der Stützpunkte eine Glättung der Linien erreicht, ohne die Geometrien zu zerstören. Da der Ergebnislayer weniger Stützpunkte hat, ist er auch kleiner und kann schneller geladen werden. Die Analyse wird z.B. angewendet, wenn man sehr detailierte Daten nur in einem kleinen Maßstab anzeigen möchte.

Tipp

Geometrien in QGIS vereinfachen

Beachten Sie, dass es in QGIS das Werkzeug Vektor ► Geometrie-Werkzeuge ► Vereinfachen gibt, dass ähnlich dem GRASS v.generalize Douglas-Peuker-Algorithmus arbeitet.

In diesem Beispiel wollen wir nun aber etwas anderes erreichen. Die Höhenlinien, die wir mit r.contour erstellt haben, zeigen teilweise sehr scharfe Winkel, die wir glätten möchten. Unter den Algorithmen des Moduls v.generalize befindet sich auch der Chaikens-Algorithmus, der exakt das macht, was wir möchten (auch Hermite Splines). Achten Sie aber darauf, dass es passieren kann, dass Stützpunkte nicht nur eliminiert sondern auch hinzugefügt werden können. Dadurch kann der Layer wieder langsamer geladen werden.

  • Öffnen Sie die GRASS Werkzeugkiste und doppelklicken Sie die Kategorien Vektor ► Karte entwickeln ► Generalisierung und klicken Sie dann auf das v.generalize Modul um sein Optionsfenster zu öffnen.

  • Stellen Sie sicher, dass ‚hoehen_100‘ als Vektorlayer in Feld Name der Vektoreingabekarte erscheint.

  • Wählen Sie Chaiken’s Algorithm aus der Liste der Generalisierungs Algorithmen. Lassen Sie alle anderen Optionen auf der Voreinstellung. Geben Sie in der untersten Zeile im Feld Name der Ausgabe-Vektorkarte ‚hoehen_100_smooth‘ ein und klicken auf Starten.

  • Die Ausführung dauert einen Moment. Wenn Erfolgreich beendet im Ergebnisfenster erscheint, klicken Sie auf View Output und dann auf Schließen.

  • Ändern Sie nun auch die Farbe des neuen Layers, damit er sich deutlich von dem Höhenmodell und den zuvor berechneten Höhenlinien abhebt. Sie werden erkennen, dass die Kanten der neuen Höhenlinien wesentlich weicher gezeichnet sind.

../../../_images/grass_toolbox_vgeneralize.png

Abb. 25.7 GRASS Moduk v.generalize zum Glätten einer Vektorkarte

Tipp

Vektorlinien glätten mit dem GRASS Modul v.generalize

Die oben beschriebene Anwendung kann auch in anderen Situationen verwendet werden. Wenn Sie z.B. eine Rasterkarte mit Niederschlagswerten haben, können Sie mit r.contour einen Isohyetallayer (konstanter Niederschlag) erstellen.

25.14.2.2. Erstellen eines 3D Schummerungseffekts

Es gibt verschiedene Methoden, um Höhenlayer anzuzeigen und ihnen einen 3D Schummerungseffekt zu verleihen. Der Gebrauch von Höhenlinien ist eine populäre Methode, die häufig angewendet wird, um topographische Karten zu erstellen. Eine andere Möglichkeit, um einen 3D Effekt zu erzeugen ist, bietet das Hillshading. Der Effekt basiert dabei auf einem Höhenmodell. Dabei wird zuerst die Hangneigung und -richtung der Zellen bestimmt und dann durch die Simulation des Sonnenstandes eine Reflexionswert erzeugt. Dadurch werden der Sonne zugewandte Bereiche aufgehellt und der Sonne abgewandte Bereiche (im Schatten) dunkler dargestellt.

  • Fangen Sie mit diesem Beispiel an indem Sie zuerst den Rasterlayer gtopo30 laden. Öffnen Sie die GRASS-Werkzeugkiste und unter der Raster Kategorie wechseln Sie in den Bereich Räumliche Analysen ► Geländeanalyse.

  • Nun klicken Sie auf r.shaded.relief, um den Modulreiter zu öffnen.

  • Ändern Sie den Wert im Feld Winkel der Sonne in Grad östlich von der Nordrichtung selectNumber 270 auf 315.

  • Geben Sie gtopo30_shade für das neu zu erstellende Raster mit Schummerung ein und klicken auf Starten.

  • Nachdem die Karte berechnet wurde, visualisieren Sie sie und setzen Sie die Farbe des Rasterlayers auf Graustufen.

  • Um die Schummerung und das Höhenmodell gtopo30 zusammen zu sehen, ziehen Sie die Schummerungskarte in der Legende unter das Höhenmodell. Öffnen Sie dann den Dialog Layereigenschaften der Karte gtopo30, und ändern Sie die Transparenz im Reiter Transparenz auf den Wert 25%.

Die Höhenkarte gtopo30 wird nun als Farbkarte leicht transparent über der Schummerungskarte angezeigt. Dadurch entsteht ein visueller 3D Effekt. Um den Unterschied besser zu erkennen, wechseln Sie über das Kontrollkästchen den Anzeigemodus der Schummerungskarte in der Legende und wieder zurück.

Die GRASS Kommandozeile verwenden

Das GRASS Plugin in QGIS stellt die GRASS Module oftmals in vereinfachter Form und auch nicht vollständig bereit. Es ist also grundsätzlich für Anwender gestaltet, die sich nicht so gut mit GRASS und all seinen Fähigkeiten auskennen oder nur einfacher Analysen durchführen wollen. Daher werden in den grafischen Moduldialogen oftmals nicht alle Optionen und Parameter, die das GRASS Modul bieten bereitgestellt, um den Umgang einfacher und intuitiver zu gestalten. Wer tiefer in GRASS einsteigen möchte, er hat die Möglichkeit, sämtliche Funktionalitäten und Module über die GRASS Kommandozeile (GRASS Shell) anzusprechen. In dem folgenden Beispiel soll eine zusätzliche Option des Moduls r.shaded.relief angesprochen werden, die nur über die Kommandozeile genutzt werden kann.

../../../_images/grass_toolbox_shell.png

Abb. 25.8 Die GRASS Shell, Modul r.shaded.relief

Das Modul r.shaded.relief stellt einen zusätzliche Parameter zmult bereit, über den der Höhenwert relativ zu den X-Y Werten multipliziert werden kann. Dadurch wird der Schummerungseffekt noch prägnanter.

  • Laden Sie das Höhenraster gtopo30 wie zuvor und starten dann die GRASS Toolbox und klicken auf die GRASS Shell. Geben Sie im Shell Fenster das Kommando r.shaded.relief map=gtopo30 shade=gtopo30_shade2 azimuth=315 zmult=3 ein und drücken Enter.

  • Wenn die Berechnung abgeschlossen ist, wechseln Sie den Reiter Browser und Doppelklicken Sie auf die neu erstellte Karte gtopo30_shade2, um Sie in QGIS anzuzeigen.

  • Wie oben erklärt verschieben Sie die Schummerungskarte unter das gtopo30 Raster in der Legende, überprüfen Sie dann die Transparenz des farbigen gtopo30 Layers. Sie sollten dabei erkennen, dass der Schummerungseffekt stärker verglichen mit der ersten Schummerungskarte ist.

../../../_images/grass_toolbox_shadedrelief.png

Abb. 25.9 Darstellen einer Schummering erstellt mit dem GRASS Modul r.shaded.relief

25.14.2.3. Rasterstatistik auf Basis eines Vektorlayer berechnen

Das folgende Beispiel zeigt, wie man univariate Statistik für Rasterwerte innerhalb von Vektorpolygonen berechnen kann und die Werte in neue Attributspalten des Vektorlayers hinzufügt.

  • Es werden wieder die Alaska Daten verwendet. Unter Daten in eine GRASS LOCATION importieren findet man Hinweise zum Import der Datei shapefiles/trees.shp nach GRASS.

  • Jetzt ist ein Zwischenschritt nötig: es müssen Zentroiden zu der importierten Baumkarte hinzugefügt werden um es zu einem kompletten GRASS Flächenvektor (der sowohl Umrandungen als auch Zentroide enthält) zu machen.

  • Wählen Sie aus der Werkzeugkiste Vektor ► Karte entwickeln ► Objekte verwalten und öffnen Sie das Modul v.centroids.

  • Geben Sie als Name für die Ausgabe-Vektorkarte ‚forest_areas‘ an und starten Sie das Modul.

  • Nun laden Sie den neuen Layer forest_areas und visualisieren Sie die verschiedenen Waldtypen in verschiedenen Farben - deciduous, evergreen und mixed. Dazu öffnen Sie den Dialog Eigenschaften des Layers, wechseln zum Reiter Darstellung, wählen selectString ‚Eindeutiger Wert‘ und setzen das Klassifikationsfeld auf ‚VEGDESC‘ (siehe auch die Beschreibung des Reiters Darstellung in Abschnitt Eigenschaften Symbolisierung des Vektordatenabschnitts).

  • Als nächstes öffnen Sie wieder die GRASS-Werkzeugkiste und wechseln nach Vektor ► Vektor mit anderen Karten aktualisieren.

  • Klicken Sie auf das v.rast.stats Modul. Geben Sie gtopo30 und forest_areas ein.

  • Ein weiterer Parameter wird benötigt: Geben Sie bei column prefix elev ein und klicken auf Starten. Dies ist eine rechenintensive Operation, die längere Zeit in Anspruch nimmt (wahrscheinlich bis zu zwei Stunden).

  • Schließlich öffnen Sie den Layer forest_areas erneut und lassen Sie sich die Attributtabelle anzeigen. Dort gibt es nun weitere Spalten einschließlich elev_min, elev_max, elev_mean usw. für jedes Waldpolygon.

25.14.3. Anpassen der Module

Nahezu alle GRASS-Module können in die GRASS-Werkzeugkiste integriert werden. Eine XML-Schnittstelle wertet die sehr einfachen XML-Dateien, die die Module beschreiben, aus und übernimmt die Oberflächendarstellung.

Beispielhaft ist hier die XML-Datei zum Modul v.buffer (v.buffer.qgm) dargestellt:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">

<qgisgrassmodule label="Vector buffer" module="v.buffer">
        <option key="input" typeoption="type" layeroption="layer" />
        <option key="buffer"/>
        <option key="output" />
</qgisgrassmodule>

Der Parser liest diese Definition aus und erstellt bei Auswahl des Moduls einen neuen Reiter in der Toolbox. Eine detaillierte Beschreibung zum Hinzufügen neuer Module, zum Ändern der Modulgruppe usw. findet man unter https://qgis.org/en/site/getinvolved/development/addinggrasstools.html.