GIS在水文分析中的应用:基于DEM的流域提取与河网生成

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

GIS在水文分析中的应用:基于DEM的流域提取与河网生成,是很多 GIS 初学者、空间分析人员和水文方向学生都会遇到的典型任务:手里有一份 DEM,高程看起来没问题,但一做流向、汇流累积、流域边界和河网提取,结果就出现断流、河网太密、流域范围不对等问题。

这篇文章以 DEM 水文分析为主线,说明在 QGIS、ArcGIS Pro 或类似 GIS 软件中,如何完成从 DEM 预处理、洼地填平、流向计算、汇流累积、河网生成到流域提取的完整流程。重点不是只告诉你点哪个工具,而是解释为什么要这样处理,以及怎样判断结果是否可信。

GIS在水文分析中的应用 基于DEM的流域提取与河网生成流程图
基于 DEM 的水文分析通常包括填洼、流向、汇流累积、河网提取和流域提取几个关键步骤。

引言:为什么基于 DEM 的流域提取与河网生成容易出错

在 GIS 水文分析中,DEM 是最核心的数据源。DEM,即数字高程模型,用规则格网记录地表高程。很多水文分析工具会根据 DEM 中每个像元与邻近像元的高程差,判断水流方向,再累计上游汇水面积,最终生成河网和流域边界。

问题在于,真实世界的水流是连续的,而 DEM 是离散像元。DEM 分辨率、投影单位、洼地、异常高程、道路堤坝、桥涵以及人为建筑物都会影响水流路径。因此,基于 DEM 的流域提取与河网生成不是简单运行一个工具,而是一套需要检查数据、设置阈值和验证结果的流程。

如果你发现提取出来的河网像蜘蛛网一样密,或者流域边界明显跨过山脊,通常不是 GIS 软件坏了,而是 DEM 预处理、坐标单位、汇流阈值或出水口位置出现了问题。

背景:DEM 水文分析的典型应用场景

GIS 在水文分析中的应用非常广,基于 DEM 的流域提取与河网生成常用于以下场景:

  • 根据一个水库、桥梁、监测站或河道断面提取上游集水区。
  • 生成研究区的自然河网,用于水文模型建模或汇水分析。
  • 计算小流域边界、流域面积、主河道长度和河网密度。
  • 为洪水模拟、土壤侵蚀评价、污染物扩散分析提供空间基础数据。
  • 对比不同 DEM 分辨率下的流域边界和河网差异。

常见的软件选择包括 ArcGIS Pro 的 Spatial Analyst 水文工具、QGIS 的 GRASS 和 SAGA 水文分析工具、TauDEM、WhiteboxTools,以及 Python 中的 richdem、pysheds、rasterio 和 geopandas 等库。无论工具不同,核心逻辑基本一致。

原理:从 DEM 到河网和流域边界的计算逻辑

1. 洼地填平决定水能不能连续流动

DEM 中经常存在局部低洼像元,周围高、中间低。水流进入这种位置后无法继续流出,软件会认为水被困住,这会导致流向中断,进而影响汇流累积、河网生成和流域提取。

因此,水文分析通常第一步要进行填洼,也叫洼地填平或 depression filling。它会把局部洼地抬高到可以排水的高度,让水流网络保持连续。

2. 流向计算决定每个像元的下游方向

流向计算会根据填洼后的 DEM 判断每个像元的水应该流向哪个邻近像元。最常见的是 D8 算法,即每个像元只能流向周围 8 个方向中的一个最低方向。

D8 方法简单、稳定、运行快,适合基础流域提取和河网生成。但在平坦区域或分流明显的区域,D8 可能会把水流过度集中到单一路径,导致河网形态偏硬。

3. 汇流累积决定哪里形成河道

汇流累积表示每个像元上游有多少个像元向它汇水。汇流累积值越大,说明该位置接收的上游汇水越多,越可能形成河道。

河网生成的关键参数就是汇流累积阈值。阈值设置小,提取出的河网会很密;阈值设置大,只会保留主干河道。阈值没有唯一标准,需要结合 DEM 分辨率、研究尺度和实际河流资料判断。

4. 出水口位置决定流域提取范围

流域提取通常需要一个出水口点,也叫 pour point 或 outlet。软件会从该点沿流向反向追踪所有上游像元,得到该点控制的上游流域。

