3. 数字高程模型(DEM)基础:数据来源、分辨率概念、坐标系与投影、常见DEM格式

各位同学,大家好。今天我们来聊聊数字高程模型,也就是DEM。这玩意儿,说白了就是地球表面的“数字快照”,记录的是每个点的高度信息。没有它,无人机仿地飞行就是瞎飞。我刚开始接触这个领域时,觉得DEM不就是个地图嘛,后来才发现,里面的门道深着呢。

3.1 DEM的数据来源:从卫星到无人机

DEM的数据从哪来?我给大家梳理一下,主要有这么几条路:

  • 卫星遥感:这是最主流的来源。比如SRTM(航天飞机雷达地形测绘任务)、ASTER GDEM、ALOS World 3D等。它们覆盖范围广,但分辨率一般。我记得几年前做项目,用SRTM 30米的数据去规划丘陵地带的植保航线,结果无人机差点撞山。嗯,30米的分辨率,在山区根本不够看。
  • 航空摄影测量:用飞机或无人机搭载相机,通过立体像对生成DEM。精度高,但成本也高。我建议,如果你做的是几百亩的精准农业项目,可以考虑这个方案。
  • 激光雷达(LiDAR):这玩意儿直接发射激光,打到地面反射回来,精度极高。我曾在果园里用过机载LiDAR,连每棵树的树冠高度都能测出来。不过,价格嘛...你懂的。
  • 地面测量:用RTK-GPS或全站仪,一个点一个点地测。精度最高,但效率最低。一般只用于小范围的验证或特殊场景。
我的经验: 别迷信单一数据源。我习惯把卫星DEM和无人机航测数据融合使用。先用卫星数据做全局规划,再用无人机数据做局部精化。这样既省钱,又保证精度。

3.2 分辨率概念:不是越高越好

分辨率,说白了就是DEM上每个格子代表的地面实际大小。比如1米分辨率,意味着每个像素对应地面1米×1米的区域。

你可能会问:“分辨率越高越好,对吧?” 不一定。我给大家算笔账:

  • 高分辨率(0.5米-2米):细节丰富,能看清田埂、沟渠。但数据量大,处理慢。我做过一个5000亩的农场项目,用0.5米分辨率的DEM,光加载就花了半小时。
  • 中分辨率(5米-30米):适合大范围地形分析。比如SRTM 30米数据,全球免费,做宏观规划足够了。
  • 低分辨率(>30米):只能看个大概。说实话,做农业植保,低于30米的分辨率基本没用。
分辨率 适用场景 数据量(1平方公里)
1米 精细植保、果园地形 约4MB
10米 大田作物、丘陵地带 约40KB
30米 区域规划、宏观分析 约4.5KB
避坑指南: 我曾经为了追求高分辨率,用5厘米的DEM去规划植保航线。结果无人机飞控计算量太大,直接卡死。记住:分辨率要和你的飞控算力匹配。

3.3 坐标系与投影:别让坐标“打架”

这是最容易出问题的地方。我见过太多人,拿着WGS84坐标的DEM,却用CGCS2000的投影去处理,结果数据全对不上。

坐标系,就是描述地球表面位置的数学规则。常用的有:

  • WGS84:全球通用,GPS用的就是它。经纬度单位。
  • CGCS2000:中国国家大地坐标系,2000年启用。现在国内项目基本都用这个。
  • 北京54、西安80:老坐标系,有些历史数据还在用。我建议尽量别碰,容易出错。

投影,就是把球面坐标转成平面坐标。因为地球是圆的,但地图是平的,所以必须投影。常用的有:

  • UTM投影:全球通用,分带投影。每个带宽度6度。
  • 高斯-克吕格投影:中国常用,也是分带投影。有3度带和6度带之分。
  • 兰伯特投影:适合中纬度地区,比如中国大部分区域。
核心原则: 处理DEM时,一定要确保坐标系和投影一致。我习惯在项目开始前,把所有数据统一到同一个坐标系下。比如,都用CGCS2000 + 高斯3度带投影。

3.4 常见DEM格式:GeoTIFF与ASCII Grid

格式这东西,说白了就是数据怎么存。我给大家介绍两种最常见的:

3.4.1 GeoTIFF

这是我最喜欢的格式。它把图像数据和地理信息(坐标系、投影、分辨率等)打包在一起。说白了,就是一个文件,啥都有。用Python的GDAL库处理起来特别方便。

# 用Python读取GeoTIFF
from osgeo import gdal

dataset = gdal.Open('dem.tif')
band = dataset.GetRasterBand(1)
elevation = band.ReadAsArray()
print(f"DEM大小: {elevation.shape}")
print(f"投影: {dataset.GetProjection()}")
print(f"地理范围: {dataset.GetGeoTransform()}")

3.4.2 ASCII Grid

这种格式是纯文本的,用记事本就能打开。结构很简单:

ncols         100
nrows         100
xllcorner     500000.0
yllcorner     4000000.0
cellsize      10.0
NODATA_value  -9999
120.5 121.3 122.1 ...
...

你看,第一行是列数,第二行是行数,然后是左下角坐标、格网大小、无效值,最后是数据。简单粗暴,但文件体积大。我建议,小范围数据可以用这个格式,大范围还是用GeoTIFF吧。

我的习惯: 数据交换时用ASCII Grid,因为通用性强。但做分析时,我肯定用GeoTIFF,因为处理速度快,而且支持压缩。

好了,关于DEM的基础知识,今天就讲到这里。记住:数据来源决定精度,分辨率决定细节,坐标系决定位置,格式决定效率。下一节,我们会讲如何用这些DEM数据去生成无人机能识别的仿地航线。嗯,那才是真正有意思的部分。