7.3. Lesson: 地形分析

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

The goal for this lesson: 使用地形分析工具获取有关地形的更多信息。

7.3.1. 基本信息 Follow Along: Calculating a Hillshade

我们将使用与上一课中相同的DEM层。如果本章从头开始,请使用 Browser 面板,并加载 raster/SRTM/srtm_41_19.tif

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

我们将使用算法在 Raster ► Raster terrain analysis 菜单。

  1. 按下 Hillshade 菜单

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

  3. 我们将使用下列值:

    • Z factor at 1.0

    • Azimuth (horizontal angle) 在… 300.0 °

    • Vertical angle 在… 40.0 °

    ../../../_images/hillshade_explanation.png
  4. 将文件保存在新文件夹中 exercise_data/raster_analysis/ 名字是 hillshade

  5. 最后点击 Run

现在您将拥有一个名为的新层 hillshade 这看起来是这样的:

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

这看起来很不错,而且是3D的,但我们能在这一点上改进吗?就其本身而言,山体阴影看起来就像石膏模型。难道我们不能以某种方式将它与其他更彩色的栅格一起使用吗?我们当然可以,通过使用山体阴影作为覆盖层。

7.3.2. 基本信息 Follow Along: Using a Hillshade as an Overlay

山体阴影可以提供关于一天中给定时间的阳光的非常有用的信息。但它也可以用于美学目的,使地图看起来更好。实现这一点的关键是将山体阴影设置为基本透明。

  1. 更改原始文件的符号系统 srtm_41_19 层以使用 Pseudocolor 与上一练习相同的方案

  2. 隐藏除 srtm_41_19hillshade 层层

  3. 单击并拖动 srtm_41_19 身处地下 hillshade 中的层 Layers 嵌板

  4. 设置 hillshade 要使层透明,请单击 Transparency 图层属性中的选项卡

  5. 设置 Global opacity50%

    您将得到如下结果:

    ../../../_images/hillshade_pseudocolor.png
  6. 切换到 hillshade 层叠后,在 Layers 面板,以了解它所起到的作用。

以这种方式使用山体阴影,可以增强景观的地形。如果效果对您来说不够强,您可以更改 hillshade 当然,山体阴影变得越亮,它背后的颜色就越暗。你需要找到一个适合你的平衡点。

记住在完成后保存项目。

7.3.3. Follow Along: 寻找最好的区域

回想一下房地产代理问题,我们上一次在 Vector Analysis 教训。让我们想象一下,买家现在希望购买一栋建筑,并在这块土地上建造一座更小的小屋。在南半球,我们知道一个理想的开发地块需要有以下区域:

  • 都是朝北的

  • 斜度小于5度的

  • 但如果坡度小于2度,那么坡向就不重要了。

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

7.3.4. 适度 Follow Along: Calculating the Slope

Slope 告知地形有多陡峭。例如,如果你想在那里的土地上建造房屋,那么你需要相对平坦的土地。

要计算斜率,需要使用 Slope 最小二乘算法 Processing ► Raster terrain analysis

  1. 打开算法

  2. srtm_41_19 作为 Elevation layer

  3. 请保留 Z factor 在… 1.0

  4. 将输出另存为名为的文件 slope 在与 hillshade

  5. 点击 Run

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

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

7.3.5. 适度 Try Yourself Calculating the aspect

Aspect 是地形坡度所朝向的指南针方向。纵横比为0表示坡度为北向、90东向、180南向和270西向。

由于这项研究是在南半球进行的,理想情况下,房产应该建在朝北的斜坡上,这样它们就可以保持在阳光下。

使用 Aspect 最小二乘算法 Processing ► Raster terrain analysis 为了得到 aspect 与一起保存的层 slope

7.3.6. 适度 Follow Along: Finding the north-facing aspect

现在,您有了显示坡度和坡向的栅格,但您无法立即知道理想条件满足的位置。这种分析是如何进行的呢?