如果出水口没有落在汇流累积较大的河道像元上,提取出的流域可能很小、偏移,甚至完全不符合预期。因此,在流域提取前,通常需要把出水口吸附到最近的高汇流累积河道上。

步骤:基于 DEM 的流域提取与河网生成实操流程

步骤一:准备 DEM 并检查坐标系

先准备覆盖研究区的 DEM 数据,常见来源包括 SRTM、ASTER GDEM、Copernicus DEM、ALOS DEM 或本地测绘数据。导入 GIS 软件后,先检查以下内容:

  • DEM 是否完整覆盖研究区和上游区域。
  • DEM 是否有 NoData 空洞或异常条带。
  • 坐标系是否为投影坐标系,而不是经纬度坐标系。
  • 高程单位与平面单位是否合理,例如水平单位为米,高程单位也为米。
  • 像元大小是否适合研究尺度,例如 30 米 DEM 适合中小尺度流域,精细城市排水分析则通常需要更高分辨率数据。

如果 DEM 使用经纬度坐标系,像元单位是度,不建议直接进行面积、长度和汇流阈值判断。应先投影到适合研究区的投影坐标系,例如 UTM、CGCS2000 高斯投影或地方投影。

步骤二:裁剪研究区并保留足够上游范围

很多人会直接用行政区边界裁剪 DEM,然后进行流域提取。这样做容易出错,因为自然流域不一定与行政边界一致,真正的上游汇水区可能在行政区之外。

更稳妥的做法是:

  1. 根据研究对象确定出水口或研究河段。
  2. 向上游和周边扩展一定缓冲范围。
  3. 用扩展后的范围裁剪 DEM。
  4. 完成流域提取后,再按行政区或项目范围进行叠加分析。

如果 DEM 裁剪范围太小,流域边界可能被裁剪边界截断,汇流累积值也会偏低。

步骤三:进行 DEM 填洼处理

在 ArcGIS Pro 中,可以使用 Fill 工具;在 QGIS 中,可以使用 GRASS 的 r.fill.dir、SAGA 的 Fill sinks,或 WhiteboxTools 的 Fill Depressions 工具。

填洼时需要注意:

  • 普通自然地形 DEM 可以先使用默认填洼参数。
  • 城市区域、平原区或道路密集区域可能存在真实排水通道被 DEM 表面阻断的问题,仅靠填洼不一定准确。
  • 如果有已知河道数据,可考虑进行水文校正,例如烧入河网。

填洼后的 DEM 应尽量保持地形趋势,不能为了让水流连续而过度改变真实地貌。

步骤四:计算流向栅格

使用填洼后的 DEM 计算流向栅格。流向栅格本身看起来不直观,但它是后续汇流累积、河网生成和流域提取的基础。

在 ArcGIS Pro 中,常用 Flow Direction 工具;在 QGIS 中,可使用 GRASS 或 SAGA 的流向相关工具。工具输出通常是一个栅格,每个像元用编码表示水流方向。

检查流向结果时,可以重点看:

  • 是否存在大片 NoData 区域。
  • 边界区域是否出现大量外流,这是正常现象,但要避免研究区内部异常中断。
  • 平原区流向是否过于混乱,需要结合河道资料判断。

步骤五:计算汇流累积栅格

汇流累积栅格是河网生成的关键数据。它记录每个像元接收的上游汇水像元数量。通常情况下,山谷和河道位置会出现高汇流累积值。

在 ArcGIS Pro 中可以使用 Flow Accumulation 工具;在 QGIS 中可以使用 GRASS、SAGA 或 WhiteboxTools 对应工具。

为了更好地观察汇流累积结果,可以对栅格进行对数拉伸显示,或者只显示高值区域。低值区域数量通常很多,直接用默认渲染可能看不清河道。

步骤六:设置汇流累积阈值并生成河网

河网生成通常通过条件提取实现:当汇流累积值大于某个阈值时,认为该像元属于河道。

例如,假设 DEM 分辨率为 30 米,一个像元面积为 900 平方米。如果汇流累积阈值设为 1000,表示上游汇水面积约为 900000 平方米,也就是 0.9 平方千米。这个面积是否能形成河道,需要结合地区降雨、地貌和研究尺度判断。

