8.4. 课: 补充练习
在本课,您将在QGIS中引导完成完整的GIS分析。
备注
本课由 Linfiniti Consulting (南非) 和 Siddique Motala (开普半岛科技大学) 共同开发
8.4.1. 问题陈述
您的任务是在开普半岛及其周边寻找适合珍稀植物凡波斯物种栖息地的区域。调查范围涵盖开普敦和位于北部Melkbosstrand及南部Strand之间的开普敦半岛。植物学家为您提供了有关物种的以下特性:
生长在朝东的山坡上
山坡坡度在 15% 和 60% 之间
年总降雨量 > 1000 毫米的地区
距离人类居住区至少250米
植被面积至少应为6000平米的区域
作为这所大学的学生,您已同意在四个不同的适宜土地寻找这种植物,并希望这四个适生区是最靠近您居住的开普敦大学。使用所学的GIS技术来确定应该去哪里寻找。
8.4.2. 方案概要
本练习数据可在 exercise_data/more_analysis
文件夹找到。
您将找到离开普敦大学最近的四个适生区。
解决方案包括:
分析DEM栅格图层,找到朝东的山坡并具有合适坡度的斜坡
分析雨量栅格图层,找到适合降雨量的地区
分析分区矢量图层,找到远离人类居住区且大小合适的区域
8.4.3. 跟我做: 设置地图
8.4.4. 将数据加载到地图
为了处理数据,需要将必要的图层 (街道名、分区、降雨量、DEM、行政区) 加载到地图画布。
矢量数据...
单击 ... 按钮浏览矢量数据集。
在出现的对话框中,打开
exercise_data/more_analysis/Streets
目录。选择文件
Street_Names_UTM33S.shp
。单击 打开 。
该对话框关闭后并显示原对话框,在 矢量数据集 旁边的文本字段中给定了文件路径,这样可以确保选择了正确的文件。如果您愿意,也可以在该字段手动输入文件路径。
单击 添加 ,矢量图层将加载到地图中。它的颜色是自动分配的,您稍后要进行更改。
将图层重命名为
Streets
:在 图层 面板右键单击该图层 (默认情况下,屏幕左侧的窗格)。
在出现的快捷菜单中单击 重命名图层 并进行重命名,完成后按 Enter 键。
重复矢量添加过程,但这次选择的是
Zoning
目录中的Generalised_Zoning_Dissolve_UTM33S.shp
文件。重命名为
Zoning
。将矢量图层
admin_boundaries/Western_Cape_UTM33S.shp
加载到地图。重命名为
Districts
。
栅格数据...
8.4.5. 更改图层顺序
在 图层 面板单击并上下拖动图层,更改它们在地图上的显示顺序,以便可以看到尽可能多的图层。
现在,所有数据都已加载并正确可见,分析就可以开始了。最好先执行裁剪运算,这样就不会浪费处理资源来计算那些无论如何都不会被使用区域的值。
8.4.6. 查找正确的地区
鉴于上述调查区域,需要将我们的地区限制为以下地区:
Bellville
Cape
Goodwood
Kuils River
Mitchells Plain
Simon Town
Wynberg
在 图层 面板中的
Districts
图层上右键单击。在出现的菜单中,选择 过滤... 菜单项。此时会出现 查询构建器 对话框。
现在,您将构建一个查询仅选择候选地区:
在 字段 列表,双击
NAME_2
字段,使其出现在下面的 SQL where clause 文本字段中。单击 IN 按钮将其追加到SQL查询。
打开括号。
单击 (当前为空) 值 列表下方的 全部 按钮。
短暂延迟后,将用所选字段 (
NAME_2
) 的值填充 值 列表。双击 值 列表中的值
Bellville
,将其追加到SQL查询中。添加逗号并双击值列表添加
Cape
地区。对其余地区重复上一步进行添加。
关闭括号。
最终的查询应该是 (括号中的地区顺序无关紧要):
"NAME_2" in ('Bellville', 'Cape', 'Goodwood', 'Kuils River', 'Mitchells Plain', 'Simon Town', 'Wynberg')
备注
也可以使用
OR
运算符,查询如下所示:"NAME_2" = 'Bellville' OR "NAME_2" = 'Cape' OR "NAME_2" = 'Goodwood' OR "NAME_2" = 'Kuils River' OR "NAME_2" = 'Mitchells Plain' OR "NAME_2" = 'Simon Town' OR "NAME_2" = 'Wynberg'
单击 确定 两次。
地图中显示的地区现在仅限于上面列表中的地区。
8.4.7. 裁剪栅格
现在您已经有了关注区,可以将栅格裁剪到此区域。
选择菜单项
,打开裁剪对话框。在 输入图层 下拉列表中,选择
DEM
图层。在 掩膜图层 下拉列表中,选择
Districts
图层。向下滚动,通过单击 ... 按钮并选择 保存到文件... ,在 已裁剪 (掩膜) 文本字段中指定输出位置。
导航到
Rasterprac
目录输入文件名 -
DEM_clipped.tif
保存
单击 运行
裁剪运算完成后,让 按掩膜图层裁剪栅格 对话框处于打开状态,便于能够重新使用裁剪区域。
在 输入图层 下拉列表中选择
Rainfall
栅格图层,并将输出保存为Rainfall_clipped.tif
。其他选项不要更改,然后单击 运行 。
第二次裁剪运算完成后,可以关闭 按掩膜图层裁剪栅格 对话框。
保存地图
对齐栅格
为了进行分析,我们需要栅格具有相同的CRS,并且它们必须对齐。
首先,我们将降雨数据的分辨率更改为30米 (像素大小):
在 图层 面板,确保
Rainfall_clipped
是活动图层 (即,单击可高亮显示)单击 变形 (重投影) 对话框
,打开在 要使用的重采样方法 ,从下拉菜单中选择 双线性
设置 以目标地理参考单位表示的输出文件分辨率 为
30
向下滚动至 重投影 ,在您的
rainfall/reprojected
目录中保存输出为Rainfall30.tif
然后我们对齐DEM:
在 图层 面板,确保
DEM_clipped
是活动图层 (即,单击可高亮显示)单击 变形 (重投影) 对话框
,打开在 目标CRS ,从下拉菜单中选择 工程CRS: EPSG:32733 - WGS 84 / UTM zone 33S
在 要使用的重采样方法 ,从下拉菜单中选择 双线性
设置 以目标地理参考单位表示的输出文件分辨率 为
30
向下滚动到 新建输出文件配准后的范围 ,使用文本框右侧的按钮选择
向下滚动至 重投影 ,在您的
DEM/reprojected
目录中保存输出为DEM30.tif
为了正确看到发生的变化,需要更改图层的符号。
8.4.8. 更改矢量图层的符号
在 图层 面板,右键单击 Streets 图层
从出现的菜单中选择 属性
在出现的对话框中切换到 符号化 选项卡
单击顶部控件中的 线 条目
在下面的列表中选择符号或设置新符号 (颜色、透明度等)
单击 确定 关闭 图层属性 对话框。这将更改 Streets 图层的渲染
对 Zoning 图层执行类似的处理,并为其选择合适的颜色
8.4.9. 更改栅格图层的符号
栅格图层符号有点不同。
打开 Rainfall30 栅格图层的 属性 对话框
切换到 符号化 选项卡。您会注意到,此对话框与用于矢量图层的样式大不一样。
展开 最小/最大值设置
确保选择了 均值 +/- 标准差 按钮
确保关联框中的值为
2.00
为了 对比度增强 ,确保显示为 拉伸至极小极大
对于 颜色梯度 ,将其更改为 白到黑
单击 确定
Rainfall30
栅格 (如果可见) 应该会改变颜色,使您可以看到每个像素的不同亮度值对
DEM30
图层重复相同的处理,但将用于拉伸的标准差设置为4.00
8.4.10. 清理地图
从 图层 面板移除原
Rainfall
和DEM
图层,以及Rainfall_clipped
和DEM_clipped
:在这些图层上右键单击,然后选择 移除图层 。
备注
这不会从存储设备删除数据,只是将其从地图中移除。
保存地图
现在可以通过取消勾选 图层 面板中矢量图层旁边的框来隐藏它们。这将使地图渲染速度更快,并为您节省一些时间
8.4.11. 创建山体阴影
为了创建山体阴影,您需要使用为此目的而编写的算法。
在 图层 面板,确保``DEM30`` 是活动图层 (即,单击可高亮显示)
单击 山体阴影 对话框
菜单项,打开向下滚动到 山体阴影 ,在您的
Rasterprac
目录中保存输出为hillshade.tif
单击 运行
等待完成处理
新的 hillshade
图层已出现在 图层 面板。
在 图层 面板中的
hillshade
图层上右键单击,然后打开 属性 对话框单击 透明度 选项卡,将 全局不透明度 滑动条设置为
20%
单击 确定
请注意,透明山体阴影叠加在裁剪后的DEM时的效果。您可能需要更改图层的顺序,或单击
Rainfall30
图层查看效果
8.4.12. 坡度
单击
菜单项,打开:guilabel:坡度 算法对话框选择
DEM30
作为 输入图层勾选 用百分比而不是度来表示坡度 。坡度可以用不同的单位 (百分比或度) 表示。评估条件表明,适合的植物生长的坡度在15%到60%之间的斜坡上。所以需要确保我们的坡度数据是用百分比表示
为您的输出指定适当的文件名和位置
单击 运行
坡度图像已计算并添加到地图中。和往常一样,是以灰度渲染的。将符号更改为更有趣的符号:
打开图层 属性 对话框 (通常使用图层的右键单击菜单)
单击 符号化 选项卡
在显示 单波段灰度 的地方 ( 渲染类型 下拉菜单中),请将其更改为 单波段伪彩色
为 最小/最大值设置 选择 均值 +/- 标准差 x ,其值为
2.0
选择适当的 颜色渐变
单击 运行
8.4.13. 试一试 坡向
使用与计算坡度相同的方法,在 坡向... 。
菜单中选择请记住定期保存工程。
8.4.14. 重分类栅格
选择
指定
Rasterprac
目录作为 输出图层 的位置 (单击 ... 按钮),并将其保存为slope15_60.tif
确保选中 执行算法后打开输出文件 的方框
在左侧的 栅格波段 列表中,显示您在 图层 面板看到的所有栅格图层。如果您的坡度图层被称为 slope ,它将被列为
slope@1
,表示坡度栅格的波段是 1 。坡度需要介于
15
和60
度之间。使用界面中的列表项和按钮,构建以下表达式:
(slope@1 > 15) AND (slope@1 < 60)
将 输出图层 字段设置为适当的位置和文件名。
单击 运行
现在使用同样的方法找到正确的坡向 (朝东: 45
到 135
度)。
构建以下表达式:
(aspect@1 > 45) AND (aspect@1 < 135)
当生成栅格中所有朝东的斜坡都是白色时,您就会知道它起作用了 (就像被早晨的阳光照亮一样)。
使用同样的方法找到符合要求的降雨量 (大于 1000
毫米)。使用以下表达式:
Rainfall30@1 > 1000
现在,在单独的栅格中分别拥有所有三个条件,您需要将它们组合起来,便于查看哪些区域满足所有条件。为此,栅格将彼此相乘。产生这种情况时,所有重叠像素的值为 1
时将保留 1
的值 (即位置符合要求),但如果三个栅格中的任何一个像素的值为 0
(即位置不符合条件),则结果将为 0
。这样,结果将只包含满足所有适合条件的重叠区域。
8.4.15. 组合栅格
打开 栅格计算器 (
)构建以下表达式 (为图层使用适当的名称):
[aspect45_135] * [slope15_60] * [rainfall_1000]
将输出位置设置为
Rasterprac
目录将输出栅格命名为
aspect_slope_rainfall.tif
单击 运行
新栅格现在可以正确显示满足所有三个条件的区域。
保存工程。
需要满足的下一个条件是,该区域必须距离市区 250
米。将通过确保我们计算的面积在农村地区内,并且距离该地区边缘250米或以上来满足这一要求。因此,需要首先找到所有的农村地区。
8.4.16. 寻找农村地区
在 图层 面板隐藏所有图层
取消隐藏
Zoning
矢量图层右键单击并打开 属性表 对话框。请注意,这片土地有许多不同的分区方式,我们想分离农村地区。关闭属性表
右键单击
Zoning
图层并选择 过滤... ,打开 查询构建器 对话框构建以下查询:
"Gen_Zoning" = 'Rural'
如果您遭到困难,请参阅前面的操作指南。
单击 确定 关闭 查询构建器 对话框。查询应该返回一个要素
应该可以从 Zoning
图层看到表示农村的多边形。您需要进行保存。
在
Zoning
图层的右键单击菜单中,选择将图层保存在
Rasterprac
目录中命名输出文件为
rural.shp
单击 确定
保存工程
现在需要排除距离农村地区边缘 250米
以内的区域,这通过创建负缓冲区来实现。如下所述。
8.4.17. 创建负缓冲区
单击菜单项
在出现的对话框中,选择
rural
图层作为输入矢量图层 (不应勾选 仅选中的要素 )将 距离 设置为
-250
,负值表示缓冲区将是一个内部缓冲区。确保下拉菜单中的单位为米。在 缓冲区建立后 ,将输出文件保存在
Rasterprac
目录中,并将其命名为rural_buffer.shp
单击 保存
单击 运行 并等待完成数据处理
关闭 缓冲区 对话框
为确保您的缓冲区正常工作,请注意
rural_buffer
图层与rural
图层的差异。为了观察差异,可能需要更改绘图顺序。移除
rural
图层保存工程
现在,您需要将 rural_buffer
矢量图层与 aspect_slope_rainfall
栅格相结合。要将它们组合起来,我们需要更改其中一个图层的数据格式。在这种情况下,您将对栅格进行矢量化,因为在计算面积时,矢量图层更方便。
8.4.18. 矢量化栅格
单击菜单项
选择
aspect_slope_rainfall
栅格作为 输入图层将 新建字段名称 设置为
suitable
(默认字段名为DN
- Digital Number 数据)保存输出。在 矢量化 中选择 文件另存为 ,将位置设置为
Rasterprac
,并命名文件为aspect_slope_rainfall_all.shp
单击 运行
数据处理完成后关闭对话框
栅格的所有区域都已矢量化,因此只需在 suitable
的字段中选择值为 1
的区域 (数字量化值 - Digital Number)。
打开新矢量图层的 查询构建器 对话框 (右键单击 - 过滤...)
构建此查询:
"suitable" = 1
单击 确定
确定查询完成后 (只有满足所有三个条件的区域,即值为
1
的区域可见),从结果新建矢量文件,在图层的右键单击菜单中使用将该文件保存在
Rasterprac
目录中命名文件为
aspect_slope_rainfall_1.shp
从地图中移除
aspect_slope_rainfall_all
图层保存您的工程
当我们使用算法对栅格进行矢量化时,有时该算法会产生所谓的 "无效几何图形" ,即存在空多边形,或其中存在错误的多边形,这将在未来很难进行分析。所以,我们需要使用 "修正几何图形" 工具。
8.4.19. 修正几何图形
在 处理工具箱 搜索并 执行... "修正几何图形"
对于 输入图层 请选择
aspect_slope_rainfall_1
在 已修正几何图形 中选择 文件另存为 ,将输出保存到
Rasterprac
,并将文件命名为fixed_aspect_slope_rainfall.shp
单击 运行
数据处理完成后关闭对话框
现在,已经对栅格进行了矢量化,并修复了生成的几何图形,可以通过 fixed_aspect_slope_rainfall
图层和 rural_buffer
图层的交集,将坡向、坡度和降雨条件与距离人类居住区条件进行组合。
8.4.20. 确定矢量的交集
单击菜单项
在出现的对话框中,选择
rural_buffer
图层作为 输入图层对于 叠加图层 ,选择
fixed_aspect_slope_rainfall
图层在 相交 中,将输出文件保存在
Rasterprac
目录将输出文件命名为
rural_aspect_slope_rainfall.shp
单击 保存
单击 运行 并等待完成数据处理
关闭 相交 对话框
请注意仅保留重叠区域,以确保您的相交处理正确。
保存工程
列表中的下一个条件是面积必须大于 6000
平米。现在,您将计算多边形区域,以确认适合此工程的区域大小。
8.4.21. 计算每个多边形的面积
8.4.22. 选择给定大小的区域
现在,这些区域都已经知道了:
构建查询 (像之前一样),只选择大于
6000
平米的多边形。查询是:"area" > 6000
在
Rasterprac
目录保存选择并命名为suitable_areas.shp
的新矢量图层。
现在,已经拥有了满足稀有植物凡波斯所有生活环境符合条件的区域,您将从中选择离开普敦大学最近的四个区域。
8.4.23. 数字化开普敦大学
和之前一样,在
Rasterprac
目录中新建一个矢量图层,但这次,使用 点 作为 几何图形类型 ,并将其命名为university.shp
确保其是合适的CRS (
工程CRS:EPSG:32733 - WGS 84 / UTM zone 33S
)完成创建新图层 (单击 确定)
隐藏除新建
university
图层和Streets
图层之外的所有图层添加背景地图 (OSM):
转到 浏览器 面板并导航至
将
开放街道地图
条目拖放到 图层 面板的底部
使用您的互联网浏览器,查找开普敦大学的位置。鉴于开普敦独特的地形,该大学位于非常知名的位置。在返回QGIS之前,请注意大学所在的位置,以及附近的情况。
确保已单击
Streets
图层,并且 图层 面板中高亮显示university
图层- 菜单项,并确保已选中
单击 切换编辑模式 按钮进入 编辑模式 。这允许您编辑矢量图层
激活 添加要素 工具后,左键单击开普敦大学位置的最佳估计值
当要求输入
id
时,请提供任意整数单击 确定
单击 切换编辑模式 按钮停止编辑会话
保存工程
8.4.24. 查找距离普敦大学最近的位置
转到 处理工具箱 ,找出并执行 按最近的方式连接属性 算法 (
)输入图层 应为
university
, 输入图层 2 是suitable_areas
设置适当的输出位置和名称 (被连接图层)
将 最大近邻 设置为
4
保留其余参数的默认值
单击 运行
生成的点图层将包含四个要素 - 它们都将具有大学的位置及其属性,此外,附近合适区域的属性 (包括 id
) 以及到该位置的距离。
打开连接结果的属性表
记录四个最近合适区域的
id
,然后关闭属性表打开
suitable_areas
图层的属性表构建查询,以选择离大学最近的四个合适区域 (使用
id
字段选择它们)
这是本课探索问题的最终答案。
提交时,请创建完整标注的布局,其中包括半透明的山体阴影图层,覆盖在您选择的引人入胜的栅格上 (例如DEM或坡度栅格)。还包括大学和 suitable_areas
图层,突出显示离大学最近的四个合适区域。在创建输出地图时,应遵循所有制图的最好做法。