4. 水文增强型DEM构建

原始DEM几乎不可能直接用于径流路径分析。摄影测量噪声、雷达阴影、等高线插值误差以及人工地物(道路、堤坝、桥涵)都会在栅格中制造大量"假洼地"——四周高程都高于中心的闭合单元。若不加处理,D8或D-infinity算法会在这些洼地里形成断头路径,汇流累积量在洼地边缘突然归零,后续河网提取、流域划分全部失真。水文增强型DEM构建的目标,就是把这些伪洼地改造成具有明确出流方向的连续地形,同时尽量不破坏真实地形起伏。

三类核心算法及其原理

填洼(Fill Sinks)是最经典的方法,代表实现是Planchon-Darboux算法。其思路是:先假定所有单元都可排水,从DEM边界开始向内扫描,若某单元高程低于其已确定可排水邻居的高程,则将其抬升至该邻居高程(加一个极小增量ε,如0.001 m),反复迭代直至收敛。结果是每个洼地被填平为一个水平面,水平面边缘保留一个出口。填洼的优点是结果确定、无负地形残留;缺点是会大面积改变地形,在喀斯特洼地、采石场等真实洼地上造成"削峰填谷"式失真,且生成的平坦面需要额外处理才能定向。

破洼(Breach Depression)则采取"开渠"而非"填平"的策略。算法从洼地最低点出发,沿最陡下降方向寻找一条通往外部较低地形的路径,将路径上高于洼地出口的单元削低,形成一条窄而深的排水沟。相比填洼,破洼对地形的改动量小得多,尤其适合处理被道路、堤防横断的河谷——真实水流往往通过涵洞穿过路堤,破洼恰好模拟了这一过程。但破洼可能"凿穿"真实的分水岭,且对宽浅洼地效果不佳,因此实际工程中常采用混合策略:先尝试破洼,若破洼深度或长度超过阈值(如深度>2 m、长度>100像元),则退回填洼。

平坦区域处理针对填洼或破洼后产生的高程相等区域。平坦面上所有邻居高程相同,最陡下降法无法确定流向。常用方案是"两步法":先识别平坦区内部单元与外部有出流邻居的单元,从出口向内做广度优先搜索,为每个平坦单元赋一个随距离递增的微小梯度(如每像元增加0.0001 m),从而构造出指向出口的伪坡降。WhiteboxTools的FillDepressions与SAGA的Fill Sinks (Wang & Liu)都内置了平坦区梯度处理。

三种洼地处理策略的地形剖面与流向对比 原始DEM:闭合洼地 洼地最低点 四周高、中心低,水流无出口 汇流累积在此中断 填洼 Fill Sinks 抬升至出口高程+ε 洼地被填平为水平面 地形改动大,需平坦区定向 破洼 Breach Depression 沿最陡路径削低 开凿窄排水沟,改动量小 适合道路/堤防横断河谷

实战:WhiteboxTools生成无洼地DEM

以WhiteboxTools为例,假设输入为dem_raw.tif(30 m分辨率,投影UTM),目标输出dem_hydro.tif。推荐流程如下:

# 1. 先破洼,限制最大破洼深度与长度
whitebox_tools -r=BreachDepressionsLeastCost \
  --dem=dem_raw.tif --output=dem_breach.tif \
  --max_dist=100 --fill=TRUE --flat_increment=0.0001

# 2. 检查残余洼地数量
whitebox_tools -r=NumDownslopeNeighbours --dem=dem_breach.tif --output=ndn.tif

# 3. 若仍有洼地,执行填洼兜底
whitebox_tools -r=FillDepressions --dem=dem_breach.tif \
  --output=dem_hydro.tif --fix_flats=TRUE --flat_increment=0.0001

关键参数说明:--max_dist=100限制破洼路径最长100像元(约3 km),超过则放弃破洼转为填洼;--fill=TRUE允许在破洼失败处自动填平;--flat_increment=0.0001为平坦区每像元递增的伪坡降,取值过大会在平地上制造虚假坡度,过小则可能因浮点精度无法区分流向,30 m DEM上0.0001 m/像元是常用经验值。

SAGA GIS的对应操作是Terrain Analysis → Hydrology → Fill Sinks (Wang & Liu),其Minimum Slope参数即平坦区梯度,Fill Sinks与Breach Depressions可分别调用。Wang & Liu算法在填洼的同时完成平坦区定向,一步到位,适合快速出图。

效果评估:不能只看"有没有洼地"

处理完成后必须做定量检查,而非目视确认。建议至少核对三项指标:其一,用NumDownslopeNeighbours或SAGA的Sink Drainage Route Detection统计残余洼地数,理想值应为0;其二,计算处理前后DEM的高程差栅格,统计改动像元比例与最大改动量——若改动像元超过15%或最大抬升超过5 m,需回查是否误填了真实洼地;其三,用处理后的DEM运行D8FlowDir与FlowAccumulation,检查河网是否连续、主河道累积量是否单调递增、流域出口是否唯一。若河网在道路处出现平行断线,说明破洼未穿透路堤,应调大--max_dist或改用BreachDepressionsLeastCost的最小代价路径模式。

真实喀斯特洼地、矿区塌陷坑属于"真洼地",填平会破坏水文真实性。工程上可先用--max_depth限制填洼深度,或对已知真洼地范围做掩膜保护,仅对掩膜外区域执行填洼。

需要强调的是,水文增强只是径流分析的预处理,它改变的是栅格高程值而非真实地形。所有后续的坡度、汇流、侵蚀分析都应基于增强后的DEM,但任何对外发布的地形产品仍应使用原始DEM,并在元数据中记录处理算法、参数与改动量,保证结果可追溯。