常用思路如下:

  • 先尝试较低阈值,查看河网是否过密。
  • 逐步增大阈值,直到河网主干和支流层级接近实际水系。
  • 叠加已有河流数据、影像或地形晕渲图进行校验。
  • 不要只凭河网“好看”决定阈值,应结合汇水面积和研究目的。

生成二值河网栅格后,可以进一步将栅格河网转换为矢量线,便于制图、统计长度、分级和与其他数据叠加。

步骤七:设置出水口并吸附到河道

出水口可以是水文站、水库坝址、桥梁断面、河流交汇点或研究区出口。它必须与流向和汇流累积栅格在同一个坐标系下。

如果出水口点来自手工点击、GPS 或矢量河流数据,常常不会刚好落在 DEM 推导出的河道像元上。此时应使用 Snap Pour Point 或类似工具,将出水口吸附到一定搜索半径内汇流累积值最大的像元。

搜索半径不能太小,否则吸附不到河道;也不能太大,否则可能吸附到错误支流。一般可根据 DEM 分辨率和河道偏移情况设定,例如几个像元到几十个像元范围内逐步测试。

步骤八:提取流域边界并矢量化

使用流向栅格和吸附后的出水口点,可以运行 Watershed 工具生成流域栅格。流域栅格中属于同一出水口控制范围的像元会被赋予相同编号。

后续可将流域栅格转换为矢量面,并进行以下处理:

  • 检查流域面是否闭合。
  • 平滑边界时要谨慎,避免改变真实分水岭位置。
  • 计算流域面积时使用投影坐标系。
  • 与等高线、山脊线、影像和已知水系进行叠加验证。

步骤九:验证河网和流域结果

基于 DEM 的流域提取与河网生成完成后,必须进行验证。建议至少检查以下内容:

  • 提取的主河道是否位于地形低谷。
  • 河网走向是否与遥感影像或已有水系基本一致。
  • 流域边界是否沿山脊线分布。
  • 出水口是否位于流域边界出口处,而不是内部偏移位置。
  • 流域面积是否与已有资料、文献或管理数据相差过大。

如果结果不合理,应优先回到 DEM 坐标系、填洼方式、汇流阈值和出水口吸附这几个环节排查。

常见坑:河网太密、流域不对和结果偏移的原因

坑一:直接用经纬度 DEM 做水文分析

经纬度坐标系的单位是度,不是米。直接用它计算面积、长度和汇流阈值,很容易造成解释错误。尤其在不同纬度地区,一个经度单位对应的实际距离不同,影响空间度量。

建议先投影到适合区域的投影坐标系,再进行 DEM 水文分析。

坑二:汇流累积阈值凭感觉设置

河网生成中最常见的问题就是阈值不合适。阈值过小,沟谷、坡面细流都会被识别为河道;阈值过大,支流会大量消失。

建议把阈值换算成上游汇水面积,并结合实际水系资料逐步调整。

坑三:出水口没有落到 DEM 河道上

如果出水口偏离汇流累积高值区域,流域提取结果会明显偏小或位置错误。尤其是手动点选出水口时,肉眼看似在河道上,实际上可能落在旁边像元。

解决方法是使用出水口吸附,并检查吸附后的点是否位于正确的主河道或支流上。

坑四:DEM 覆盖范围不足

如果 DEM 只裁剪到行政边界,河流上游可能已经被切掉。这样计算出的汇流累积和流域边界都会不完整。

应保证 DEM 覆盖完整上游汇水范围,至少在初始分析阶段不要裁得太紧。

坑五:忽略人工地物对水流路径的影响

道路、堤坝、桥梁、渠道和城市建筑会改变地表排水。普通 DEM 有时不能表达涵洞和地下排水系统,导致水流在道路边被错误阻断。

在城市、平原和工程区进行 GIS 水文分析时,应尽量引入实测排水管网、河渠、桥涵或高精度 DEM 进行校正。

方法比较:ArcGIS Pro、QGIS 和 Python 水文分析怎么选

