Outdated version of the documentation. Find the latest one here.

.

GRASS GIS Integration

The GRASS plugin provides access to GRASS GIS databases and functionalities (see GRASS-PROJECT in Literatur und Internetreferenzen). This includes visualizing GRASS raster and vector layers, digitizing vector layers, editing vector attributes, creating new vector layers and analysing GRASS 2-D and 3-D data with more than 400 GRASS modules.

In this section, we’ll introduce the plugin functionalities and give some examples of managing and working with GRASS data. The following main features are provided with the toolbar menu when you start the GRASS plugin, as described in section sec_starting_grass:

  • grass_open_mapset Open mapset
  • grass_new_mapset New mapset
  • grass_close_mapset Close mapset
  • grass_add_vector Add GRASS vector layer
  • grass_add_raster Add GRASS raster layer
  • grass_new_vector_layer Create new GRASS vector
  • grass_edit Edit GRASS vector layer
  • grass_tools Open GRASS tools
  • grass_region Display current GRASS region
  • grass_region_edit Edit current GRASS region

GRASS Plugin starten

To use GRASS functionalities and/or visualize GRASS vector and raster layers in QGIS, you must select and load the GRASS plugin with the Plugin Manager. Therefore, go to the menu Plugins ‣ mActionShowPluginManager Manage Plugins, select checkbox GRASS and click [OK].

You can now start loading raster and vector layers from an existing GRASS LOCATION (see section sec_load_grassdata). Or, you can create a new GRASS LOCATION with QGIS (see section Eine neue GRASS LOCATION erstellen) and import some raster and vector data (see section Daten in eine GRASS LOCATION importieren) for further analysis with the GRASS Toolbox (see section Die GRASS Werkzeugkiste).

GRASS Layer visualisieren

With the GRASS plugin, you can load vector or raster layers using the appropriate button on the toolbar menu. As an example, we will use the QGIS Alaska dataset (see section Beispieldaten). It includes a small sample GRASS LOCATION with three vector layers and one raster elevation map.

  1. Create a new folder called grassdata, download the QGIS ‘Alaska’ dataset qgis_sample_data.zip from http://download.osgeo.org/qgis/data/ and unzip the file into grassdata.
  2. Start QGIS.
  3. If not already done in a previous QGIS session, load the GRASS plugin clicking on Plugins ‣ mActionShowPluginManager Manage Plugins and activate checkbox GRASS. The GRASS toolbar appears in the QGIS main window.
  4. In the GRASS toolbar, click the grass_open_mapset Open mapset icon to bring up the MAPSET wizard.
  5. For Gisdbase, browse and select or enter the path to the newly created folder grassdata.
  6. You should now be able to select the LOCATION selectstring alaska and the MAPSET selectstring demo.
  7. Click [OK]. Notice that some previously disabled tools in the GRASS toolbar are now enabled.
  8. Click on grass_add_raster Add GRASS raster layer, choose the map name gtopo30 and click [OK]. The elevation layer will be visualized.
  9. Click on grass_add_vector Add GRASS vector layer, choose the map name alaska and click [OK]. The Alaska boundary vector layer will be overlayed on top of the gtopo30 map. You can now adapt the layer properties as described in chapter Vektorlayereigenschaften (e.g., change opacity, fill and outline color).
  10. Also load the other two vector layers, rivers and airports, and adapt their properties.

As you see, it is very simple to load GRASS raster and vector layers in QGIS. See the following sections for editing GRASS data and creating a new LOCATION. More sample GRASS LOCATIONs are available at the GRASS website at http://grass.osgeo.org/download/sample-data/.

Tipp

Probleme beim Laden von GRASS-Layern

If you have problems loading data or QGIS terminates abnormally, check to make sure you have loaded the GRASS plugin properly as described in section GRASS Plugin starten.

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 subregions, 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 must 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/OGR-supported datasets without importing them. But because this is not the usual way for beginners to work with GRASS, this functionality will not be described here.)

Figure GRASS location 1:

../../../_images/grass_location1.png

