Important

翻译是一项社区工作:ref:你可以加入<translation_guidelines>。此页面目前翻译进度为 80.25%。

7.3. Lesson: Terrain Analysis

某些类型的栅格允许您更深入地了解它们所表示的地形。数字高程模型 (DEM) 在这方面特别有用。在本课中,您将使用地形分析工具,了解更多关于之前提出的住宅开发研究区域的信息。

本课目标: 使用地形分析工具获取有关地形的更多信息。

7.3.1. ★☆☆ Follow Along: Calculating a Hillshade

我们将使用与上一课相同的DEM图层。如果您从头开始本节练习,请使用 浏览器 面板加载 raster/SRTM/srtm_41_19.tif 文件。

DEM图层显示地形的高程,但有时看起来有点抽象。它包含了您需要的有关地形的所有3D信息,但看起来并不像3D对象。为了更好地了解地形,可以计算 山体阴影 ,这种栅格使用光和阴影来映射地形,以创建3D外观图像。

我们将使用的算法位于 栅格 ► 栅格地形分析 菜单中。

  1. 单击 山体阴影 菜单

  2. 该算法允许您指定光源的位置: 方位角 的值从0 (北) 到90 (东)、180 (南) 和270 (西),而 垂直角 设置光源的高度 (0到90度)。

  3. 我们将使用以下值:

    • Z因子1.0

    • 方位角 (水平角度)300.0°

    • 垂直角40.0°

    ../../../_images/hillshade_explanation.png
  4. Save the file in a new folder exercise_data/raster_analysis/ with the name hillshade.tif

  5. 最后单击 运行

You will now have a new layer called hillshade that looks like this:

../../../_images/hillshade_raster.png

这看起来还不错,而且是3D效果,但我们可以完善一下吗?就其本身而言,山体阴影看起来就像石膏模型。就不能以某种方式把它和其他颜色更丰富的栅格一起使用吗?当然可以,我们通过使用山体阴影作为叠加图层来实现。

7.3.2. ★☆☆ Follow Along: Using a Hillshade as an Overlay

山体阴影可以提供在一天中的某个特定时间关于阳光的非常有用的信息。但它也可以用于美学目的,使地图看起来更好。关键是设置山体阴影的透明度。

  1. Change the symbology of the original srtm_41_19 layer to use the Pseudocolor scheme as in the previous exercise

  2. Hide all the layers except the srtm_41_19 and hillshade layers

  3. Click and drag the srtm_41_19 to be beneath the hillshade layer in the Layers panel

  4. Set the hillshade layer to be transparent by clicking on the Transparency tab in the layer properties

  5. 全局不透明度 设置为 50%

    您将得到如下结果:

    ../../../_images/hillshade_pseudocolor.png
  6. Switch the hillshade layer off and back on in the Layers panel to see the difference it makes.

Using a hillshade in this way, it's possible to enhance the topography of the landscape. If the effect doesn't seem strong enough to you, you can change the transparency of the hillshade layer; but of course, the brighter the hillshade becomes, the dimmer the colors behind it will be. You will need to find a balance that works for you.

完成后记得保存工程。

7.3.3. Follow Along: Finding the best areas

回想一下房地产代理问题,我们上次在 矢量分析 课中讨论了这个问题。让我们想象一下,买家现在希望购买一栋房屋,并在所属地产上建造一座较小的平房。在南半球,我们知道,理想的开发地块需要有以下区域:

  • 朝向为北

  • 坡度小于5度

  • 但如果坡度小于2度,则无需考虑坡向问题。

让我们为他们找到最好的地方。

7.3.4. ★★☆ Follow Along: Calculating the Slope

坡度 表示地形的陡峭程度。例如,如果想在那里的土地上建造房屋,那么您需要相对平坦的土地。

要计算坡度,需要使用 处理工具箱 ► 栅格地形分析 中的 坡度 算法。

  1. 打开算法

  2. Choose srtm_41_19 as the Elevation layer

  3. Z 因子 保留为 1.0

  4. Save the output as a file with the name slope.tif in the same folder as the hillshade.tif

  5. 单击 运行

现在,您将看到地形的坡度,每个像素都有相应的坡度值。黑色像素显示为平坦地形,白色像素显示陡峭地形:

../../../_images/slope_raster.png

7.3.5. ★★☆ Try Yourself: Calculating the aspect

坡向 是地形坡度所面对的罗盘方向。坡向为0表示坡度朝北、朝东90度、朝南180度、朝西270度。

因为这项研究是在南半球进行的,所以理想情况下,房屋应该建在朝北的坡度上,这样就可以一直沐浴阳光。

Use the Aspect algorithm of the Processing ► Raster terrain analysis to get the aspect.tif layer saved along with the slope.tif.

7.3.6. ★★☆ Follow Along: Finding the north-facing aspect

现在,您可以通过栅格显示坡度和坡向,但您无法立即知道理想条件在哪里可以满足要求。如何进行这种分析?

