DTM(数字地形模型,Digital Terrain Model)是指仅表示裸地面(移除了植被、建筑物等所有地物)的高程模型,反映的是真实的地形起伏。与包含地物顶部的DSM(数字表面模型)不同,DTM常用于水文分析、坡度坡向计算、土方计算等需要纯粹地形信息的场景。
点击这里,详细区分DEM、DSM、DTM。
如何生成 DTM?
生成 DTM 的常用方法是从激光雷达点云或无人机航测得到的 DSM 中滤除地物(建筑、树木等),仅保留地面点,再插值生成栅格。QGIS 提供了一个基于坡度滤波的 DTM filter (slope‑based) 工具,可直接从 DSM 栅格中分离出地面与非地面部分。
工具中文名称:DTM过滤 (基于坡度)
工具英文名称:DTM filter (slope-based)
算法 ID:native:dtmslopebasedfilter
操作步骤:
在 QGIS 处理工具箱中搜索 DTM filter (slope‑based)。
输入参数:
Input layer:待过滤的 DSM 栅格。
Band number:选择对应的高程波段(通常为 Band 1)。
Kernel radius (pixels):滤波核半径,需设置得足够大以连接非地面物体旁的地面像元(例如 10~20 像素)。
Terrain slope (%):研究区大致地形坡度百分比,用于陡坡处的过滤条件。
Filter modification:该参数控制是否引入统计置信区间来动态调整高差阈值,以应对数据噪声或局部异常。
Standard deviation:反映高程数据的局部噪声水平或不确定性。推荐设置:
若 DSM 来自高精度 LiDAR(如机载 ALS),噪声小 → 设为 0.05 ~ 0.1。
若 DSM 来自摄影测量(如无人机 SfM),噪声较大 → 设为 0.2 ~ 0.5
设置输出:
Output layer (ground):地面点分类结果(即 DTM)。
Output layer (non‑ground objects):被滤除的非地面物体(后续可进一步分析)。
算法原理剖析
该算法基于论文 Vosselman (2000) 中提出的核心思想:相邻像元间若高差过大,且距离很近,则高处像元极可能是地物而非真实地形。
地形坡度通常平缓,即使在陡坡区域,单位水平距离内的高程变化也有限。因此,算法设定一个随距离变化的最大允许高差阈值dz_max(d),其中d是两像元间的欧氏距离(以像素为单位):
基础模型:
dz_max(d) = d 即:相距 1 像素, 则最大允许高差 1 单位;相距 5 像素,则允许 5 单位。
引入地形坡度修正:
设地形坡度为 s (单位:%),注意此处的 % 是 “垂直单位 / 水平像素尺寸” 的比值 × 100(例如:1 像素 = 0.0415 m,高差 0.0125 m → 坡度 ≈ 30%)。则:dz_max(d) = d · s 这样可在陡坡区适当放宽阈值,避免将真实陡崖误判为地物。
分类规则
对每个像元 P ,在其半径为 RADIUS 的圆形邻域内检查所有其他像元 Q :
- 若存在某个 Q ,使得 |z_P - z_Q| > dz_max(d_PQ) 则 P 被标记为 非地面;
- 否则,P 被保留为 地面。
最终输出两个栅格:
- OUTPUT_GROUND:仅含地面像元(即 DTM)
- OUTPUT_NONGROUND:被剔除的非地面像元(可视为“地物高度”)
更多算法问题,欢迎留言或联系我们。转载须注明出处。