GRASS Daten in der Alaska LOCATION

Eine neue GRASS LOCATION erstellen

As an example, here is how the sample GRASS LOCATION alaska, which is projected in Albers Equal Area projection with unit feet was created for the QGIS sample dataset. This sample GRASS LOCATION alaska will be used for all examples and exercises in the following GRASS-related sections. It is useful to download and install the dataset on your computer (see Beispieldaten).

  1. Start QGIS and make sure the GRASS plugin is loaded.
  2. Visualize the alaska.shp shapefile (see section Loading a Shapefile) from the QGIS Alaska dataset (see Beispieldaten).
  3. In the GRASS toolbar, click on the grass_new_mapset New mapset icon to bring up the MAPSET wizard.
  4. Wählen Sie einen bestehende GRASS Datenbankordner (GISDBASE) grassdata oder erstellen Sie einen für die neue LOCATION anhand des Dateimanagers auf Ihrem Computer. Klicken Sie dann [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 figure_grass_location_2).
  6. Geben Sie einen Namen für die LOCATION - wir haben ‘alaska’ verwendet - und klicken Sie [Weiter].

  7. Define the projection by clicking on the radio button radiobuttonon Projection to enable the projection list.
  8. We are using Albers Equal Area Alaska (feet) projection. Since we happen to know that it is represented by the EPSG ID 2964, we enter it in the search box. (Note: If you want to repeat this process for another LOCATION and projection and haven’t memorized the EPSG ID, click on the mIconProjectionEnabled CRS Status icon in the lower right-hand corner of the status bar (see section Arbeiten mit Projektionen)).
  9. Geben Sie bei Filter 2964 ein um die Projektion auszuwählen.

  10. Klicken Sie auf [Weiter].

  11. To define the default region, we have to enter the LOCATION bounds in the north, south, east, and west directions. Here, we simply click on the button [Set current |qg| extent], to apply the extent of the loaded layer alaska.shp as the GRASS default region extent.
  12. Klicken Sie auf [Weiter].

  13. Wir müssen auch eine MAPSET innerhalb unserer neuen LOCATION definieren (dies ist nötig wenn Sie eine neue LOCATION erstellen). Sie können Sie wie Sie wollen nennen - wir haben ‘demo’ verwendet. GRASS erstellt automatisch eine spezielle MAPSET genannt PERMANENT die dazu erstellt wird um Kerndaten für das Projekt, seine Standardausmaße und Koordinatensystemdefinitionen zu speichern (siehe Neteler & Mitasova 2008 in Literatur und Internetreferenzen).

  14. Prüfen Sie alles, damit alles wie gewünscht ist. Klicken Sie auf [Abschliessen].

  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.

Figure GRASS location 2:

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

Creating a new GRASS LOCATION or a new MAPSET in QGIS

If that seemed like a lot of steps, it’s really not all that bad and a very quick way to create a LOCATION. The LOCATION ‘alaska’ is now ready for data import (see section Daten in eine GRASS LOCATION importieren). You can also use the already-existing vector and raster data in the sample GRASS LOCATION ‘alaska’, included in the QGIS ‘Alaska’ dataset Beispieldaten, and move on to section Das GRASS Vektormodell.

Eine neue GRASS MAPSET erstellen

A user has write access only to a GRASS MAPSET he or she created. This means that besides access to your own MAPSET, you can read maps in other users’ MAPSETs (and they can read yours), but you can modify or remove only the maps in your own MAPSET.

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. Start QGIS and make sure the GRASS plugin is loaded.
  2. In the GRASS toolbar, click on the grass_new_mapset New mapset icon to bring up the MAPSET wizard.
  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 figure_grass_location_2) and click [Next].
  6. Geben Sie den Namen test' für die neue :file:`MAPSET ein. Unter dem Assistenten sehen Sie eine List bestehender MAPSETs und die entsprechenden Besitzer.

  7. Klicken Sie auf [Weiter], prüfen Sie die Einstellungen und drücken Sie dann auf [Abschließen].

