DEM数据处理原理与常用算法说明

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

DEM数据处理原理是将区域上的离散高程采样点或内插点,按规则连接成面片集合,实现对二维连续函数H=f(x,y)的离散逼近,从而构建可用于地形分析的数字表面。常用算法覆盖从散点到连续表面的内插(如IDW、Kriging、Spline),以及基于栅格的坡度、坡向、山体阴影、TRI等地形因子提取。处理流程通常包括预处理(滤波、空洞与凹陷填充)、建模、分析与可视化,广泛应用于测绘、水文与资源环境等领域。

DEM表面建模中Grid与TIN概念示意

DEM数据处理的基本原理是什么

DEM定义为区域D上采样点或内插点按某种规则连接成的面片集合,是地理数据库的核心数据之一。表面建模主要有两种结构:规则格网(Grid)便于矩阵运算与快速提取地形因子,不规则三角网(TIN)更能适应复杂地形与保留特征线。从散点到连续表面必须经过内插,整体内插用单一多项式拟合全区,局部分块内插分块拟合,逐点内插以待定点为中心局部拟合,后者通常更灵活、精度更高。

实践中需区分DEM、DSM与DTM:DEM一般指裸地地形高程,DSM包含地表建筑物与植被等特征,DTM更强调裸地地形模型。数字地形分析主要包括坡面地形因子提取、特征地形要素提取、地形统计分析与地学模型分析。精度评估通常与参考点比较RMSE等指标,具体以实际项目要求为准。

类型 主要内容 典型用途
DEM 裸地地形高程 坡度坡向、水文分析、地形因子
DSM 含地表特征的表面高程 可视性分析、城市三维建模
DTM 强调裸地地形的模型 工程土方、地貌分类

常用DEM内插算法有哪些,怎么选

内插是建立DEM的关键步骤。常见确定性方法有逆距离加权(IDW,权重与距离成反比,简单易懂)、样条(Spline)、自然邻域(Natural Neighbor)、最近邻;地统计方法有克里金(Kriging,基于半变异函数,可提供最优无偏估计)。还有考虑水文特征的ANUDEM,以及直接基于TIN的三角网方法。

  • 数据点密集且分布较均匀时,IDW或Nearest Neighbor通常够用,计算快。
  • 存在明显空间相关性或需要误差估计时,优先考虑Kriging。
  • 需保持水文正确性(如避免虚假洼地)时,可选用ANUDEM类方法。
  • 复杂地形或需保留断裂线时,TIN往往更合适。

选择时先做交叉验证比较RMSE与视觉效果,再结合计算资源与下游分析需求。不确定时以实际测试结果为准,不要盲目追求复杂算法。

基于栅格DEM的地形分析算法与操作步骤

栅格DEM地形分析多采用3×3窗口。坡度与坡向常用Horn公式(适合粗糙地形,多数软件默认)或Zevenbergen-Thorne(更适合平滑景观)。山体阴影基于Lambertian照明模型,支持垂直夸张、方位角(常默认315°)与高度角(常默认45°)。其他常用指数包括TRI(地形起伏指数,Riley或Wilson算法)、TPI(地形位置指数)与roughness。水系提取常基于径流漫流模型,另有山脊/山谷线、曲率与可视性分析等。

开源工具中,gdaldem自GDAL 1.7.0起提供上述分析与可视化功能,截至2026年11月最新稳定版为GDAL 3.13.3。假设输入x/y/z单位一致;自3.11起可自动处理CRS单位比例,地理坐标系高纬度区域仍需注意。详细参数与选项见GDAL gdaldem官方文档。

GDAL gdaldem工具官方文档页面截图
GDAL gdaldem工具官方文档页面截图(截图来源:gdal.org)

以命令行计算坡度为例,可执行步骤如下:

  1. 确认输入DEM为GeoTIFF等GDAL支持格式,并正确设置NoData值。
  2. 安装GDAL(推荐Conda:conda install -c conda-forge gdal;或OSGeo4W、Homebrew、Docker等方式)。构建时需CMake ≥3.16、C++17编译器、PROJ ≥6.3.1等,具体以官网为准。
  3. 运行命令:gdaldem slope input_dem.tif output_slope.tif -alg Horn -compute_edges(可按需加 -s 或 -xscale/-yscale 处理单位比例,-z 做垂直夸张)。
  4. 检查输出:确认坡度单位(度或百分比)、边缘是否合理、NoData是否正确传播。
  5. 验收标准:与已知控制点或参考软件结果对比,目视检查异常条带或空洞,确认下游水文或可视性分析可用。

同类命令可替换为aspect、hillshade、TRI、TPI、roughness等模式。大文件建议先转Cloud Optimized GeoTIFF并分块处理。

DEM预处理:滤波、空洞与凹陷怎么处理

LiDAR点云或原始栅格常含噪声、伪影、空洞(voids)与凹陷(sinks)。滤波常用形态学方法(渐进膨胀/腐蚀)、Block minimum、表面基或分割基滤波。空洞多由云、阴影等造成,优先使用已填充版本(如SRTM V003、NASADEM),或辅以IDW/Kriging/delta surface fill等方法。凹陷可能是伪影或真实洼地:填充算法(如Jenson & Domingue、Wang & Liu)会产生平坦区影响流向,也可采用breaching(切割)策略;真实凹陷应酌情保留。

  • 噪声/伪影:先统计异常检测,再形态学或专用滤波器平滑。
  • 单位与投影:地理CRS高纬度比例易出错,可先用gdalwarp重投影或手动指定比例参数。
  • 边缘与NoData:启用compute_edges类选项,避免近NoData区域计算结果不可靠。

常用数据源包括SRTM 1弧秒(约30 m)V003(约覆盖60°N–56°S)、ASTER GDEM Version 3(2019年发布,约30 m,覆盖更广)、NASADEM(SRTM重处理版)。访问方式已逐步迁移至Earthdata Cloud,旧Data Pool逐步退役,下载以当前官网入口为准。

常见问题

DEM里出现大量空洞或条带怎么办?

优先换用官方void-filled版本(如SRTM V3或NASADEM);若必须自行填充,可用IDW/Kriging并结合辅助DEM,完成后用坡度/阴影图目视检查是否引入新伪影。

填充凹陷后流向分析总是异常?

填充会产生平坦区,导致流向不确定。可改用breaching方法,或保留真实洼地;也可从原始未填充DEM直接计算坡度坡向,再单独处理水文连通性。

gdaldem算出的坡度在高纬度明显不对?

地理坐标系下南北方向地面距离随纬度变化。GDAL 3.11+一般会自动处理单位比例,仍建议先投影到合适投影坐标系,或手动设置-xscale/-yscale后重算。

如何快速验收处理结果是否可用?

检查NoData与边缘完整性、与控制点RMSE、山体阴影目视有无明显噪声或阶梯,并在下游水文或可视性分析中跑通一遍关键流程。

DEM数据处理的核心是内插建表面与基于窗口的地形因子分析,预处理决定后续精度。建议先用已填充的公开DEM做原型验证算法选择,再用gdaldem或同类工具固化可重复的命令行流程,并始终以控制点与目视检查作为验收标准。