12.1. Lesson: 草地设置
在QGIS中使用GRASS要求您以一种稍微不同的方式来考虑界面。请记住,您不是直接在QGIS中工作,而是在GRASS中工作 via QGIS.因此,请确保您已经安装了带有Grass支持的QGIS Desktop。
要在Windows上使用GRASS打开QGIS会话,您必须单击
QGIS Desktop with GRASS
偶像。
The goal for this lesson: 在清华大学地理信息系统中开始一个草地项目。
12.1.1.
Follow Along: Start a New GRASS Session
要在QGIS中启动GRASS,您需要像激活任何其他插件一样激活它:
GRASS面板处于非活动状态,因为在使用GRASS之前,您需要创建一个 Mapset
。GRASS始终在数据库环境中工作,这意味着您需要将想要使用的所有数据导入到GRASS数据库中。
GRASS数据库的结构简单明了,尽管乍一看似乎非常复杂。您应该知道的最重要的一点是,数据库的上层是 Location
。每个 Location
可以包含不同的 Mapset
:in every Mapset
您会发现 PERMANENT
映射集,因为它是由GRASS默认创建的。每个 Mapset
将数据(栅格、矢量等)包含在特定的结构中,但不要担心,GRASS会为您处理这一点。
只要记住: Location
含 Mapset
其中包含数据。有关更多信息,请访问 GRASS website 。

图 12.32 GRASS数据库结构(来自GRASS文档)
12.1.2.
Follow Along: Start a New GRASS Project
按下
菜单:系统将要求您选择GRASS数据库的位置。
将其设置为GRASS将用于设置其数据库的目录:
单击 Next 。
格拉斯需要创建一个 Location
,它描述了您将工作的地理区域的最大范围,也称为Grass Region
。
备注
该区域对于草来说极其重要,因为它描述了草的所有层都将被考虑的区域。外面的一切都不会被考虑。不要担心,在创建位置后,您始终可以更改草地区域的范围
给新地点打电话
SouthAfrica
:单击 Next 。
我们将与
WGS 84
,因此搜索并选择此CRS:单击 Next 。
现在选择区域 South Africa 从下拉列表中选择并单击 Set :
单击 Next 。
创建一个mapset,这是您要使用的映射文件。
完成后,您将看到一个对话框询问输入的所有信息的摘要。
单击 Finish 。
单击 OK 在成功对话框上。
您将看到GRASS面板将变为活动状态,并且您可以开始使用所有GRASS工具。
12.1.3.
Follow Along: Loading Vector Data into GRASS
您现在有了一个空白地图,在开始使用所有GRASS工具之前,您必须将数据加载到GRASS数据库中,特别是加载到 Mapset
。不能将GRASS工具与未加载到GRASS中的图层一起使用 Mapset
。
有许多不同的方法可以在GRASS数据库中加载数据。让我们从第一个开始。
Follow Along: Load data using the QGIS Browser
在部分中 浏览器面板 我们看到,在QGIS中加载数据的最简单、最快捷的方法是浏览器面板。
从QGIS浏览器中识别的GRASS数据为 real GRASS数据,您可以注意到它,因为您将看到GRASS映射集旁边的GRASS图标。此外,您还会看到 打开的地图集旁边的图标。

你可以很容易地 drag and drop 从文件夹到GRASS映射集的层。
让我们尝试将 roads
层叠到 grass_mapset
的映射集 SouthAfrica
地点。
转到浏览器,只需将 roads
图层来自 training_data.gpkg
将GeoPackage文件放入 grass_mapset
地图集。