Daten in eine GRASS LOCATION importieren

This section gives an example of how to import raster and vector data into the ‘alaska’ GRASS LOCATION provided by the QGIS ‘Alaska’ dataset. Therefore, we use the landcover raster map landcover.img and the vector GML file lakes.gml from the QGIS ‘Alaska’ dataset (see Beispieldaten).

  1. Start QGIS and make sure the GRASS plugin is loaded.
  2. In the GRASS toolbar, click the grass_open_mapset Open MAPSET icon to bring up the MAPSET wizard.
  3. Select as GRASS database the folder grassdata in the QGIS Alaska dataset, as LOCATION ‘alaska’, as MAPSET ‘demo’ and click [OK].
  4. Now click the grass_tools Open GRASS tools icon. The GRASS Toolbox (see section Die GRASS Werkzeugkiste) dialog appears.
  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. Browse to the folder raster in the QGIS ‘Alaska’ dataset and select the file landcover.img.
  7. Definieren Sie als Rasterausgabename landcover_grass und klicken Sie [Starten]. Im Reiter Ergebnis können Sie den gerade laufenden GRASS Befehl r.in.gdal -o input=/path/to/landcover.img output=landcover_grass sehen.

  8. When it says Succesfully finished, click [View output]. The landcover_grass raster layer is now imported into GRASS and will be visualized in the QGIS canvas.
  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. Browse to the folder gml in the QGIS ‘Alaska’ dataset and select the file lakes.gml as OGR file.
  11. Definieren Sie lakes_grass als Vektorausgabenamen und klicken Sie [Starten]. Sie brauchen sich in diesem Beispiel nicht um andere Optionen kümmern. Im Reiter Ergebnis sehen Sie den aktuell laufenden GRASS Befehl v.in.ogr -o dsn=/path/to/lakes.gml output=lakes\_grass.

  12. When it says Succesfully finished, click [View output]. The lakes_grass vector layer is now imported into GRASS and will be visualized in the QGIS canvas.

Das GRASS Vektormodell

It is important to understand the GRASS vector data model prior to digitizing.

In general, GRASS uses a topological vector model.

This means that areas are not represented as closed polygons, but by one or more boundaries. A boundary between two adjacent areas is digitized only once, and it is shared by both areas. Boundaries must be connected and closed without gaps. An area is identified (and labeled) by the centroid of the area.

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.

Attributes can be stored inside the GRASS LOCATION as dBase or SQLite3 or in external database tables, for example, PostgreSQL, MySQL, Oracle, 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

Der beste Weg, etwas über das GRASS Vektordatenmodell und seine Fähigkeiten zu erfahren, ist das Studieren eines der vielen verfügbaren GRASS-Tutorien, wo dieses Thema vertieft behandelt wird. Unter http://grass.osgeo.org/documentation/manuals/ sind eine Vielzahl weiterer Informationsquellen, Bücher und Tutorien in unterschiedlichen Sprachen vorhanden.

Einen neuen GRASS Vektorlayer erstellen

To create a new GRASS vector layer with the GRASS plugin, click the grass_new_vector_layer Create new GRASS vector toolbar icon. Enter a name in the text box, and you can start digitizing point, line or polygon geometries following the procedure described in section Digitalisieren und Editieren eines GRASS Vektorlayers.

In GRASS, it is possible to organize all sorts of geometry types (point, line and area) in one layer, because GRASS uses a topological vector model, so you don’t need to select the geometry type when creating a new GRASS vector. This is different from shapefile creation with QGIS, because shapefiles use the Simple Feature vector model (see section Neue Vektorlayer erstellen).

Tipp

Creating an attribute table for a new GRASS vector layer

If you want to assign attributes to your digitized geometry features, make sure to create an attribute table with columns before you start digitizing (see figure_grass_digitizing_5).

Digitalisieren und Editieren eines GRASS Vektorlayers

