「Grass integration」の版間の差分

提供: OSGeo.JP Wiki
移動: 案内検索
(ページの作成: <H1> GRASS GIS Integration </H1> <P> The GRASS plugin provides access to GRASS GIS [#!GRASSweb!#] databases and functionalities. This includes visualization of GRASS raste…)
 
(タグ・画像調整前に一旦配下を統合)
行81: 行81:
 
</UL></UL>
 
</UL></UL>
 
<!--End of Table of Child-Links-->
 
<!--End of Table of Child-Links-->
 +
<BR><HR>
 +
 +
<H2>
 +
Starting the GRASS plugin
 +
</H2>
 +
 +
<br>
 +
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 click the menu Plugins &gt; Manage Plugins,
 +
select GRASS and click OK.
 +
 +
<br>
 +
You can now start loading raster and vector layers from an existing GRASS
 +
LOCATION (see Section [[#sec:load_grassdata|9.2]]). Or you create a
 +
new GRASS LOCATION with QGIS (see Section [[#sec:create_loc|9.3.1]])
 +
and import some raster and vector data (see Section [[#sec:import_loc_data|9.4]])
 +
for further analysis with the GRASS Toolbox (see Section
 +
[[#subsec:grass_toolbox|9.9]]).
 +
 +
<H2>
 +
Loading GRASS raster and vector layers
 +
</H2>
 +
 +
<P>
 +
With the GRASS plugin, you can load vector or raster layers using the
 +
appropriate button on the toolbar menu. As an example we use the QGIS alaska
 +
dataset (see Section [[#label_sampledata]]). It includes a small sample
 +
GRASS LOCATION with 3 vector layers and 1 raster elevation map.
 +
 +
<P>
 +
 +
<OL>
 +
<LI>Create a new folder grassdata, download the QGIS alaska dataset qgis_sample_data.zip from http://download.osgeo.org/qgis/data/ and unzip the file into grassdata.
 +
</LI>
 +
<LI>Start QGIS.
 +
</LI>
 +
<LI>If not already done in a previous QGIS session, load the GRASS plugin clicking on Plugins &gt; Manage Plugins and selecting GRASS. The GRASS toolbar appears on the toolbar menu.
 +
</LI>
 +
<LI>In the GRASS toolbar, click the grass_open_mapsetOpen
 +
  mapset icon to bring up the MAPSET wizard.
 +
</LI>
 +
<LI>For Gisdbase browse and select or enter the path to the
 +
  newly created folder grassdata.
 +
</LI>
 +
<LI>You should now be able to select the LOCATION alaska
 +
  and the MAPSET demo.
 +
</LI>
 +
<LI>Click OK. Notice that some previously disabled tools in the
 +
  GRASS toolbar are now enabled.
 +
</LI>
 +
<LI>Click on grass_add_rasterAdd GRASS raster layer,
 +
  choose the map name gtopo30 and click OK. The elevation
 +
  layer will be visualized.
 +
</LI>
 +
<LI>Click on grass_add_vectorAdd 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 [[#sec:vectorprops]],
 +
  e.g. change opacity, fill and outline color.
 +
</LI>
 +
<LI>Also load the other two vector layers rivers and
 +
  airports and adapt their properties.
 +
</LI>
 +
</OL>
 +
 +
<P>
 +
As you see, it is very simple to load GRASS raster and vector layers in QGIS.
 +
See 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/data.php .
 +
 +
<P>
 +
<BR>
 +
 +
<BR>
 +
 +
<P>
 +
 +
<H2>
 +
GRASS LOCATION and MAPSET
 +
</H2>
 +
 +
<P>
 +
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 LOCATION.
 +
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, subregions, or as workspaces
 +
for individual team members (Neteler &amp; Mitasova 2008
 +
[#!neteler_mitasova08!#]). In order to analyze vector and raster layers with
 +
GRASS modules, you must import them into a GRASS LOCATION.
 +
[[footnode.html#foot485]]></A>
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_location"></A><A NAME="486"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 27:</STRONG>
 +
GRASS data in the alaska LOCATION (adapted from Neteler &amp;
 +
Mitasova 2008 [#!neteler_mitasova08!#])</CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
</DIV>
 +
<P></P>
 +
<DIV ALIGN="CENTER">[clip=true]grass_location
 +
 +
</DIV></TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<P>
 +
<BR><HR>
 +
<!--Table of Child-Links-->
 +
<STRONG>Subsections</STRONG>
 +
 +
<UL CLASS="ChildLinks">
 +
<LI>[[Creating a new GRASS LOCATION]]
 +
<LI>[[Adding a new MAPSET]]
 +
</UL>
 +
<!--End of Table of Child-Links-->
 +
 +
<H3>
 +
Creating a new GRASS LOCATION
 +
</H3>
 +
 +
<P>
 +
As an an example you find the instructions 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 GIS related chapters. It is useful to
 +
download and install the dataset on your computer [[#label_sampledata]]">>).
 +
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:create_grass_location"></A><A NAME="107"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
Creating a new GRASS LOCATION or a new MAPSET in QGIS </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
</DIV>
 +
<P></P>
 +
<DIV ALIGN="CENTER">[clip=true, width=10cm]create_grass_location
 +
 +
</DIV></TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<P>
 +
 +
<OL>
 +
<LI>Start QGIS and make sure the GRASS plugin is loaded
 +
</LI>
 +
<LI>Visualize the alaska.shp Shapefile (see Section
 +
[[#sec:load_shapefile]]) from the QGIS alaska dataset&nbsp;[[#label_sampledata]].
 +
</LI>
 +
<LI>In the GRASS toolbar, click on the grass_open_mapsetOpen
 +
    mapset icon to bring up the MAPSET wizard.
 +
</LI>
 +
<LI>Select an existing GRASS database (GISDBASE) folder
 +
  grassdata or create one for the new LOCATION using a
 +
  file manager on your computer. Then click Next.
 +
</LI>
 +
<LI>We can use this wizard to create a new MAPSET within an
 +
  existing LOCATION (see Section&nbsp;[[node6.html#sec:add_mapset|9.3.2]]) or to create
 +
  a new LOCATION altogether. Click on the radio button
 +
  Create new location (see Figure [[#fig:create_grass_location|28]]).
 +
</LI>
 +
<LI>Enter a name for the LOCATION - we used alaska and click
 +
  Next
 +
</LI>
 +
<LI>Define the projection by clicking on the radio button
 +
  Projection to enable the projection list
 +
</LI>
 +
<LI>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
 +
  mIconProjectionEnabledprojector icon in the lower right-hand
 +
  corner of the status bar (see Section [[#label_projstart]]).
 +
</LI>
 +
<LI>Click Find to select the projection
 +
</LI>
 +
<LI>Click Next
 +
</LI>
 +
<LI>To define the default region, we have to enter the LOCATION
 +
  bounds in north, south, east, and west direction. Here we simply click on
 +
  the button Set current QGIS extent, to apply the extend of the
 +
  loaded layer alaska.shp as the GRASS default region extend.
 +
</LI>
 +
<LI>Click Next
 +
</LI>
 +
<LI>We also need to define a MAPSET within our new
 +
  LOCATION. You can name it whatever you like - we used demo.
 +
[[footnode.html#foot487]]
 +
</LI>
 +
<LI>Check out the summary to make sure it's correct and click
 +
  Finish
 +
</LI>
 +
<LI>The new LOCATION alaska and two MAPSETs demo
 +
  and PERMANENT are created. The currently opened working set is
 +
  MAPSET demo, as you defined.
 +
</LI>
 +
<LI>Notice that some of the tools in the GRASS toolbar that were
 +
  disabled are now enabled.
 +
</LI>
 +
</OL>
 +
 +
<P>
 +
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 [[node7.html#sec:import_loc_data|9.4]]).
 +
You can also use the already existing vector and raster data in the sample
 +
GRASS LOCATION alaska included in the QGIS alaska dataset
 +
[[#label_sampledata]] and move on to Section [[node8.html#label_vectmodel|9.5]].
 +
 +
<P>
 +
 +
<H3>
 +
Adding a new MAPSET
 +
</H3>
 +
 +
<P>
 +
A user has only write access to a GRASS MAPSET he created. This
 +
means, besides access to his own MAPSET, each user can also read
 +
maps in other user's MAPSETs, but he can modify or remove only
 +
the maps in his own MAPSET. All MAPSETs include a
 +
WIND file that stores the current boundary coordinate values and
 +
the currently selected raster resolution (Neteler &amp; Mitasova 2008
 +
[#!neteler_mitasova08!#], see Section <A HREF="node11.html#sec:grass_region">9.8</A>).
 +
 +
<P>
 +
 +
<OL>
 +
<LI>Start QGIS and make sure the GRASS plugin is loaded
 +
</LI>
 +
<LI>In the GRASS toolbar, click on the
 +
  grass_new_mapsetNew mapset icon to bring up the
 +
  MAPSET wizard.
 +
</LI>
 +
<LI>Select the GRASS database (GISDBASE) folder grassdata
 +
  with the LOCATION alaska, where we want to add a further
 +
  MAPSET, called test.
 +
</LI>
 +
<LI>Click Next.
 +
</LI>
 +
<LI>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 Select location
 +
  (see Figure <A HREF="node5.html#fig:create_grass_location">28</A>) and click Next.
 +
</LI>
 +
<LI>Enter the name text for the new MAPSET. Below
 +
  in the wizard you see a list of existing MAPSETs and its owners.
 +
</LI>
 +
<LI>Click Next, check out the summary to make sure it's all
 +
  correct and click Finish
 +
</LI>
 +
</OL>
 +
 +
<P>
 +
 +
 +
<H2>
 +
Importing data into a GRASS LOCATION
 +
</H2>
 +
 +
<P>
 +
This Section gives an example how to import raster and vector data into the
 +
alaska GRASS LOCATION provided by the QGIS alaska
 +
dataset. Therefore we use a landcover raster map landcover.img
 +
and a vector GML File lakes.gml from the QGIS alaska
 +
dataset [[#label_sampledata]]</A>.
 +
 +
<P>
 +
 +
<OL>
 +
<LI>Start QGIS and make sure the GRASS plugin is loaded.
 +
</LI>
 +
<LI>In the GRASS toolbar, click the grass_open_mapsetOpen
 +
  MAPSET icon to bring up the MAPSET wizard.
 +
</LI>
 +
<LI>Select as GRASS database the folder grassdata in the QGIS
 +
  alaska dataset, as LOCATION alaska, as MAPSET
 +
  demo and click OK.
 +
</LI>
 +
<LI>Now click the grass_toolsOpen GRASS tools icon. The
 +
  GRASS Toolbox (see Section [[node12.html#subsec:grass_toolbox|9.9]]) dialog appears.
 +
</LI>
 +
<LI>To import the raster map landcover.img, click the module
 +
  r.in.gdal in the Modules Tree tab. This GRASS module
 +
  allows to import GDAL supported raster files into a GRASS
 +
  LOCATION. The module dialog for r.in.gdal appears.
 +
</LI>
 +
<LI>Browse to the folder raster in the QGIS alaska dataset
 +
  and select the file landcover.img.
 +
</LI>
 +
<LI>As raster output name define landcover_grass and click
 +
  Run. In the Output tab you see the currently running GRASS
 +
  command r.in.gdal -o input=/path/to/landcover.img
 +
  output=landcover_grass.
 +
</LI>
 +
<LI>When it says <SPAN  CLASS="textbf">Succesfully finished</SPAN> click View output.
 +
  The landcover_grass raster layer is now imported into GRASS and
 +
  will be visualized in the QGIS canvas.
 +
</LI>
 +
<LI>To import the vector GML file lakes.gml, click the module
 +
  v.in.ogr in the Modules Tree tab. This GRASS module allows
 +
  to import OGR supported vector files into a GRASS LOCATION. The
 +
  module dialog for v.in.ogr appears.
 +
</LI>
 +
<LI>Browse to the folder gml in the QGIS alaska
 +
  dataset and select the file lakes.gml as OGR file.
 +
</LI>
 +
<LI>As vector output name define lakes_grass and click
 +
  Run. You don't have to care about the other options in this
 +
  example. In the Output tab you see the currently running GRASS
 +
  command v.in.ogr -o dsn=/path/to/lakes.gml output=lakes_grass.
 +
</LI>
 +
<LI>When it says <SPAN  CLASS="textbf">Succesfully finished</SPAN> click View output.
 +
  The lakes_grass vector layer is now imported into GRASS and will
 +
  be visualized in the QGIS canvas.
 +
</LI>
 +
</OL>
 +
 +
<P>
 +
 +
<H2>
 +
The GRASS vector data model
 +
</H2>
 +
 +
<P>
 +
It is important to understand the GRASS vector data model prior to
 +
digitizing.<A NAME="240"></A> In general, GRASS uses a topological
 +
vector model.<A NAME="241"></A> 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 without gaps. An area is identified (labeled)
 +
by the centroid of the area.
 +
 +
<P>
 +
Besides boundaries and centroids, a vector map can also contain
 +
points and lines. All these geometry elements can be mixed
 +
in one vector and will be represented in different so called 'layers' inside
 +
one GRASS vector map. So in GRASS a layer is not a vector or raster map but a
 +
level inside a vector layer. This is important to distinguish carefully.
 +
[[footnode.html#foot242]]
 +
<P>
 +
It is possible to store more 'layers' in one vector dataset. For example,
 +
fields, forests and lakes can be stored in one vector. Adjacent
 +
forest and lake can share the same boundary, but they have separate attribute
 +
tables. It is also possible to attach attributes to boundaries. For example,
 +
the boundary between lake and forest is a road, so it can have a different
 +
attribute table.
 +
 +
<P>
 +
The 'layer' of the feature is defined by 'layer' inside GRASS. 'Layer' is the
 +
number which defines if there are more than one layer inside the dataset, e.g.
 +
if the geometry is forest or lake. For now, it can be only a number, in the
 +
future GRASS will also support names as fields in the user interface.
 +
 +
<P>
 +
Attributes can be stored inside the GRASS LOCATION as DBase or
 +
SQLITE3 or in external database tables, for example PostgreSQL, MySQL,
 +
Oracle, etc.<A NAME="244"></A>
 +
 +
<P>
 +
Attributes in database tables are linked to geometry elements using
 +
a 'category' value.<A NAME="245"></A> 'Category' (key, ID) is an
 +
integer attached to geometry primitives, and it is used as the link to one
 +
key column in the database table.
 +
 +
 +
<BR>
 +
 +
<P>
 +
 +
<H2>
 +
Creating a new GRASS vector layer
 +
</H2><A NAME="490"></A>
 +
 +
<br>
 +
To create a new GRASS vector layer with the GRASS plugin click the
 +
grass_new_vector_layerCreate new GRASS vector toolbar icon.
 +
Enter a name in the text box and you can start digitizing point, line or
 +
polygone geometries, following the procedure described in Section [[node10.html#grass_digitising|9.7]].
 +
 +
<br>
 +
In GRASS it is possible to organize all sort 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 [[#sec:create_shape]]).
 +
 +
<P>
 +
<BR>
 +
 +
<H2>
 +
Digitizing and editing a GRASS vector layer
 +
</H2>
 +
 +
<P>
 +
The digitizing tools for GRASS vector layers are accessed using the
 +
grass_editEdit 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 <A HREF="#fig:grass_digitizing_category">30</A>
 +
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.
 +
 +
<P>
 +
<BR>
 +
<IMG
 +
WIDTH="500" HEIGHT="11" ALIGN="BOTTOM" BORDER="0"
 +
SRC="img4.png"
 +
ALT="\begin{Tip}
 +
% latex2html id marker 267
 +
\caption{\textsc{Digitizing polygones in ...
 +
...mation of a polygon always to the centroid and not to the
 +
boundary.
 +
}
 +
\end{Tip}">
 +
<BR>
 +
 +
<P>
 +
Toolbar<A NAME="label_grasstoolbar"></A>
 +
<P>
 +
In Figure <A HREF="#fig:grass_digitizing_toolbar">29</A> you see the GRASS digitizing
 +
toolbar icons provided by the GRASS plugin. Table <A HREF="#tab:grass_tools">3</A>
 +
explains the available functionalities.
 +
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_digitizing_toolbar"></A><A NAME="278"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
GRASS Digitizing Toolbar </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
  [clip=true,width=12cm]grass_digitizing_toolbar
 +
 +
</DIV></TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<P>
 +
<BR><P></P>
 +
<DIV ALIGN="CENTER">
 +
<A NAME="284"></A>
 +
<DIV ALIGN="CENTER">
 +
 +
</DIV><A NAME="tab:grass_tools"></A><P>
 +
<BR>
 +
<A NAME="285"></A>
 +
<TABLE CELLPADDING=3 BORDER="1">
 +
<CAPTION><STRONG>Table 3:</STRONG>
 +
GRASS Digitizing Tools</CAPTION>
 +
<TR><TH ALIGN="LEFT"><SPAN  CLASS="textbf">Icon</SPAN></TH>
 +
<TH ALIGN="LEFT"><SPAN  CLASS="textbf">Tool</SPAN></TH>
 +
<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=360><SPAN  CLASS="textbf">Purpose</SPAN></TH>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_new_point</TD>
 +
<TD ALIGN="LEFT">New Point</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Digitize
 +
new point</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_new_line</TD>
 +
<TD ALIGN="LEFT">New Line</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Digitize
 +
new line (finish by selecting new tool)</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_new_boundary</TD>
 +
<TD ALIGN="LEFT">New Boundary</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Digitize new boundary (finish by selecting new tool)</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_new_centroid</TD>
 +
<TD ALIGN="LEFT">New Centroid</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Digitize new centroid (label existing area)</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_move_vertex</TD>
 +
<TD ALIGN="LEFT">Move vertex</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Move
 +
one vertex of existing line or boundary and identify new position</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_add_vertex</TD>
 +
<TD ALIGN="LEFT">Add vertex</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Add a
 +
new vertex to existing line</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_delete_vertex</TD>
 +
<TD ALIGN="LEFT">Delete vertex</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Delete vertex from existing line (confirm selected vertex by another click)</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_move_line</TD>
 +
<TD ALIGN="LEFT">Move element</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Move
 +
selected boundary, line, point or centroid and click on new position</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_split_line</TD>
 +
<TD ALIGN="LEFT">Split line</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Split
 +
an existing line to 2 parts</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_delete_line</TD>
 +
<TD ALIGN="LEFT">Delete element</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Delete existing boundary, line, point or centroid (confirm selected element by
 +
another click)</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_edit_attributes</TD>
 +
<TD ALIGN="LEFT">Edit attributes</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Edit attributes of selected element (note that one element can represent
 +
more features, see above)</TD>
 +
</TR>
 +
<TR><TD ALIGN="LEFT">[width=0.7cm]grass_close_edit</TD>
 +
<TD ALIGN="LEFT">Close</TD>
 +
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=360>Close
 +
session and save current status (rebuilds topology afterwards)</TD>
 +
</TR>
 +
</TABLE>
 +
</DIV>
 +
<BR>
 +
 +
<P>
 +
Category Tab<A NAME="307"></A>
 +
 +
<P>
 +
The Category tab allows you to define the way in which the category
 +
values will be assigned to a new geometry element.
 +
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_digitizing_category"></A><A NAME="311"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
GRASS Digitizing Category Tab </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
  [clip=true,width=10cm]grass_digitizing_category
 +
 +
</DIV></TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<P>
 +
 +
<UL>
 +
<LI><SPAN  CLASS="textbf">Mode</SPAN>: what category value shall be applied to new geometry
 +
elements.
 +
 +
<UL>
 +
<LI>Next not used - apply next not yet used category value to geometry
 +
element.
 +
</LI>
 +
<LI>Manual entry - manually define the category value for the geometry
 +
element in the 'Category'-entry field.
 +
</LI>
 +
<LI>No category - Do not apply a category value to the geometry element.
 +
This is e.g. used for area boundaries, because the category values are
 +
connected via the centroid.
 +
</LI>
 +
</UL>
 +
</LI>
 +
<LI><SPAN  CLASS="textbf">Category</SPAN> - A number (ID) is attached to each digitized geometry
 +
element. It is used to connect each geometry element with its attributes.
 +
</LI>
 +
<LI><SPAN  CLASS="textbf">Field (layer)</SPAN> - Each geometry element can be connected with
 +
several attribute tables using different GRASS geometry layers. Default layer
 +
number is 1.
 +
</LI>
 +
</UL>
 +
 +
<P>
 +
<BR>
 +
<IMG
 +
WIDTH="251" HEIGHT="11" ALIGN="BOTTOM" BORDER="0"
 +
SRC="img5.png"
 +
ALT="\begin{Tip}
 +
% latex2html id marker 323
 +
\caption{\textsc{Creating an additional G...
 +
...Table tab
 +
you can create your new table connected to your new layer.
 +
}
 +
\end{Tip}">
 +
<BR>
 +
 +
<P>
 +
Settings Tab<A NAME="label_settingtab"></A><A NAME="329"></A>
 +
 +
<P>
 +
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.
 +
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_digitizing_settings"></A><A NAME="333"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
GRASS Digitizing Settings Tab </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
[clip=true,width=8cm]grass_digitizing_settings
 +
 +
</DIV></TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<P>
 +
Symbology Tab<A NAME="339"></A>
 +
 +
<P>
 +
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).
 +
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_digitizing_symbology"></A><A NAME="343"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
GRASS Digitizing Symbolog Tab </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
[clip=true,width=8cm]grass_digitizing_symbology
 +
 +
</DIV></TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<P>
 +
Table Tab <A NAME="349"></A>
 +
 +
<P>
 +
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
 +
<A HREF="node9.html#sec:creating_new_grass_vectors">9.6</A>).
 +
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_digitizing_table"></A><A NAME="354"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
GRASS Digitizing Table Tab </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
[clip=true,width=10cm]grass_digitizing_table
 +
 +
</DIV></TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
 +
<BR>
 +
 +
<P>
 +
 +
<H2>
 +
The GRASS region tool
 +
</H2>
 +
 +
<P>
 +
The region definition (setting a spatial working window) in GRASS is important
 +
for working with raster layers. Vector analysis is per default not limited
 +
to any defined region definitions. All newly-created rasters will have the
 +
spatial extension and resolution of the currently defined GRASS region,
 +
regardless of their original extension and resolution. The current GRASS
 +
region is stored in the $LOCATION/$MAPSET/WIND file, and it
 +
defines north, south, east and west bounds, number of columns and rows,
 +
horizontal and vertical spatial resolution.
 +
<br>
 +
<br>
 +
It is possible to switch on/off the visualization of the GRASS region in the
 +
QGIS canvas using the grass_regionDisplay current GRASS region
 +
button. <A NAME="371"></A>.
 +
<br>
 +
<br>
 +
With the grass_region_editEdit 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. It also allows 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.<A NAME="376"></A>
 +
The GRASS module g.region provide a lot more parameters to define
 +
an appropriate region extend and resolution for your raster analysis. You can
 +
use these parameters with the GRASS Toolbox, described in Section
 +
[[node12.html#subsec:grass_toolbox|9.9]].
 +
 +
<P>
 +
 +
<H2>
 +
The GRASS toolbox
 +
</H2>
 +
 +
<P>
 +
The grass_toolsOpen 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 where you have write-permission
 +
(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.
 +
 +
<P>
 +
<BR><HR>
 +
<!--Table of Child-Links-->
 +
<STRONG>Subsections</STRONG>
 +
 +
<UL CLASS="ChildLinks">
 +
<LI>[[Working with GRASS modules]]
 +
<LI>[[Working with the GRASS LOCATION browser]]
 +
<LI>[[Customizing the GRASS Toolbox]]
 +
</UL>
 +
<!--End of Table of Child-Links-->
 +
<BR><HR>
 +
 +
<H3>
 +
Working with GRASS modules
 +
</H3>
 +
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_modules"></A><A NAME="subfig:grass_module_tree"></A><A NAME="subfig:grass_module_list"></A><A NAME="394"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
GRASS Toolbox and searchable Modules List </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
 +
</DIV>  [Modules Tree] [clip=true, width=0.4]grass_toolbox_moduletree
 +
  [Searchable Modules List] [clip=true, width=0.4]grass_toolbox_modulelist</TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<P>
 +
The GRASS Shell inside the GRASS Toolbox provides access to almost all (more
 +
than 300) GRASS modules in command line modus. To offer a more user
 +
friendly working environment, about 200 of the available GRASS modules and
 +
functionalities are also provided by graphical dialogs. These dialogs are
 +
grouped in thematic blocks, but are searchable as well. You find a complete
 +
list of GRASS modules available in QGIS version
 +
in appendix [[#appdx_grass_toolbox_modules]]. It is also possible to
 +
customize the GRASS Toolbox content. It is described in Section
 +
<A HREF="node15.html#sec:toolbox-customizing">9.9.3</A>.
 +
 +
<br><br>
 +
As shown in Figure <A HREF="#fig:grass_modules">34</A>, you can look for the appropriate
 +
GRASS module using the thematically grouped Modules Tree or the
 +
searchable Modules List tab.
 +
 +
<br><br>
 +
Clicking on a grapical module icon a new tab will be added to the toolbox
 +
dialog providing three new sub-tabs Options, Output and
 +
Manual. In Figure <A HREF="#fig:grass_module_dialog">35</A> you see an example
 +
for the GRASS module v.buffer.
 +
 +
<br><br>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_module_dialog"></A><A NAME="subfig:grass_module_option"></A><A NAME="subfig:grass_module_output"></A><A NAME="subfig:grass_module_manual"></A><A NAME="412"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
GRASS Toolbox Module Dialogs </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
 +
</DIV>  [Module Options] [clip=true, width=0.3]grass_module_option [Modules Output] [clip=true, width=0.3]grass_module_output [Module Manual] [clip=true, width=0.3]grass_module_manual</TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<BR><BR>
 +
Options
 +
 +
<BR>
 +
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. 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.
 +
 +
<BR><BR>
 +
Output
 +
 +
<BR>
 +
The Output tab provides information about the output status of the
 +
module. When you click the Run button, the module switches to the
 +
Output tab and you see information about the analysis process. If all
 +
works well, you will finally see a Successfully finished message.
 +
 +
<BR><BR>
 +
Manual
 +
 +
<BR>
 +
The Manual tab shows the HTML help page of the GRASS module. You can
 +
use it to check further module parameters and flags or to get a deeper
 +
knowledge about the purpose of the module. At the end of each module
 +
manual page you see further links to the Main Help index, the
 +
Thematic index and the Full index. These links provide
 +
the same information as if you use the module g.manual
 +
 +
<P>
 +
<BR>
 +
 +
 +
<P>
 +
 +
<H3>
 +
Working with the GRASS LOCATION browser
 +
</H3>
 +
 +
<P>
 +
Another useful feature inside the GRASS Toolbox is the GRASS
 +
LOCATION browser. In Figure&nbsp;<A HREF="#fig:grass_mapset_browser">36</A> you
 +
can see the current working LOCATION with its MAPSETs.
 +
 +
<P>
 +
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.
 +
 +
<P>
 +
 +
<DIV ALIGN="CENTER"><A NAME="fig:grass_mapset_browser"></A><A NAME="449"></A>
 +
<TABLE>
 +
<CAPTION ALIGN="BOTTOM"><STRONG>Figure:</STRONG>
 +
GRASS LOCATION browser </CAPTION>
 +
<TR><TD>
 +
<DIV ALIGN="CENTER">
 +
[clip=true,width=10cm]grass_mapset_browser
 +
 +
</DIV></TD></TR>
 +
</TABLE>
 +
</DIV>
 +
 +
<P>
 +
The toolbar inside the Browser tab offers following tools to manage
 +
the selected LOCATION:
 +
 +
<P>
 +
 +
<UL>
 +
<LI>grass_add_mapAdd selected map to canvas
 +
</LI>
 +
<LI>grass_copy_mapCopy selected map
 +
</LI>
 +
<LI>grass_rename_mapRename selected map
 +
</LI>
 +
<LI>grass_delete_mapDelete selected map
 +
</LI>
 +
<LI>grass_set_regionSet current region to selected map
 +
</LI>
 +
<LI>grass_refreshRefresh browser window
 +
</LI>
 +
</UL>
 +
 +
<P>
 +
The grass_rename_mapRename selected map and
 +
grass_delete_mapDelete selected map only work with maps inside
 +
your currently selected MAPSET. All other tools also work with
 +
raster and vector layers in another MAPSET.
 +
 +
<P>
 +
 +
<H3>
 +
Customizing the GRASS Toolbox
 +
</H3>
 +
 +
<P>
 +
Nearly all GRASS modules can be added to the GRASS toolbox. A XML
 +
interface is provided to parse the pretty simple XML files which configures
 +
the modules appearance and parameters inside the toolbox.
 +
 +
<P>
 +
A sample XML file for generating the module v.buffer (v.buffer.qgm)
 +
looks like this:
 +
<PRE>
 +
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
 +
&lt;!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd"&gt;
 +
 +
&lt;qgisgrassmodule label="Vector buffer" module="v.buffer"&gt;
 +
        &lt;option key="input" typeoption="type" layeroption="layer" /&gt;
 +
        &lt;option key="buffer"/&gt;
 +
        &lt;option key="output" /&gt;
 +
&lt;/qgisgrassmodule&gt;
 +
</PRE>
 +
 +
<P>
 +
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 the modules group, etc. can be found on the QGIS wiki at
 +
<BR>http://wiki.qgis.org/qgiswiki/Adding_New_Tools_to_the_GRASS_Toolbox.
 +
 +
<P>
 
<BR><HR>
 
<BR><HR>

2009年10月4日 (日) 22:24時点における版

GRASS GIS Integration

The GRASS plugin provides access to GRASS GIS [#!GRASSweb!#] databases and functionalities. This includes visualization of GRASS raster and vector layers, digitizing vector layers, editing vector attributes, creating new vector layers and analysing GRASS 2D and 3D data with more than 300 GRASS modules. <P> In this Section we'll introduce the plugin functionalities and give some examples on managing and working with GRASS data. Following main features are provided with the toolbar menu, when you start the GRASS plugin, as described in Section <A HREF="node2.html#sec:starting_grass">9.1</A>: <P>

  • grass_open_mapsetOpen mapset
  • grass_new_mapsetNew mapset
  • grass_close_mapsetClose mapset
  • grass_add_vectorAdd GRASS vector layer
  • grass_add_rasterAdd GRASS raster layer
  • grass_new_vector_layerCreate new GRASS vector
  • grass_editEdit GRASS vector layer
  • grass_toolsOpen GRASS tools
  • grass_regionDisplay current GRASS region
  • grass_region_editEdit current GRASS region

<P>



<A NAME="CHILD_LINKS">Subsections</A>



Starting the GRASS plugin


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 click the menu Plugins > Manage Plugins, select GRASS and click OK.


You can now start loading raster and vector layers from an existing GRASS LOCATION (see Section 9.2). Or you create a new GRASS LOCATION with QGIS (see Section 9.3.1) and import some raster and vector data (see Section 9.4) for further analysis with the GRASS Toolbox (see Section 9.9).

Loading GRASS raster and vector layers

<P> With the GRASS plugin, you can load vector or raster layers using the appropriate button on the toolbar menu. As an example we use the QGIS alaska dataset (see Section #label_sampledata). It includes a small sample GRASS LOCATION with 3 vector layers and 1 raster elevation map.

<P>

  1. Create a new folder 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 > Manage Plugins and selecting GRASS. The GRASS toolbar appears on the toolbar menu.
  4. In the GRASS toolbar, click the grass_open_mapsetOpen 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 alaska and the MAPSET demo.
  7. Click OK. Notice that some previously disabled tools in the GRASS toolbar are now enabled.
  8. Click on grass_add_rasterAdd GRASS raster layer, choose the map name gtopo30 and click OK. The elevation layer will be visualized.
  9. Click on grass_add_vectorAdd 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 #sec:vectorprops, e.g. change opacity, fill and outline color.
  10. Also load the other two vector layers rivers and airports and adapt their properties.

<P> As you see, it is very simple to load GRASS raster and vector layers in QGIS. See 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/data.php .

<P>


<P>

GRASS LOCATION and MAPSET

<P> 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 LOCATION. 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, subregions, or as workspaces for individual team members (Neteler & Mitasova 2008 [#!neteler_mitasova08!#]). In order to analyze vector and raster layers with GRASS modules, you must import them into a GRASS LOCATION. footnode.html#foot485></A> <P>

<A NAME="fig:grass_location"></A><A NAME="486"></A>
Figure 27: GRASS data in the alaska LOCATION (adapted from Neteler & Mitasova 2008 [#!neteler_mitasova08!#])

[clip=true]grass_location

<P>



Subsections

Creating a new GRASS LOCATION

<P> As an an example you find the instructions 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 GIS related chapters. It is useful to download and install the dataset on your computer #label_sampledata">>).

<P>

<A NAME="fig:create_grass_location"></A><A NAME="107"></A>
Figure: Creating a new GRASS LOCATION or a new MAPSET in QGIS

[clip=true, width=10cm]create_grass_location

<P>

  1. Start QGIS and make sure the GRASS plugin is loaded
  2. Visualize the alaska.shp Shapefile (see Section #sec:load_shapefile) from the QGIS alaska dataset #label_sampledata.
  3. In the GRASS toolbar, click on the grass_open_mapsetOpen mapset icon to bring up the MAPSET wizard.
  4. Select an existing GRASS database (GISDBASE) folder grassdata or create one for the new LOCATION using a file manager on your computer. Then click Next.
  5. We can use this wizard to create a new MAPSET within an existing LOCATION (see Section 9.3.2) or to create a new LOCATION altogether. Click on the radio button Create new location (see Figure 28).
  6. Enter a name for the LOCATION - we used alaska and click Next
  7. Define the projection by clicking on the radio button 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 mIconProjectionEnabledprojector icon in the lower right-hand corner of the status bar (see Section #label_projstart).
  9. Click Find to select the projection
  10. Click Next
  11. To define the default region, we have to enter the LOCATION bounds in north, south, east, and west direction. Here we simply click on the button Set current QGIS extent, to apply the extend of the loaded layer alaska.shp as the GRASS default region extend.
  12. Click Next
  13. We also need to define a MAPSET within our new LOCATION. You can name it whatever you like - we used demo. footnode.html#foot487
  14. Check out the summary to make sure it's correct and click Finish
  15. The new LOCATION alaska and two MAPSETs demo and PERMANENT are created. The currently opened working set is MAPSET demo, as you defined.
  16. Notice that some of the tools in the GRASS toolbar that were disabled are now enabled.

<P> 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 9.4). You can also use the already existing vector and raster data in the sample GRASS LOCATION alaska included in the QGIS alaska dataset #label_sampledata and move on to Section 9.5.

<P>

Adding a new MAPSET

<P> A user has only write access to a GRASS MAPSET he created. This means, besides access to his own MAPSET, each user can also read maps in other user's MAPSETs, but he can modify or remove only the maps in his own MAPSET. All MAPSETs include a WIND file that stores the current boundary coordinate values and the currently selected raster resolution (Neteler & Mitasova 2008 [#!neteler_mitasova08!#], see Section <A HREF="node11.html#sec:grass_region">9.8</A>).

<P>

  1. Start QGIS and make sure the GRASS plugin is loaded
  2. In the GRASS toolbar, click on the grass_new_mapsetNew mapset icon to bring up the MAPSET wizard.
  3. Select the GRASS database (GISDBASE) folder grassdata with the LOCATION alaska, where we want to add a further MAPSET, called test.
  4. Click Next.
  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 Select location (see Figure <A HREF="node5.html#fig:create_grass_location">28</A>) and click Next.
  6. Enter the name text for the new MAPSET. Below in the wizard you see a list of existing MAPSETs and its owners.
  7. Click Next, check out the summary to make sure it's all correct and click Finish

<P>


Importing data into a GRASS LOCATION

<P> This Section gives an example how to import raster and vector data into the alaska GRASS LOCATION provided by the QGIS alaska dataset. Therefore we use a landcover raster map landcover.img and a vector GML File lakes.gml from the QGIS alaska dataset #label_sampledata</A>.

<P>

  1. Start QGIS and make sure the GRASS plugin is loaded.
  2. In the GRASS toolbar, click the grass_open_mapsetOpen 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_toolsOpen GRASS tools icon. The GRASS Toolbox (see Section 9.9) dialog appears.
  5. To import the raster map landcover.img, click the module r.in.gdal in the Modules Tree tab. This GRASS module allows to import GDAL supported raster files into a GRASS LOCATION. The module dialog for r.in.gdal appears.
  6. Browse to the folder raster in the QGIS alaska dataset and select the file landcover.img.
  7. As raster output name define landcover_grass and click Run. In the Output tab you see the currently running GRASS command r.in.gdal -o input=/path/to/landcover.img output=landcover_grass.
  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. To import the vector GML file lakes.gml, click the module v.in.ogr in the Modules Tree tab. This GRASS module allows to import OGR supported vector files into a GRASS LOCATION. The module dialog for v.in.ogr appears.
  10. Browse to the folder gml in the QGIS alaska dataset and select the file lakes.gml as OGR file.
  11. As vector output name define lakes_grass and click Run. You don't have to care about the other options in this example. In the Output tab you see the currently running GRASS command 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.

<P>

The GRASS vector data model

<P> It is important to understand the GRASS vector data model prior to digitizing.<A NAME="240"></A> In general, GRASS uses a topological vector model.<A NAME="241"></A> 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 without gaps. An area is identified (labeled) by the centroid of the area.

<P> Besides boundaries and centroids, a vector map can also contain points and lines. All these geometry elements can be mixed in one vector and will be represented in different so called 'layers' inside one GRASS vector map. So in GRASS a layer is not a vector or raster map but a level inside a vector layer. This is important to distinguish carefully. footnode.html#foot242 <P> It is possible to store more 'layers' in one vector dataset. For example, fields, forests and lakes can be stored in one vector. Adjacent forest and lake can share the same boundary, but they have separate attribute tables. It is also possible to attach attributes to boundaries. For example, the boundary between lake and forest is a road, so it can have a different attribute table.

<P> The 'layer' of the feature is defined by 'layer' inside GRASS. 'Layer' is the number which defines if there are more than one layer inside the dataset, e.g. if the geometry is forest or lake. For now, it can be only a number, in the future GRASS will also support names as fields in the user interface.

<P> Attributes can be stored inside the GRASS LOCATION as DBase or SQLITE3 or in external database tables, for example PostgreSQL, MySQL, Oracle, etc.<A NAME="244"></A>

<P> Attributes in database tables are linked to geometry elements using a 'category' value.<A NAME="245"></A> 'Category' (key, ID) is an integer attached to geometry primitives, and it is used as the link to one key column in the database table.



<P>

Creating a new GRASS vector layer

<A NAME="490"></A>


To create a new GRASS vector layer with the GRASS plugin click the grass_new_vector_layerCreate new GRASS vector toolbar icon. Enter a name in the text box and you can start digitizing point, line or polygone geometries, following the procedure described in Section 9.7.


In GRASS it is possible to organize all sort 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 #sec:create_shape).

<P>

Digitizing and editing a GRASS vector layer

<P> The digitizing tools for GRASS vector layers are accessed using the grass_editEdit 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 <A HREF="#fig:grass_digitizing_category">30</A> 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.

<P>
<IMG

WIDTH="500" HEIGHT="11" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="\begin{Tip}

% latex2html id marker 267 \caption{\textsc{Digitizing polygones in ... ...mation of a polygon always to the centroid and not to the boundary. } \end{Tip}">

<P> Toolbar<A NAME="label_grasstoolbar"></A> <P> In Figure <A HREF="#fig:grass_digitizing_toolbar">29</A> you see the GRASS digitizing toolbar icons provided by the GRASS plugin. Table <A HREF="#tab:grass_tools">3</A> explains the available functionalities.

<P>

<A NAME="fig:grass_digitizing_toolbar"></A><A NAME="278"></A>
Figure: GRASS Digitizing Toolbar
  [clip=true,width=12cm]grass_digitizing_toolbar

<P>


<P>

<A NAME="284"></A>

<A NAME="tab:grass_tools"></A>


<A NAME="285"></A>
Table 3: GRASS Digitizing Tools
Icon Tool Purpose
[width=0.7cm]grass_new_point New Point Digitize new point
[width=0.7cm]grass_new_line New Line Digitize new line (finish by selecting new tool)
[width=0.7cm]grass_new_boundary New Boundary Digitize new boundary (finish by selecting new tool)
[width=0.7cm]grass_new_centroid New Centroid Digitize new centroid (label existing area)
[width=0.7cm]grass_move_vertex Move vertex Move one vertex of existing line or boundary and identify new position
[width=0.7cm]grass_add_vertex Add vertex Add a new vertex to existing line
[width=0.7cm]grass_delete_vertex Delete vertex Delete vertex from existing line (confirm selected vertex by another click)
[width=0.7cm]grass_move_line Move element Move selected boundary, line, point or centroid and click on new position
[width=0.7cm]grass_split_line Split line Split an existing line to 2 parts
[width=0.7cm]grass_delete_line Delete element Delete existing boundary, line, point or centroid (confirm selected element by another click)
[width=0.7cm]grass_edit_attributes Edit attributes Edit attributes of selected element (note that one element can represent more features, see above)
[width=0.7cm]grass_close_edit Close Close session and save current status (rebuilds topology afterwards)

</DIV>

<P> Category Tab<A NAME="307"></A>

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

<P>

<A NAME="fig:grass_digitizing_category"></A><A NAME="311"></A>
Figure: GRASS Digitizing Category Tab
 [clip=true,width=10cm]grass_digitizing_category

<P>

  • Mode: what category value shall 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 e.g. used for area boundaries, because the category values are connected via the centroid.
  • Category - A number (ID) 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. Default layer number is 1.

<P>
<IMG

WIDTH="251" HEIGHT="11" ALIGN="BOTTOM" BORDER="0"
SRC="img5.png"
ALT="\begin{Tip}

% latex2html id marker 323 \caption{\textsc{Creating an additional G... ...Table tab you can create your new table connected to your new layer. } \end{Tip}">

<P> Settings Tab<A NAME="label_settingtab"></A><A NAME="329"></A>

<P> 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.

<P>

<A NAME="fig:grass_digitizing_settings"></A><A NAME="333"></A>
Figure: GRASS Digitizing Settings Tab
[clip=true,width=8cm]grass_digitizing_settings

<P> Symbology Tab<A NAME="339"></A>

<P> 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).

<P>

<A NAME="fig:grass_digitizing_symbology"></A><A NAME="343"></A>
Figure: GRASS Digitizing Symbolog Tab
[clip=true,width=8cm]grass_digitizing_symbology

<P> Table Tab <A NAME="349"></A>

<P> 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 <A HREF="node9.html#sec:creating_new_grass_vectors">9.6</A>).

<P>

<A NAME="fig:grass_digitizing_table"></A><A NAME="354"></A>
Figure: GRASS Digitizing Table Tab
[clip=true,width=10cm]grass_digitizing_table



<P>

The GRASS region tool

<P> The region definition (setting a spatial working window) in GRASS is important for working with raster layers. Vector analysis is per default not limited to any defined region definitions. All newly-created rasters will have the spatial extension and resolution of the currently defined GRASS region, regardless of their original extension and resolution. The current GRASS region is stored in the $LOCATION/$MAPSET/WIND file, and it defines north, south, east and west bounds, number of columns and rows, horizontal and vertical spatial resolution.

It is possible to switch on/off the visualization of the GRASS region in the QGIS canvas using the grass_regionDisplay current GRASS region button. <A NAME="371"></A>.

With the grass_region_editEdit 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. It also allows 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.<A NAME="376"></A> The GRASS module g.region provide a lot more parameters to define an appropriate region extend and resolution for your raster analysis. You can use these parameters with the GRASS Toolbox, described in Section 9.9.

<P>

The GRASS toolbox

<P> The grass_toolsOpen 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 where you have write-permission (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.

<P>



Subsections



Working with GRASS modules

<P>

<A NAME="fig:grass_modules"></A><A NAME="subfig:grass_module_tree"></A><A NAME="subfig:grass_module_list"></A><A NAME="394"></A>
Figure: GRASS Toolbox and searchable Modules List
[Modules Tree] [clip=true, width=0.4]grass_toolbox_moduletree [Searchable Modules List] [clip=true, width=0.4]grass_toolbox_modulelist

<P> The GRASS Shell inside the GRASS Toolbox provides access to almost all (more than 300) GRASS modules in command line modus. To offer a more user friendly working environment, about 200 of the available GRASS modules and functionalities are also provided by graphical dialogs. These dialogs are grouped in thematic blocks, but are searchable as well. You find a complete list of GRASS modules available in QGIS version in appendix #appdx_grass_toolbox_modules. It is also possible to customize the GRASS Toolbox content. It is described in Section <A HREF="node15.html#sec:toolbox-customizing">9.9.3</A>.



As shown in Figure <A HREF="#fig:grass_modules">34</A>, you can look for the appropriate GRASS module using the thematically grouped Modules Tree or the searchable Modules List tab.



Clicking on a grapical module icon a new tab will be added to the toolbox dialog providing three new sub-tabs Options, Output and Manual. In Figure <A HREF="#fig:grass_module_dialog">35</A> you see an example for the GRASS module v.buffer.



<A NAME="fig:grass_module_dialog"></A><A NAME="subfig:grass_module_option"></A><A NAME="subfig:grass_module_output"></A><A NAME="subfig:grass_module_manual"></A><A NAME="412"></A>
Figure: GRASS Toolbox Module Dialogs
[Module Options] [clip=true, width=0.3]grass_module_option [Modules Output] [clip=true, width=0.3]grass_module_output [Module Manual] [clip=true, width=0.3]grass_module_manual



Options


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. 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.



Output


The Output tab provides information about the output status of the module. When you click the Run button, the module switches to the Output tab and you see information about the analysis process. If all works well, you will finally see a Successfully finished message.



Manual


The Manual tab shows the HTML help page of the GRASS module. You can use it to check further module parameters and flags or to get a deeper knowledge about the purpose of the module. At the end of each module manual page you see further links to the Main Help index, the Thematic index and the Full index. These links provide the same information as if you use the module g.manual

<P>


<P>

Working with the GRASS LOCATION browser

<P> Another useful feature inside the GRASS Toolbox is the GRASS LOCATION browser. In Figure <A HREF="#fig:grass_mapset_browser">36</A> you can see the current working LOCATION with its MAPSETs.

<P> 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.

<P>

<A NAME="fig:grass_mapset_browser"></A><A NAME="449"></A>
Figure: GRASS LOCATION browser

[clip=true,width=10cm]grass_mapset_browser

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

<P>

  • grass_add_mapAdd selected map to canvas
  • grass_copy_mapCopy selected map
  • grass_rename_mapRename selected map
  • grass_delete_mapDelete selected map
  • grass_set_regionSet current region to selected map
  • grass_refreshRefresh browser window

<P> The grass_rename_mapRename selected map and grass_delete_mapDelete selected map only work with maps inside your currently selected MAPSET. All other tools also work with raster and vector layers in another MAPSET.

<P>

Customizing the GRASS Toolbox

<P> Nearly all GRASS modules can be added to the GRASS toolbox. A XML interface is provided to parse the pretty simple XML files which configures the modules appearance and parameters inside the toolbox.

<P> A sample XML file for generating the module v.buffer (v.buffer.qgm) looks like this:

<?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>

<P> 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 the modules group, etc. can be found on the QGIS wiki at
http://wiki.qgis.org/qgiswiki/Adding_New_Tools_to_the_GRASS_Toolbox.

<P>