答案在于 栅格计算器

QGIS提供了不同的栅格计算器供选用:

  • 栅格 ► 栅格计算器

  • 在处理工具箱中:

    • 栅格分析 ► 栅格计算器

    • GDAL ► 栅格杂项 ► 栅格计算器

    • SAGA ► Raster calculus ► Raster calculator

以上每种工具都会产生相同的结果,但语法可能略有不同,而且可用的运算符可能会有所不同。

我们将使用 处理工具箱 中的 栅格分析 ► 栅格计算器

  1. 双击打开此工具。

    • 对话框的左上角列出了所有加载的栅格图层,正如 name@N ,其中 name 是图层名, N 是波段。

    • 在右上角,会看到许多不同的运算符。停下来想一想,栅格就是图像。您应该将其看作填充有数字的2D矩阵。

  2. 北为 0 (零) 度,因此要使地形朝北,其坡向必须大于270度或小于90度。因此,公式为:

    aspect@1 <= 90 OR aspect@1 >= 270
    
  3. 现在,您必须设置栅格详细信息,如像元大小、范围和CRS。这可以手动完成,也可以通过选择 参照图层 自动设置。单击 参照图层 参数旁边的 ... 按钮来选择最后一个选项。

  4. In the dialog, choose the aspect layer, because we want to obtain a layer with the same resolution.

  5. Save the layer as aspect_north.tif.

    对话框应如下所示:

    ../../../_images/raster_calculator.png
  6. 最后单击 运行

您的结果将是这样的:

../../../_images/aspect_result.png

输出值为 01 ,这是什么意思?对于栅格中的每个像素,我们编写的公式将返回它是否符合条件。因此,最终结果将是 False (0) 和 True (1) 。

7.3.7. ★★☆ Try Yourself: More criteria

现在已经完成了坡向,请从DEM创建两个新图层。

  • 首先应确定坡度小于或等于 2 度的区域

  • 第二个类似,但坡度应小于或等于 5 度。

  • 将它们保存在 exercise_data/raster_analysis 命名为 slope_lte2.tifslope_lte5.tif

7.3.8. ★★☆ Follow Along: Combining Raster Analysis Results

现在,您已经从DEM生成了三个栅格图层:

  • aspect_north: terrain facing north

  • slope_lte2: slope equal to or below 2 degrees

  • slope_lte5: slope equal to or below 5 degrees

满足条件时,像素值为 1 ,其他为 0 。因此,如果将这些栅格相乘,所有值为 1 的像素将得到 1 的值 (其余像素将得到 0 )。

需要满足的条件包括:

  • 坡度等于或低于5度时,地形必须朝北

  • 坡度等于或低于2度时,地形的朝向无关紧要。

因此,您需要找到坡度在5度或以下 AND 地形朝北, OR 坡度在2度或以下的区域。这样的地形适合开发。

要计算满足这些条件的区域:

  1. 再次打开 栅格计算器

  2. 表达式 中使用如下表达式:

    ( aspect_north@1 = 1 AND slope_lte5@1 = 1 ) OR slope_lte2@1 = 1
    
  3. Reference layer(s) - 参照图层 参数设置为 aspect_north (如果您选择另一个也没关系 - 它们都是根据 srtm_41_19 计算的)

  4. 将输出保存在 exercise_data/raster_analysis/ 中的 all_conditions.tif

  5. 单击 运行

其结果为:

../../../_images/development_analysis_results.png

Hint

使用以下命令可以简化前面的步骤:

((aspect@1 <= 90 OR  aspect@1 >= 270) AND slope@1 <= 5) OR slope@1 <= 2

7.3.9. ★★☆ Follow Along: Simplifying the Raster

正如您从上图看到的,组合分析给我们留下了许多非常小的满足条件的区域 (白色)。但这些对我们的分析并没有真正的用处,因为它们太小而无法构建任何东西。让我们把这些极小的不能使用的地方都处理掉。

  1. 打开 滤除碎斑 工具 (位于 处理工具箱 中的 GDAL ► 栅格分析)

  2. 输入图层 设置为 all_conditions ,并将 碎斑处理结果 设置为 all_conditions_sieve.tif (位于 exercise_data/raster_analysis/ )。

  3. 阈值 设置为8 (至少八个连续像素),并勾选 使用8向连通

    ../../../_images/raster_sieve_dialog.png

    处理完成后,将加载新图层。

    ../../../_images/sieve_result_incorrect.png

    现在发生了什么呢?答案位于新栅格文件的元数据中。

  4. 图层属性 对话框的 信息 选项卡中查看元数据。请查找 STATISTICS_MINIMUM 的值:

    ../../../_images/sieve_metadata.png

    这个栅格,像其派生,应仅包含值 10 ,但它也有一个非常大的负数。对数据的检查显示,这个数字是一个空值。因为我们只关注未被过滤掉的区域,所以将这些空值设置为零。

  5. 打开 栅格计算器 ,并构建以下表达式:

    (all_conditions_sieve@1 <= 0) = 0
    

    这将维持所有非负值,并将负数设置为零,保持所有值为 1 的区域不变。

  6. 将输出保存在 exercise_data/raster_analysis/ 并命名为 all_conditions_simple.tif