The digitizing tools for GRASS vector layers are accessed using the grass_edit Edit GRASS vector layer icon on the toolbar. Make sure you have loaded a GRASS vector and it is the selected layer in the legend before clicking on the edit tool. Figure figure_grass_digitizing_2 shows the GRASS edit dialog that is displayed when you click on the edit tool. The tools and settings are discussed in the following sections.

Tipp

Polygone in GRASS digitalisieren

If you want to create a polygon in GRASS, you first digitize the boundary of the polygon, setting the mode to ‘No category’. Then you add a centroid (label point) into the closed boundary, setting the mode to ‘Next not used’. The reason for this is that a topological vector model links the attribute information of a polygon always to the centroid and not to the boundary.

Werkzeugleiste

In figure_grass_digitizing_1, you see the GRASS digitizing toolbar icons provided by the GRASS plugin. Table table_grass_digitizing_1 explains the available functionalities.

Figure GRASS digitizing 1:

../../../_images/grass_digitizing_toolbar.png

GRASS Digitizing Toolbar

Icon

Werkzeug

Zweck

grass_new_point

Neuer Punkt

Digitalisiert neuen Punkt

grass_new_line

Neue Linie

Digitalisiert neue Linie

grass_new_boundary

Neue Grenze

Digitize new boundary (finish by selecting new tool)
grass_new_centroid

Neuer Zentroid

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

grass_move_vertex Move vertex Move one vertex of existing line or boundary and identify new position
grass_add_vertex Add vertex Add a new vertex to existing line
grass_delete_vertex Delete vertex Delete vertex from existing line (confirm selected vertex by another click)
grass_move_line Move element Move selected boundary, line, point or centroid and click on new position
grass_split_line Split line Split an existing line into two parts
grass_delete_line Delete element Delete existing boundary, line, point or centroid (confirm selected element by another click)
grass_edit_attributes Edit attributes Edit attributes of selected element (note that one element can represent more features, see above)
grass_close_edit Close Close session and save current status (rebuilds topology afterwards)

Tabelle GRASS Digitizing 1: GRASS Digitalisierwerkzeuge

Category Tab

The Category tab allows you to define the way in which the category values will be assigned to a new geometry element.

Figure GRASS digitizing 2:

../../../_images/grass_digitizing_category.png

GRASS Digitizing Category Tab

  • Mode: The category value that will be applied to new geometry elements.
    • Next not used - Apply next not yet used category value to geometry element.
    • Manual entry - Manually define the category value for the geometry element in the ‘Category’ entry field.
    • No category - Do not apply a category value to the geometry element. This is used, for instance, for area boundaries, because the category values are connected via the centroid.
  • Category - The number (ID) that is attached to each digitized geometry element. It is used to connect each geometry element with its attributes.
  • Field (layer) - Each geometry element can be connected with several attribute tables using different GRASS geometry layers. The default layer number is 1.

Tipp

Creating an additional GRASS ‘layer’ with |qg|

If you would like to add more layers to your dataset, just add a new number in the ‘Field (layer)’ entry box and press return. In the Table tab, you can create your new table connected to your new layer.

Settings Tab

The Settings tab allows you to set the snapping in screen pixels. The threshold defines at what distance new points or line ends are snapped to existing nodes. This helps to prevent gaps or dangles between boundaries. The default is set to 10 pixels.

Figure GRASS digitizing 3:

../../../_images/grass_digitizing_settings.png

GRASS Digitizing Settings Tab

Symbology Tab

The Symbology tab allows you to view and set symbology and color settings for various geometry types and their topological status (e.g., closed / opened boundary).

Figure GRASS digitizing 4:

../../../_images/grass_digitizing_symbology.png

GRASS Digitizing Symbology Tab

Table Tab

The Table tab provides information about the database table for a given ‘layer’. Here, you can add new columns to an existing attribute table, or create a new database table for a new GRASS vector layer (see section Einen neuen GRASS Vektorlayer erstellen).

Figure GRASS digitizing 5:

../../../_images/grass_digitizing_table.png

GRASS Digitizing Table Tab

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.

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.

It is possible to switch on and off the visualization of the GRASS region in the QGIS canvas using the grass_region Display current GRASS region button.