方法 适合场景 优点 注意事项
ArcGIS Pro 水文工具 教学、工程制图、标准 GIS 工作流 工具链完整,Fill、Flow Direction、Flow Accumulation、Watershed 等工具衔接清晰 部分工具需要 Spatial Analyst 扩展许可,参数解释要仔细查看帮助文档
QGIS 加 GRASS 或 SAGA 开源 GIS 学习、中小型项目、教学实验 免费开源,工具丰富,适合对比不同算法 不同算法输出含义可能不同,流向编码和参数名称要核对
WhiteboxTools 批量水文地形分析、开源流程 水文地貌工具丰富,适合自动化处理 需要理解命令行参数,结果仍需 GIS 软件可视化检查
Python GIS 批处理、科研复现、模型集成 便于自动化、可重复和与其他模型连接 需要掌握 rasterio、numpy、geopandas 等基础,调试成本较高

如果你刚开始学习基于 DEM 的流域提取与河网生成,建议先用 QGIS 或 ArcGIS Pro 完成一次完整手工流程,理解每一步数据含义。等流程稳定后,再考虑用 Python 或批处理工具自动化。

检查清单:DEM 河网生成和流域提取前后要核对什么

数据准备检查

  • DEM 是否覆盖完整上游区域。
  • DEM 是否已经投影到米制坐标系。
  • DEM 是否存在 NoData 空洞、异常高程或拼接断裂。
  • 高程单位和平面单位是否一致或可解释。
  • 研究区边界是否只是用于展示,而不是过早裁断自然流域。

参数设置检查

  • 是否对 DEM 做了填洼处理。
  • 流向算法是否适合研究区地形。
  • 汇流累积阈值是否换算为实际汇水面积。
  • 出水口是否经过吸附处理。
  • 吸附半径是否过大或过小。

结果验证检查

  • 河网是否沿地形低谷分布。
  • 流域边界是否沿分水岭分布。
  • 主河道方向是否从高处流向低处。
  • 流域面积是否与已有资料基本一致。
  • 结果是否受 DEM 分辨率影响过大。

FAQ:基于 DEM 的流域提取与河网生成常见问题

1. 基于 DEM 的河网生成一定等于真实河流吗?

不一定。DEM 河网是根据地形推导出的潜在汇流路径,真实河流还受降雨、地质、土壤、植被、人工渠道和地下排水影响。因此,DEM 河网需要与遥感影像、已有水系数据或实地资料进行校验。

2. 汇流累积阈值应该设置多少?

没有固定值。建议先用像元面积把阈值换算成汇水面积,再结合研究尺度和真实河网调整。例如 30 米 DEM 中,1000 个像元约等于 0.9 平方千米。阈值越小,河网越密;阈值越大,河网越稀。

3. 为什么流域提取结果只有很小一块?

常见原因是出水口没有落在河道像元上,或者没有吸附到汇流累积高值区域。也可能是 DEM 裁剪范围太小、流向计算异常或填洼处理不充分。应先检查出水口位置和汇流累积图层。

4. 为什么提取的流域边界穿过河谷而不是山脊?

这种情况通常说明 DEM 数据质量、投影、填洼或流向计算存在问题。也可能是地形非常平坦,DEM 分辨率不足以表达真实分水岭。建议叠加等高线、晕渲图和影像检查。

5. QGIS 可以完成完整的 DEM 水文分析吗?

可以。QGIS 本身可以调用 GRASS、SAGA 和其他处理工具完成填洼、流向、汇流累积、河网提取和流域提取。需要注意的是,不同工具的参数名称和算法实现不同,最好不要混用不兼容的中间结果。

6. DEM 分辨率越高,河网和流域结果就一定越好吗?

不一定。高分辨率 DEM 能表达更多地形细节,但也可能引入道路、建筑、植被和局部噪声,导致河网过细或不连续。选择 DEM 分辨率时,应结合研究尺度和数据质量,而不是只追求最高分辨率。

结论:把 DEM 水文分析当成可验证的 GIS 工作流

GIS在水文分析中的应用:基于DEM的流域提取与河网生成,本质上是一条从地形数据到水流路径和汇水范围的推导链。任何一个环节出错,都会影响最终河网和流域边界。

实际工作中,建议按照“检查 DEM 坐标系与质量、填洼、计算流向、计算汇流累积、设置河网阈值、吸附出水口、提取流域、叠加验证”的顺序执行。不要只看工具是否成功运行,更要检查结果是否符合地形、水系和项目目标。

对于 GIS 学习者来说,掌握基于 DEM 的流域提取与河网生成,不只是学会一个水文工具箱,而是理解栅格分析、地形表达、空间参数和结果验证之间的关系。只有把每一步都解释清楚,水文分析结果才真正可用。