您的输出如下所示:

../../../_images/raster_sieve_correct.png

这就是预期的结果:早期结果的简化版本。请记住,如果从工具中获得的结果与预期不符,那么请查看元数据 (以及矢量属性,如果适用),这对解决问题至关重要。

7.3.10. ★★☆ Follow Along: Reclassifying the Raster

我们使用 栅格计算器 对栅格图层进行计算,还可以使用另一个强大的工具从现有图层提取信息。

回到 aspect 图层。我们现在知道它的数值范围在0到360之间。现在要做的是根据不同的坡向,将该图层 重分类 为其他离散值 (从1到4):

  • 1 = 北 (从 0 到 45 和从 315 到 360)

  • 2 = 东 (从 45 到 135)

  • 3 = 南 (从 135 到 225)

  • 4 = 西 (从 225 到 315)

该运算可以使用栅格计算器来实现,但是公式会变得非常大。

另一种工具是 处理工具箱栅格分析按表格重分类 工具。

  1. 打开工具

  2. Choose aspect as the Raster layer

  3. 单击 重分类表... 。将弹出一个类似表格的对话框,您可以在其中为每个类选择最小值、最大值和新值。

  4. 单击 新增行 按钮,添加5行。如下图所示填写每一行内容,然后单击 确定:

    ../../../_images/reclassify_table.png

    该算法用于处理每个类的阈值的方法由 范围边界 定义。

  5. exercise_data/raster_analysis/ 文件夹中将图层保存为 reclassified.tif 文件

    ../../../_images/reclassify_setup.png
  6. 单击 运行

If you compare the native aspect layer with the reclassified one, there are not big differences. But by looking at the legend, you can see that the values go from 1 to 4.

让我们给此图层一个更好的样式。

  1. 打开 图层样式 面板

  2. 选择 调色板/唯一值 ,而不是 单波段灰度

  3. 单击 分类 按钮自动获取值并为其分配随机颜色:

    ../../../_images/unique_style.png

输出可能是这样的 (可以有不同的颜色,因为它们是随机生成的):

../../../_images/reclassify_result.png

通过对图层应用此重分类和调色板样式,可以立即区分坡向地区。

7.3.11. ★☆☆ Follow Along: Querying the raster

与矢量图层不同,栅格图层没有属性表。每个像素包含一个或多个数值 (单波段或多波段栅格)。

我们在本练习中使用的所有栅格图层仅由一个波段组成。根据图层的不同,像素值可能表示高程、坡向或坡度值。

我们如何查询栅格图层获取像素值呢?这可以使用 identify 识别要素 按钮!

  1. 从属性工具栏选择该工具。

  2. Click on a random location of the srtm_41_19 layer. Identify Results will appear with the value of the band at the clicked location:

    ../../../_images/identify_raster.png
  3. 通过在面板底部的 视图 菜单中选择 表格 ,可以将 识别结果 面板的输出从当前 树形 模式更改为 表格 模式:

    ../../../_images/identify_raster_table.png

单击每个像素获取栅格的值可能会在一段时间后令人烦躁,我们可以使用 Value Tool 插件来解决此问题。

  1. 转到 插件 ► 管理并安装插件...

  2. 全部 选项卡中的搜索框里键入 value t

  3. 选择 Value Tool 插件,按 安装插件 ,然后 关闭 对话框。

    ../../../_images/value_tool.png

    此时将显现新的 Value Tool 面板。

    Tip

    如果您关闭了面板,可以通过在 视图 ► 面板 ► Value Tool 中启用或单击工具栏中的图标重新打开。

  4. 要使用插件,只需勾选 启用 复选框,并确保 图层 面板中的 srtm_41_19 图层处于激活状态 (已选中)。

  5. 将光标在地图上移动以查看像素值。

    ../../../_images/value_tool_query.png
  6. But there is more. The Value Tool plugin allows you to query all the active raster layers in the Layers panel. Set the aspect and slope layers active again and hover the mouse on the map:

    ../../../_images/value_tool_query_multi.png

7.3.12. 总结

您已经了解了如何从DEM获取各种分析成果,其中包括山体阴影、坡度和坡向计算。还了解了如何使用栅格计算器进一步分析和组合这些结果。最后,您学习了如何重分类图层以及如何查询结果。

7.3.13. 接下来是?

现在有两种分析:矢量分析显示可能适合的地块,栅格分析显示可能适合的地形。如何将这些组合起来,从而得出问题的最终结果?这是下一课的主题,从下一个单元开始学习。