With the grass_region_edit Edit current GRASS region icon, you can open a dialog to change the current region and the symbology of the GRASS region rectangle in the QGIS canvas. Type in the new region bounds and resolution, and click [OK]. The dialog also allows you to select a new region interactively with your mouse on the QGIS canvas. Therefore, click with the left mouse button in the QGIS canvas, open a rectangle, close it using the left mouse button again and click [OK].

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.

Die GRASS Werkzeugkiste

The grass_tools Open GRASS Tools box provides GRASS module functionalities to work with data inside a selected GRASS LOCATION and MAPSET. To use the GRASS Toolbox you need to open a LOCATION and MAPSET that you have write permission for (usually granted, if you created the MAPSET). This is necessary, because new raster or vector layers created during analysis need to be written to the currently selected LOCATION and MAPSET.

Figure GRASS Toolbox 1:

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

GRASS Werkzeuge und Modulbaum nix

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.

A complete list of GRASS modules available in the graphical Toolbox in QGIS version 2.8 is available in the GRASS wiki at http://grass.osgeo.org/wiki/GRASS-QGIS_relevant_module_list.

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

Wie in Abbildung figure_grass_toolbox_1 zu sehen, können Sie nach dem passenden GRASS Modul in dem Reiter Modulbaum nachschauen oder im Reiter Modulliste suchen.

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

Optionen

The Options tab provides a simplified module dialog where you can usually select a raster or vector layer visualized in the QGIS canvas and enter further module-specific parameters to run the module.

Figure GRASS module 1:

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

GRASS Werkzeuge Modul Optionen nix

The provided module parameters are often not complete to keep the dialog clear. If you want to use further module parameters and flags, you need to start the GRASS shell and run the module in the command line.

A new feature since QGIS 1.8 is the support for a Show Advanced Options button below the simplified module dialog in the Options tab. At the moment, it is only added to the module v.in.ascii as an example of use, but it will probably be part of more or all modules in the GRASS Toolbox in future versions of QGIS. This allows you to use the complete GRASS module options without the need to switch to the GRASS shell.

Ergebnis

Figure GRASS module 2:

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

GRASS Werkzeuge Modul Ergebnis nix

Der Reiter Ergebnis stellt die Ausgabe des Moduls zur Laufzeit dar. Nachdem Sie den Knopf [Los] gedrückt haben, wird auf diesen Reiter gewechselt und Sie sehen die Statusausgaben des Moduls. Wenn alles funktioniert hat, sehen Sie den Ausgabetext Erfolgreich beendet.

Handbuch

Figure GRASS module 3:

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

GRASS Werkzeuge Modul Handbuch nix

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

GRASS Beispielanwendung

