GIS在水文分析中的应用:基于DEM的流域提取与河网生成
GIS在水文分析中的应用:基于DEM的流域提取与河网生成,是很多 GIS 初学者、空间分析人员和水文方向学生都会遇到的典型任务:手里有一份 DEM,高程看起来没问题,但一做流向、汇流累积、流域边界和河网提取,结果就出现断流、河网太密、流域范围不对等问题。
这篇文章以 DEM 水文分析为主线,说明在 QGIS、ArcGIS Pro 或类似 GIS 软件中,如何完成从 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,然后进行流域提取。这样做容易出错,因为自然流域不一定与行政边界一致,真正的上游汇水区可能在行政区之外。
更稳妥的做法是:
- 根据研究对象确定出水口或研究河段。
- 向上游和周边扩展一定缓冲范围。
- 用扩展后的范围裁剪 DEM。
- 完成流域提取后,再按行政区或项目范围进行叠加分析。
如果 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 的流域提取与河网生成,不只是学会一个水文工具箱,而是理解栅格分析、地形表达、空间参数和结果验证之间的关系。只有把每一步都解释清楚,水文分析结果才真正可用。