答案在于 Raster calculator

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

  • Raster ► Raster Calculator

  • 在处理中:

    • Raster Analysis ► Raster calculator

    • GDAL ► Raster miscellaneous ► Raster calculator

    • SAGA ► Raster calculus ► Raster calculator

每个工具都产生相同的结果,但语法可能略有不同,运算符的可用性也可能不同。

我们将使用 Raster Analysis ► Raster calculatorProcessing Toolbox

  1. 通过双击该工具将其打开。

    • 该对话框的左上角将所有加载的栅格图层列为 name@N ,在哪里 name 是层的名称,并且 N 就是乐队。

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

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

    aspect@1 <= 90 OR aspect@1 >= 270
    
  3. 现在您必须设置栅格细节,如单元格大小、范围和CRS。这可以手动完成,也可以通过选择 Reference layer 。选择最后一个选项,点击 ... 按钮旁边的 Reference layer(s) 参数。

  4. 在该对话框中,选择 aspect 层,因为我们希望获得具有相同分辨率的层。

  5. 将层另存为 aspect_north

    该对话框应如下所示:

    ../../../_images/raster_calculator.png
  6. 最后点击 Run

您的结果将是:

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

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

7.3.7. 适度 Try Yourself More criteria

现在您已经完成了方面,从DEM创建两个新的层。

  • 第一个应确定斜率小于或等于的区域 2 学位

  • 第二个是类似的,但斜率应该小于或等于 5 学位。

  • 将它们保存在 exercise_data/raster_analysis AS slope_lte2.tifslope_lte5.tif

7.3.8. 适度 Follow Along: Combining Raster Analysis Results

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

  • aspect_north :朝北的地形

  • slope_lte2 :坡度等于或低于2度

  • slope_lte5 :坡度等于或低于5度

在满足条件的地方,像素值为 1 。在其他地方,它是 0 。因此,如果将这些栅格相乘,则值为 1 因为他们所有人都将获得 1 (其余的将会得到 0 )。

必须满足的条件包括:

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

  • 在坡度为2度或低于2度时,地形面对的方向并不重要。

因此,您需要查找坡度等于或低于5度的区域 AND 地形是朝北的, OR 坡度等于或低于2度。这样的地形将适合开发。