Die folgenden Beispiele sollen die Anwendung verschiedener GRASS Module demonstrieren.

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.

  • First, open the location by clicking the grass_open_mapset Open mapset button and choosing the Alaska location.
  • Now load the gtopo30 elevation raster by clicking grass_add_raster Add GRASS raster layer and selecting the gtopo30 raster from the demo location.
  • Now open the Toolbox with the grass_tools Open GRASS tools button.
  • In der Liste von Werkzeugkategorien doppelklicken Sie auf Raster ‣ Oberflächenverwaltung ‣ Vektorkonturlinien erzeugen.

  • Now a single click on the tool r.contour will open the tool dialog as explained above (see Arbeiten mit GRASS Modulen). The gtopo30 raster should appear as the Name of input raster.
  • Type into the Increment between Contour levels selectnumber the value 100. (This will create contour lines at intervals of 100 meters.)
  • In das Feld Name der Vektorausgabekarte geben Sie den Namen hoehen_100 an.

  • Klicken Sie [Starten] um den Prozess zu starten. Warten Sie mehrere Momente bis die Nachricht Erfolgreiche beendet im Ergebnisfenster auftaucht. Klicken Sie dann [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

Note that the QGIS fTools plugin has a Simplify geometries ‣ tool that works just like the GRASS v.generalize Douglas-Peuker algorithm.

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.

  • Aus der Liste möglicher Algorithmen wählen Sie nun Chaiken’s. Belassen Sie alle weiteren Optionen wie sie sind und gehen Sie zum Ende des Dialogs, wo Sie als Name der Vektorausgabekarte ‘hoehen_100_smooth’ angeben. Drücken Sie nun auf [Starten].

  • Der Prozess dauert eine Weile. Sobald Erfolgreich beendet im Reiter Ergebnis erscheint, drücken Sie wieder auf [Ergebnis visualisieren] 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.

Figure GRASS module 4:

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

GRASS Moduk v.generalize zum Glätten einer Vektorkarte nix

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.

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.

  • Change the azimuth angle selectnumber 270 to 315.
  • Geben Sie als Name der Schummerungskarte den Namen gtopo30_shade an und klicken Sie 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

The GRASS plugin in QGIS is designed for users who are new to GRASS and not familiar with all the modules and options. As such, some modules in the Toolbox do not show all the options available, and some modules do not appear at all. The GRASS shell (or console) gives the user access to those additional GRASS modules that do not appear in the Toolbox tree, and also to some additional options to the modules that are in the Toolbox with the simplest default parameters. This example demonstrates the use of an additional option in the r.shaded.relief module that was shown above.

Figure GRASS module 5:

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

Die GRASS Shell, Modul r.shaded.relief nix

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öhenmodell gtopo30 wie im vorherigen Beispiel. Öffnen Sie die GRASS-Werkzeugkiste und klicken auf die GRASS Shell. In das Kommandozeilenfenster tippen Sie folgenden Befehl r.shaded.relief map=gtopo30 shade=gtopo30_shade2 azimuth=315 zmult=3 und drücken dann die Taste [Enter].

  • After the process finishes, shift to the Browse tab and double-click on the new gtopo30_shade2 raster to display it in QGIS.
  • 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.

Figure GRASS module 6:

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

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

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.

  • Verwenden Sie wieder die Alaska Location (siehe Abschnitt Daten in eine GRASS LOCATION importieren), und importieren Sie das Shapefile trees aus dem Ordner shapefiles 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.

  • Now load the forest_areas vector and display the types of forests - deciduous, evergreen, mixed - in different colors: In the layer Properties window, Symbology tab, choose from Legend type selectstring ‘Unique value’ and set the Classification field to ‘VEGDESC’. (Refer to the explanation of the symbology tab in Menü Stil of the vector section.)
  • 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.

  • Nun fehlt nur noch ein Parameter: Geben Sie als Spaltenpräfix elev an, und klicken Sie dann auf [Starten]. Die Berechnung wird ziemlich lange dauern (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.

Working with the GRASS LOCATION browser

Another useful feature inside the GRASS Toolbox is the GRASS LOCATION browser. In figure_grass_module_7, you can see the current working LOCATION with its MAPSETs.

In the left browser windows, you can browse through all MAPSETs inside the current LOCATION. The right browser window shows some meta-information for selected raster or vector layers (e.g., resolution, bounding box, data source, connected attribute table for vector data, and a command history).

Figure GRASS module 7:

../../../_images/grass_mapset_browser.png

GRASS LOCATION browser nix

The toolbar inside the Browser tab offers the following tools to manage the selected LOCATION:

  • grass_add_map Add selected map to canvas
  • grass_copy_map Copy selected map
  • grass_rename_map Rename selected map
  • grass_delete_map Delete selected map
  • grass_set_region Set current region to selected map
  • grass_refresh Refresh browser window

The grass_rename_map Rename selected map and grass_delete_map Delete selected map only work with maps inside your currently selected MAPSET. All other tools also work with raster and vector layers in another MAPSET.

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>

The parser reads this definition and creates a new tab inside the Toolbox when you select the module. A more detailed description for adding new modules, changing a module’s group, etc., can be found on the QGIS wiki at http://hub.qgis.org/projects/quantum-gis/wiki/Adding_New_Tools_to_the_GRASS_Toolbox.