从数字高程模型(DEM)提取河道是一项常见的水文分析任务。本文使用QGIS软件,详细说明操作步骤。
前期准备
获取数据
准备一个30米、12.5米或更高精度的DEM数据。
点击这里,学习如何获取各类DEM数据
开启SAGA拓展
点击这里,了解如何开启QGIS的SAGA拓展
填洼
使用DEM计算河道的原理是模拟地表水流在重力作用下,从高处向低处汇聚的自然过程。所以为了避免低洼地区对汇流累积量计算的影响,需要对DEM进行填洼预处理。
在QGIS工具箱中,找到GRASS节点下的 栅格(r.) -> r.fill.dir。如下图所示。
特别注意:输入图层名称请使用英文。中文名称会导致GRASS输入乱码,最终导致填洼失败。

汇流累积量计算
汇流累积量计算的原理是基于填洼后的无洼DEM,首先为每个栅格单元格计算其水流方向;然后,根据此流向,统计每个单元格所接收到的、来自其所有上游单元格的水流累积数量(或以面积为单位的汇水量)。我们通过汇流累积量的计算,可以得到河道的分布范围。
在QGIS工具箱中,找到SAGA节点下的 Terrain Analysis -> Flow Accumulation (Top-Down)工具。
Flow Accumulation (Top-Down)核心参数说明如下:
Elevation:核心输入,设置为填洼后的DEM。
Accumulation Target:功能未知,通常设置为填洼后的DEM。
Weights:可选参数。为每个单元格应用权重的网格,允许用户模拟不同的流动场景或物质累积。
Linear Flow Threshold Grid:可选参数。将此网格数值与Linear Flow阈值比较,而不是与汇流累积量进行比较。
Channel Direction :可选参数。用于定义现有河道流向的输入网格。数值含义:0-7 = 北、东北、东、东南、南、西南、西、西北。
Method:计算算法。常用选项如下:
- Deterministic 8 (D8):所有水流都流向坡度最陡的单个下坡相邻节点。
- Multiple Flow Direction (MFD):根据坡度将水流分配到多个下坡相邻节点。
- Deterministic Infinity (D-Inf): 使用三角形多方向水流算法。
Thresholded Linear Flow:布尔选项,用于启用或禁用特定的Linear Flow阈值。
Linear Flow Threshold:允许的Linear Flow最小值约束条件。
Convergence:多流向算法(Freeman 1991)的计算因子。
Step:可选参数。用于测试目的,仅在具有特定步长距离的单元格处生成汇流。(最小值:1,默认值:1)
Flow Accumulation Unit:汇流累积计算单位,单元格面积或单元格个数。(默认为面积)
Prevent Negative Flow Accumulation:确保累积量大于零,主要用于计算累积量平衡数值。
浏览官方文档

执行完毕后结果如下图所示。若筛选出了过多非河流区域,请确认DEM数据中河流边界是否清晰以及填洼结果是否满意。

提取河道
我们通过查看图像的数据分布情况,以及河道处的累积流量值。使用栅格计算器,将满足汇流条件的像素提取出来(图像二值化)。栅格计算器所使用的表达式如下所示。
("Flow Accumulation@1" > 1000000) * 1
Flow Accumulation@1:栅格图层及通道编号。
1000000:汇流累积量的边界值。
点击这里,了解更多栅格计算器的使用方法。
栅格转矢量
打开QGIS菜单 栅格 -> Conversion -> 栅格矢量化,将上一步得到的二值化图像,转换为矢量图层。注意,为了保证矢量数据的连通性,请勾选 使用8向连通。如下图所示。

更多QGIS使用问题,欢迎留言或联系我们。转载须注明出处。