要计算满足这些条件的面积:

  1. 打开 Raster calculator 再来一次

  2. 在以下项目中使用此表达式 Expression **

    ( 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/ AS all_conditions.tif

  5. 单击 Run

结果是:

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

提示

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

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

7.3.9. 适度 Follow Along: Simplifying the Raster

正如您从上图中看到的,综合分析后,我们得到了许多非常小的满足条件的区域(白色)。但这些对我们的分析并没有真正的用处,因为它们太小了,不能建立任何东西。让我们摆脱所有这些无法使用的小区域。

  1. 打开 Sieve 工具 (GDAL ► Raster AnalysisProcessing Toolbox )

  2. 设置 Input fileall_conditions ,而 Sievedall_conditions_sieve.tif (在 exercise_data/raster_analysis/ )。

  3. 设置 Threshold 设置为8(至少8个连续像素),并选中 Use 8-connectedness

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

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

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

    怎么一回事?答案就在新栅格文件的元数据中。

  4. 查看下的元数据 Information 选项卡中的 Layer Properties 对话框中。看看这个 STATISTICS_MINIMUM 值:

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

    与派生栅格的栅格一样,该栅格应该只包含值 10 ,但它也有一个非常大的负数。对数据的调查表明,这个数字相当于空值。因为我们只关注未过滤掉的区域,所以让我们将这些空值设置为零。

  5. 打开 Raster Calculator ,并构建以下表达式::

    (all_conditions_sieve@1 <= 0) = 0
    

    这将保持所有非负值,并将负数设置为零,从而使所有区域都具有值 1 完好无损。

  6. 将输出保存在 exercise_data/raster_analysis/ AS all_conditions_simple.tif

输出如下所示:

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

这是意料之中的:早先结果的简化版本。请记住,如果您从工具获得的结果与您预期的不同,查看元数据(以及矢量属性,如果适用)可以证明是解决问题的关键。

7.3.10. 适度 Follow Along: Reclassifying the Raster

我们已经使用了 Raster calculator 在栅格层上进行计算。还有另一个强大的工具可以用来从现有的层中提取信息。

回到过去的 aspect 一层。我们现在知道它的数值范围在0到360之间。我们想要做的是 reclassify 此层设置为其他离散值(从1到4),具体取决于纵横比:

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

  • 2=东部(从45到135)

  • 3=南方(从135到225)

  • 4=西(从225到315)

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

另一种工具是 Reclassify by table 刀具进刀 Raster analysisProcessing Toolbox

  1. 打开该工具

  2. aspect 作为 Input raster layer

  3. 按下 ...Reclassification table 。将弹出一个类似表格的对话框,您可以在其中选择每个类别的最小值、最大值和新值。

  4. 按下 Add row 按钮并添加5行。如下图所示填写各行,然后点击 OK

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

    算法用来处理每个类的阈值的方法由 Range boundaries

  5. 将层另存为 reclassified.tifexercise_data/raster_analysis/ 文件夹

    ../../../_images/reclassify_setup.png
  6. 点击 Run

如果你把原生的 aspect 使用 reclassified 第一,没有太大的区别。但通过查看图例,您可以看到这些值从 14

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

  1. 打开 Layer Styling 嵌板

  2. Paletted/Unique values ,而不是 Singleband gray

  3. 按下 Classify 按钮自动获取这些值并为其分配随机颜色:

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

输出应如下所示(您可以有不同的颜色,因为它们是随机生成的):

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

通过重新分类并将选项板样式应用于该层,您可以立即区分纵横比区域。

7.3.11. 基本信息 Follow Along: Querying the raster

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

我们在本练习中使用的所有栅格图层只包含一个标注栏。根据图层的不同,像素值可能表示高程值、纵横比或坡度值。

我们如何查询栅格层以获得像素值?我们可以使用 识别 Identify Features 巴顿!

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

  2. 点击任意位置的 srtm_41_19 一层。 Identify Results 将与波段的值一起显示在单击的位置:

    ../../../_images/identify_raster.png
  3. 您可以更改 Identify Results 从当前的面板 tree 模式设置为 table 一个是通过选择 TableView 面板底部的菜单:

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

单击每个像素以获取栅格值可能会在一段时间后变得令人讨厌。我们可以使用 Value Tool 解决这个问题的插件。

  1. Plugins ► Manage/Install Plugins...

  2. All 制表符,键入 value t 在搜索框中

  3. 选择 Value Tool 插件,按 Install Plugin 然后 Close 该对话框。

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

    新的 Value Tool 面板将出现。

    小技巧

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

  4. 要使用该插件,只需选中 Enable 复选框并确保 srtm_41_19 层在中处于活动(选中)状态 Layers 面板。

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

    ../../../_images/value_tool_query.png
  6. 但还有更多的原因。值工具插件允许您查询 all 中的活动栅格图层 Layers 面板。设置 aspectslope 再次激活层并将鼠标悬停在地图上:

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

7.3.12. In Conclusion

您已经了解了如何从DEM派生出各种分析产品。其中包括山体阴影、坡度和坡向计算。您还了解了如何使用栅格计算器进一步分析和组合这些结果。最后,您了解了如何对层进行重新分类以及如何查询结果。

7.3.13. What's Next?

现在您有两个分析:向量分析,它向您显示可能适合的地块,以及栅格分析,它向您显示可能适合的地形。如何将这些结合在一起才能得出这个问题的最终结果?这是下一课的主题,从下一个模块开始。