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,您需要像激活任何其他插件一样激活它:

  1. 首先,打开一个新的QGIS项目。

  2. Plugin Manager ,启用 GRASS 在列表中:

    ../../../_images/enable_grass.png

    将出现GRASS工具栏和GRASS面板:

    ../../../_images/grass_toolbar.png

    图 12.30 草工具栏

    ../../../_images/grass_panel.png

    图 12.31 草板

GRASS面板处于非活动状态,因为在使用GRASS之前,您需要创建一个 Mapset 。GRASS始终在数据库环境中工作,这意味着您需要将想要使用的所有数据导入到GRASS数据库中。

GRASS数据库的结构简单明了,尽管乍一看似乎非常复杂。您应该知道的最重要的一点是,数据库的上层是 Location 。每个 Location 可以包含不同的 Mapset :in every Mapset 您会发现 PERMANENT 映射集,因为它是由GRASS默认创建的。每个 Mapset 将数据(栅格、矢量等)包含在特定的结构中,但不要担心,GRASS会为您处理这一点。

只要记住: LocationMapset 其中包含数据。有关更多信息,请访问 GRASS website

../../../_images/grass_database.png

图 12.32 GRASS数据库结构(来自GRASS文档)

12.1.2. 基本信息 Follow Along: Start a New GRASS Project

  1. 按下 Plugins ► GRASS ► New Mapset 菜单:

    ../../../_images/grass_menu.png

    系统将要求您选择GRASS数据库的位置。

  2. 将其设置为GRASS将用于设置其数据库的目录:

    ../../../_images/grass_folder.png
  3. 单击 Next

格拉斯需要创建一个 Location ,它描述了您将工作的地理区域的最大范围,也称为Grass Region

备注

该区域对于草来说极其重要,因为它描述了草的所有层都将被考虑的区域。外面的一切都不会被考虑。不要担心,在创建位置后,您始终可以更改草地区域的范围

  1. 给新地点打电话 SouthAfrica

    ../../../_images/new_location.png
  2. 单击 Next

  3. 我们将与 WGS 84 ,因此搜索并选择此CRS:

    ../../../_images/wgs_84_selected.png
  4. 单击 Next

  5. 现在选择区域 South Africa 从下拉列表中选择并单击 Set

    ../../../_images/set_south_africa.png
  6. 单击 Next

  7. 创建一个mapset,这是您要使用的映射文件。

    ../../../_images/grass_mapset.png

    完成后,您将看到一个对话框询问输入的所有信息的摘要。

    ../../../_images/grass_final.png
  8. 单击 Finish

  9. 单击 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图标。此外,您还会看到 GrasMapsetOpen 打开的地图集旁边的图标。

../../../_images/grass_browser.png

备注

您将看到正常文件夹GRASS的复制位置:GRASS Mapset 数据是位于 草皮徽标 文件夹

你可以很容易地 drag and drop 从文件夹到GRASS映射集的层。

让我们尝试将 roads 层叠到 grass_mapset 的映射集 SouthAfrica 地点。

转到浏览器,只需将 roads 图层来自 training_data.gpkg 将GeoPackage文件放入 grass_mapset 地图集。

../../../_images/grass_browser_import.png

就这样!如果展开地图集,您将看到导入的 roads 一层。现在,您可以像加载所有其他层一样,在QGIS中加载导入的层。

小技巧

也可以将图层图例面板中的图层加载到浏览器面板中的地图集。这将极大地加快您的工作流程!

基本信息 Follow Along: Load data using the GRASS Panel

我们现在将使用 long 方法来加载 rivers.shp 将图层添加到同一地图集。

  1. 像往常一样将数据加载到QGIS中。使用 rivers.shp 数据集(位于 exercise_data/shapefile/ 文件夹)

  2. 加载后,请立即单击 Filter 盒子里的 GRASS Panel 并通过输入术语找到矢量导入工具 v.in.ogr.qgis

    警告

    有两个类似的工具: v.in.ogr.qgisv.in.ogr.qgis.loc 。我们要找的是 first 一。

    ../../../_images/grass_panel_import.png

    这个 v 代表 vectorin 表示将数据导入GRASS数据库的功能, ogr 是用于读取矢量数据的软件库,以及 qgis 意味着该工具将从已加载到QGIS中的向量中查找向量。

  3. 找到此工具后,请单击它以调出该工具本身。选择 rivers 中的层 Loaded Layer 框中,然后键入并命名它 g_rivers 要防止混淆,请执行以下操作:

    ../../../_images/grass_tool_selected.png

    备注

    硬的 请注意下提供的额外导入选项 Advanced Options 。其中包括为用于导入数据的SQL查询添加WHERE子句的能力。

  4. 单击 Run 以开始导入。

  5. 完成后,请单击 View output 按钮以查看地图中新导入的草层。

  6. 首先关闭导入工具(单击 Close 按钮紧靠在 View output ),然后关闭 GRASS Tools 窗户。

  7. 删除原始文件 rivers 一层。