就这样!如果展开地图集,您将看到导入的 roads
一层。现在,您可以像加载所有其他层一样,在QGIS中加载导入的层。
小技巧
也可以将图层图例面板中的图层加载到浏览器面板中的地图集。这将极大地加快您的工作流程!
Follow Along: Load data using the GRASS Panel
我们现在将使用 long 方法来加载 rivers.shp
将图层添加到同一地图集。
像往常一样将数据加载到QGIS中。使用
rivers.shp
数据集(位于exercise_data/shapefile/
文件夹)加载后,请立即单击 Filter 盒子里的
GRASS Panel
并通过输入术语找到矢量导入工具v.in.ogr.qgis
:警告
有两个类似的工具:
v.in.ogr.qgis
和v.in.ogr.qgis.loc
。我们要找的是 first 一。这个
v
代表 vector ,in
表示将数据导入GRASS数据库的功能,ogr
是用于读取矢量数据的软件库,以及qgis
意味着该工具将从已加载到QGIS中的向量中查找向量。找到此工具后,请单击它以调出该工具本身。选择 rivers 中的层 Loaded Layer 框中,然后键入并命名它
g_rivers
要防止混淆,请执行以下操作:备注
请注意下提供的额外导入选项 Advanced Options 。其中包括为用于导入数据的SQL查询添加WHERE子句的能力。
单击 Run 以开始导入。
完成后,请单击 View output 按钮以查看地图中新导入的草层。
首先关闭导入工具(单击 Close 按钮紧靠在 View output ),然后关闭 GRASS Tools 窗户。
删除原始文件 rivers 一层。
现在,您只剩下QGIS地图中显示的导入草层。
12.1.4.
Follow Along: Loading Raster Data into GRASS
您可以使用与导入矢量层相同的方式导入栅格层。
我们将在GRASS地图集中导入图层 srtm_41_19_4326.tif
。
备注
栅格层已经在正确的CRS中, WGS 84
。如果不同CRS中有图层,则必须在GRASS地图集的同一CRS中对其进行重新投影
加载
srtm_41_19_4326.tif
QGIS中的图层打开 GRASS Tools 再次对话。
按下 Modules List 标签。
搜寻
r.in.gdal.qgis
然后双击该工具以打开该工具的对话框。对其进行设置,以便输入图层为
srtm_41_19_4326.tif
输出结果是g_dem
。单击 Run 。
该过程完成后,请单击 View output 。
Close 当前选项卡,然后 Close 整个对话。
您现在可以删除原始的
srtm_41_19_4326.tif
一层。
12.1.5.
Try Yourself Add Layers to Mapset
尝试在GRASS地图集中导入矢量层 water.shp
和 places.shp
从 exercise_data/shapefile/
文件夹。就像我们为 rivers
将导入的图层重命名为 g_water
和 g_places
为避免混淆
回答
您可以通过在浏览器中拖放将图层(矢量和栅格)添加到GRASS地图集中(请参见 Follow Along: Load data using the QGIS Browser )或使用 v.in.gdal.qgis
对于向量和 r.in.gdal.qgis
用于栅格层。
12.1.6.
打开现有GRASS地图集
如果您有一个现有的GRASS映射集,则可以在QGIS的另一个任务中轻松地重新打开它。
您有几种方法可以打开GRASS贴图集,让我们来探索其中的一些方法。
让我们通过单击 Close Mapset 按钮中的 GRASS Tools 窗户。
Follow Along: Using the GRASS plugin
按下 Plugins --> GRASS --> Open Mapset 菜单旁边的 Plugins --> GRASS --> New Mapset 我们在上一节中看到的菜单。
浏览到GRASS数据库文件夹:小心!必须选择父文件夹,而不是GRASS贴图集文件夹。的确,草会读到所有的
Locations
数据库和所有Mapsets
每个人的Location
:选择
Location
SouthAfrica 以及Mapset
grass_mapset 这是我们之前创造的。
就这样!GRASS面板将变为活动状态,这意味着地图集已正确打开。
Follow Along: Using the QGIS Browser
更快、更容易的是打开一个 Mapset
使用QGIS浏览器:
关闭地图集(如果它已打开),方法是单击 Close Mapset 按钮中的 GRASS Tools 窗户。
在QGIS浏览器中,浏览到GRASS数据库所在的文件夹。
点击 Open mapset :
地图集现在已打开,可以使用了!
小技巧
在草上单击鼠标右键可为您提供许多不同的设置。试着去探索它们,看看所有有用的选项。
12.1.7. In Conclusion
获取数据的GRASS工作流与QGIS方法略有不同,因为GRASS将其数据加载到空间数据库结构中。但是,通过使用QGIS作为前端,可以使用QGIS中的现有图层作为GRASS的数据源,从而使GRASS地图集的设置变得更容易。
12.1.8. What's Next?
现在数据已经导入到GRASS中,我们可以看看GRASS提供的高级分析操作。