现在,您只剩下QGIS地图中显示的导入草层。

12.1.4. 基本信息 Follow Along: Loading Raster Data into GRASS

您可以使用与导入矢量层相同的方式导入栅格层。

我们将在GRASS地图集中导入图层 srtm_41_19_4326.tif

备注

栅格层已经在正确的CRS中, WGS 84 。如果不同CRS中有图层,则必须在GRASS地图集的同一CRS中对其进行重新投影

  1. 加载 srtm_41_19_4326.tif QGIS中的图层

  2. 打开 GRASS Tools 再次对话。

  3. 按下 Modules List 标签。

  4. 搜寻 r.in.gdal.qgis 然后双击该工具以打开该工具的对话框。

  5. 对其进行设置,以便输入图层为 srtm_41_19_4326.tif 输出结果是 g_dem

    ../../../_images/g_dem_settings.png
  6. 单击 Run

  7. 该过程完成后,请单击 View output

  8. Close 当前选项卡,然后 Close 整个对话。

    ../../../_images/g_dem_result.png
  9. 您现在可以删除原始的 srtm_41_19_4326.tif 一层。

12.1.5. 基本信息 Try Yourself Add Layers to Mapset

尝试在GRASS地图集中导入矢量层 water.shpplaces.shpexercise_data/shapefile/ 文件夹。就像我们为 rivers 将导入的图层重命名为 g_waterg_places 为避免混淆

12.1.6. 基本信息 打开现有GRASS地图集

如果您有一个现有的GRASS映射集,则可以在QGIS的另一个任务中轻松地重新打开它。

您有几种方法可以打开GRASS贴图集,让我们来探索其中的一些方法。

让我们通过单击 Close Mapset 按钮中的 GRASS Tools 窗户。

基本信息 Follow Along: Using the GRASS plugin

  1. 按下 Plugins --> GRASS --> Open Mapset 菜单旁边的 Plugins --> GRASS --> New Mapset 我们在上一节中看到的菜单。

  2. 浏览到GRASS数据库文件夹:小心!必须选择父文件夹,而不是GRASS贴图集文件夹。的确,草会读到所有的 Locations 数据库和所有 Mapsets 每个人的 Location

    ../../../_images/grass_open_mapset1.png
  3. 选择 Location SouthAfrica 以及 Mapset grass_mapset 这是我们之前创造的。

就这样!GRASS面板将变为活动状态,这意味着地图集已正确打开。

基本信息 Follow Along: Using the QGIS Browser

更快、更容易的是打开一个 Mapset 使用QGIS浏览器:

  1. 关闭地图集(如果它已打开),方法是单击 Close Mapset 按钮中的 GRASS Tools 窗户。

  2. 在QGIS浏览器中,浏览到GRASS数据库所在的文件夹。

  3. 右键单击映射集(请记住,映射集具有 草皮徽标 旁边的草图标)。您将看到一些选项。

  4. 点击 Open mapset

    ../../../_images/grass_open_mapset_browser.png

地图集现在已打开,可以使用了!

小技巧

在草上单击鼠标右键可为您提供许多不同的设置。试着去探索它们,看看所有有用的选项。

12.1.7. In Conclusion

获取数据的GRASS工作流与QGIS方法略有不同,因为GRASS将其数据加载到空间数据库结构中。但是,通过使用QGIS作为前端,可以使用QGIS中的现有图层作为GRASS的数据源,从而使GRASS地图集的设置变得更容易。

12.1.8. What's Next?

现在数据已经导入到GRASS中,我们可以看看GRASS提供的高级分析操作。