基于NASADEM制作云南省30米分辨率数字高程模型(DEM)全流程解析
2026/9/5 10:13:35 网站建设 项目流程

简介:本资源为云南省全域30米分辨率数字高程模型(DEM)地理信息数据产品,面向GIS从业者、遥感与测绘专业师生、生态环境及地质灾害研究者等用户,解决区域地形建模、空间分析与可视化底图构建等核心需求。压缩包共10个文件,含1个GeoTIFF格式主数据文件(.tif)、1个云南省行政边界矢量文件(.shp)及配套的坐标系(.prj)、空间索引(.shx/.sbx/.sbn)、属性表(.dbf)和元数据(.xml/.tfw)等标准GIS组件,总大小603.1MB,开箱即用于QGIS、ArcGIS等平台开展坡度坡向分析、流域提取、三维地形渲染等任务。已有1044人学习下载。用户可直接加载.tif文件获取高精度地表高程栅格,结合.shp边界实现精准裁切与叠加分析;所有文件均基于ASTER GDEM V3全球数据源(2019年发布),采用WGS84坐标系,确保跨平台兼容性与科研可复现性。

1. 项目概述:为什么我们需要一张高精度的云南地形图?

如果你做过云南地区的生态分析、水土保持规划,或者只是想在三维地图上看看梅里雪山的壮丽,你大概率会遇到一个头疼的问题:找不到一份现成的、高质量的、覆盖整个云南省的数字高程模型(DEM)。市面上能找到的,要么是90米分辨率的SRTM数据,细节不够看;要么是12.5米分辨率的ALOS数据,但需要自己花大量时间去拼接、校正、裁剪,过程繁琐不说,不同图幅之间还可能存在色差和接缝问题。

这个项目要解决的,就是这样一个非常具体且普遍的痛点:制作一份现成的、30米分辨率的、无缝覆盖云南省全域的DEM数据产品。30米分辨率是一个在精度和实用性之间取得很好平衡的选择。它比90米SRTM能呈现更精细的地形起伏(比如梯田、小型沟谷),又比12.5米或更高分辨率的数据在文件大小和处理负担上友好得多,非常适合区域尺度的研究与应用。

这份数据能用来做什么?它的应用场景远超你的想象。对于科研人员,它是进行流域分析、生境模拟、地质灾害风险评估的基础;对于工程师,它是道路选线、工程选址、土方量计算的依据;对于生态保护者,它可以用来分析森林碳储量、模拟物种迁徙路径;甚至对于户外爱好者和教育工作者,它都是制作三维可视化地图、直观理解云南“立体气候”和复杂地形的绝佳材料。

简单来说,这个项目就是帮你把从原始卫星数据到成品DEM之间所有繁琐、专业的处理步骤一次性走完,打包成一个“开箱即用”的数据包。接下来,我会详细拆解整个制作流程、背后的技术原理、实操中会遇到的各种“坑”,以及如何确保最终数据的质量。

2. 数据获取与预处理:源头决定质量

制作一份省级尺度的DEM,第一步也是最重要的一步,就是选择可靠的数据源并进行规范的预处理。这一步没做好,后面所有处理都是空中楼阁。

2.1 核心数据源选型:为什么是NASA的NASADEM?

目前,全球覆盖、免费且最常用的中分辨率DEM数据源主要有两个:SRTM(航天飞机雷达地形测绘任务)和它的升级版NASADEM。对于云南项目,我强烈推荐使用NASADEM。

SRTM(90米 & 30米):这是上一代的产品。虽然它有30米分辨率版本,但其数据在2015年之前存在大量空洞(特别是山区和水体),需要使用插值算法填充,这会引入误差。云南地形复杂,空洞问题会更显著。

NASADEM(30米):这是NASA在2020年发布的全新数据集,可以理解为SRTM的“重制加强版”。它采用了更先进的算法重新处理了原始雷达数据,主要优势有:

  1. 空洞显著减少:利用多期数据填补了SRTM中的大量数据缺失区域,这对于云南横断山脉等复杂区域至关重要。
  2. 精度提升:官方标称的垂直精度(RMSE)从SRTM的10米提升至5米左右,数据可靠性更高。
  3. 一致性更好:全球统一处理,减少了区域间的系统性偏差。

注意:NASADEM数据可以通过NASA Earthdata网站免费下载,但需要注册账号。下载时,云南全省需要覆盖多个图幅(Tile),例如NASADEM_HGT_n27e098NASADEM_HGT_n26e099等,需要提前规划好覆盖范围,确保无遗漏。

2.2 数据预处理四步法:从原始文件到规整数据

下载下来的是一堆.hgt格式的文件,每个文件代表1度x1度(约110km x 110km)的区域。不能直接使用,必须经过预处理。

第一步:格式转换与合并原始的.hgt文件是二进制格式。我们需要使用GDAL(地理空间数据抽象库)工具将其转换为更通用的GeoTIFF格式,并同时将所有图幅拼接(Mosaic)成一张覆盖云南的大图。

# 示例:使用GDAL的gdal_merge.py工具进行拼接 gdal_merge.py -o yunnan_nasadem_full.tif -of GTiff *.hgt

这个命令会将当前目录下所有.hgt文件合并成一个名为yunnan_nasadem_full.tif的TIFF文件。-of GTiff指定输出格式。

第二步:坐标系统一(重投影)NASADEM数据的原始坐标系是地理坐标系(WGS84),单位是度。这对于面积计算、坡度分析等操作非常不方便,因为一度的长度随纬度变化。为了后续分析的准确性,我们需要将其转换为投影坐标系。对于云南省,最常用的是CGCS2000 / 3-degree Gauss-Kruger zone 35(代号 EPSG:4546),这是一个适用于云南大部分地区的横轴墨卡托投影,能最大程度保证长度和面积的准确性。

# 使用gdalwarp进行重投影 gdalwarp -s_srs EPSG:4326 -t_srs EPSG:4546 -r bilinear -tr 30 30 yunnan_nasadem_full.tif yunnan_nasadem_proj.tif

参数解释:

  • -s_srs EPSG:4326:指定源坐标系为WGS84。
  • -t_srs EPSG:4546:指定目标坐标系。
  • -r bilinear:指定重采样方法为双线性插值,这对于连续的高程数据是合适的选择。
  • -tr 30 30:明确指定输出像元大小为30米 x 30米。这是保证我们最终得到“30米分辨率”的关键一步。

第三步:按省界精确裁剪拼接和投影后的大图范围远大于云南省。我们需要利用云南省的行政边界矢量文件(Shapefile或GeoJSON),将DEM精确裁剪出来。

# 使用gdalwarp进行裁剪 gdalwarp -cutline yunnan_boundary.shp -crop_to_cutline -dstalpha yunnan_nasadem_proj.tif yunnan_nasadem_clipped.tif

参数解释:

  • -cutline yunnan_boundary.shp:指定裁剪用的边界矢量文件。
  • -crop_to_cutline:将输出范围严格限制在边界范围内。
  • -dstalpha:可选,为输出文件添加一个Alpha通道,边界外区域设为透明。

第四步:无效值处理与优化检查裁剪后的数据,是否存在极端的异常值(如负值或极大正值,在云南不太可能)或NoData值。可以使用QGIS或ArcGIS的栅格计算器功能,将特定范围内的无效值进行替换或填充。

# 使用Python的rasterio库示例 import rasterio import numpy as np with rasterio.open('yunnan_nasadem_clipped.tif') as src: data = src.read(1) profile = src.profile # 假设将小于0的值(可能是无效值)设为NoData data[data < 0] = profile['nodata'] # 或者进行简单的平滑处理(可选) # from scipy.ndimage import median_filter # data = median_filter(data, size=3) with rasterio.open('yunnan_nasadem_clean.tif', 'w', **profile) as dst: dst.write(data, 1)

实操心得

  • 下载环节:NASA的服务器有时不稳定,建议使用wgetaria2等支持断点续传的工具进行批量下载,并做好下载日志记录。
  • 投影选择:务必根据你的分析目的选择投影。如果研究范围跨多个3度带,可以考虑使用Albers等积圆锥投影来保持面积不变形,但计算会稍复杂。
  • 裁剪前备份:在执行裁剪等破坏性操作前,务必保存好上一步处理好的中间文件(如yunnan_nasadem_proj.tif),以便出错时回退。

3. 核心处理与质量增强:让数据“更真实”

经过预处理,我们得到了一份干净的、坐标正确的DEM。但原始卫星雷达数据本身存在误差,尤其是在植被茂密和水体区域。这一步的目标是修正这些系统性误差,提升数据的真实性和可用性。

3.1 植被高度误差校正

雷达信号会打到树冠顶部,而不是地面。因此,在森林覆盖区(如西双版纳、高黎贡山),NASADEM记录的是“树顶高度”,比真实地面高出几十米甚至更多。这是中分辨率雷达DEM最主要的误差来源。

校正方法:我们需要一个能反映“地面高程”的参考数据来修正它。目前最有效的方法是使用ICESat-2星载激光雷达数据。ICESat-2发射的激光可以穿透植被冠层,直接测量地面高程,精度极高(厘米级)。

操作流程

  1. 获取ICESat-2数据:从NASA Earthdata下载ATL08产品,它包含了沿轨道的陆地高程信息。
  2. 提取地面点:从ATL08数据中筛选出高置信度的“地面光子”(land_segments中的h_te_best_fit)。
  3. 计算偏差:在空间上,将ICESat-2地面点与对应位置的NASADEM高程值做差(ΔH = ICESat-2高程 - NASADEM高程)。这个ΔH在森林区通常是负值(NASADEM偏高)。
  4. 空间插值:由于ICESat-2是离散点,我们需要通过地统计学方法(如克里金插值Kriging)将离散的ΔH插值成一个连续的“校正表面”栅格。
  5. 应用校正:将原始的NASADEM栅格减去这个“校正表面”栅格,就得到了植被校正后的DEM。
# 概念性代码,展示校正过程 import xarray as xr import rioxarray from scipy.interpolate import griddata # 假设已有ICESat-2点数据 DataFrame: df_icesat (包含 x, y, delta_h) # 以及原始DEM: dem_original (xarray DataArray) # 插值生成校正表面 x_grid, y_grid = np.meshgrid(dem_original.x, dem_original.y) correction_surface = griddata( (df_icesat.x, df_icesat.y), df_icesat.delta_h, (x_grid, y_grid), method='cubic', fill_value=0 ) # 应用校正 dem_corrected = dem_original - correction_surface dem_corrected.rio.to_raster('yunnan_dem_veg_corrected.tif')

注意事项

  • 这个过程计算量较大,需要一定的Python地学数据处理能力。
  • 对于无植被区域(如裸岩、冰川、城市),ΔH接近0,校正表面应平滑过渡到0,避免引入噪声。
  • 如果没有条件做精细校正,一个粗略的经验法是:在已知的茂密林区,将DEM高程值全局减去一个保守值(如10-15米),但这会抹平地形细节。

3.2 水体区域高程平滑与置平

河流、湖泊在DEM上应该是一个连续的、平滑的平面。但原始数据中,由于雷达信号在水面的镜面反射和数据处理误差,水体区域常常出现噪声、条纹甚至凸起,这会导致水流方向分析严重错误。

处理步骤

  1. 获取水体掩膜:使用全球水体数据集(如JRC Global Surface Water, ESA WorldCover)或从遥感影像中提取,生成一个二值栅格,其中水体区域为1,非水体为0。
  2. 提取水体多边形:将水体掩膜栅格转换为矢量多边形。
  3. 计算平均高程:对于每个独立的湖泊或较宽的河段多边形,计算其内部原始DEM像元的中位数高程(比平均值更能抵抗异常值影响)。
  4. 置平处理:将该多边形内所有像元的高程值替换为计算出的中位数高程。
  5. 河网平滑:对于线状的河流,可以先生成河网中心线,然后沿中心线创建一个缓冲区(如3-5个像元宽),对该缓冲区内的DEM进行平滑滤波(如均值滤波),使其高程平缓过渡。

实操心得

  • 中位数优于平均值:水体中常有岛屿或噪声点,平均值会被拉偏,中位数更稳健。
  • 分水体处理:不同的湖泊、水库有其独立的水位,必须分开计算和置平,不能用一个全局值。
  • 保留河床地形:对于大江大河(如金沙江、澜沧江),完全置平会丢失河谷形态。更高级的做法是结合水文模型,强制DEM生成的河网流向与已知主流方向一致,这需要用到“河道烧录”技术。

3.3 边缘融合与接缝检查

即使使用同一数据源,不同图幅拼接处也可能因处理时间或校准差异而产生细微的条带或接缝。在预处理拼接后,需要仔细检查。

检查方法:在GIS软件中,使用“山体阴影”工具(方位角315°,高度角45°)渲染DEM。山体阴影对高程的微小变化极其敏感,任何接缝在光照下都会显现为一条不自然的直线或色带。

修复方法

  • 轻微接缝:使用焦点统计工具(如矩形窗口3x3或5x5)对拼接区域进行轻微的平滑处理。
  • 明显落差:如果接缝两侧存在系统性高差,需要手动检查原始图幅数据。有时需要回到预处理阶段,确保所有图幅使用了完全一致的重采样和投影参数。在极端情况下,可能需要以一侧为基准,对另一侧的高程值进行整体偏移校正。

4. 衍生产品生成与应用场景实例

一份高质量的DEM本身是基础,但其更大的价值在于能派生出各种具有直接应用意义的数据产品。下面以云南省为例,展示几个核心衍生品的生成方法和应用。

4.1 坡度图与坡向图:工程与农业的基石

坡度和坡向是最直接的地形因子。在QGIS或ArcGIS中,利用“坡度”和“坡向”工具可以一键生成。

  • 坡度:反映了地表倾斜程度,单位可以是度或百分比。在云南,坡度图是地质灾害(滑坡、泥石流)风险评价、基本农田划定、退耕还林规划的核心输入。
  • 坡向:反映了坡面所面对的方向(0-360°)。它直接影响太阳辐射接收量,是分析山地“立体农业”(如阳坡种茶、阴坡种林)和局地小气候的关键。

应用实例:茶园选址分析假设我们要为高品质普洱茶寻找潜在种植区。传统经验是“向阳山坡”。我们可以用DEM进行量化分析:

  1. 生成坡向图,提取南坡、东南坡、西南坡(假设坡向范围157.5° - 202.5°为南坡,可调整)。
  2. 生成坡度图,筛选坡度在15°-30°之间的区域(太缓排水不佳,太陡不利于耕作)。
  3. 叠加土壤类型、年降水量等图层进行综合选址。这个过程将模糊的经验转化为可重复、可优化的空间决策模型。

4.2 地形起伏度与地表粗糙度:生态与风能评估

这两个指标描述了地形在局部范围内的复杂程度。

  • 地形起伏度:通常指一个固定窗口内(如1km x 1km)最高点与最低点的高差。它宏观上反映了区域的切割深度。在云南,高起伏度区域(如怒江峡谷)往往生物多样性更丰富,但也是交通基础设施建设的难点区域。
  • 地表粗糙度:计算窗口内每个像元与中心像元高程差的平方和,再开方。它更精细地描述了地表的“凹凸不平”程度。粗糙度大的区域,地表风速会降低,是风电场微观选址时必须规避的。

生成方法:这两个指标都需要使用“焦点统计”或“邻域分析”工具。以起伏度为例,在GIS中定义一个圆形或矩形的移动窗口,计算窗口内的MAX-MIN值,并将结果赋予窗口中心像元,遍历整个DEM。

4.3 水文分析与流域提取:水资源管理的数字底盘

这是DEM最经典也最强大的应用之一。通过模拟水流方向、累积量,可以自动提取河网、划分流域。

  1. 填洼:首先处理DEM中存在的微小凹陷,确保水流能畅通无阻地流出,形成连续的汇流网络。
  2. 计算流向:使用D8算法,确定每个像元的水流流向其8个邻域中坡度最陡的方向。
  3. 计算汇流累积量:基于流向,计算流入每个像元的上游像元总数。汇流累积量大的地方,就是潜在的河道。
  4. 定义河网:设定一个汇流累积量阈值(如1000个像元)。所有累积量大于该阈值的像元被识别为河道。
  5. 划分流域:对提取出的河网上的每个点(如河口、支流交汇点),其上游所有汇水区域即构成一个子流域。

应用实例:云南红河流域水土保持规划我们可以利用30米DEM提取红河干流及其各级支流的精确河网和子流域边界。结合土壤侵蚀模型(如RUSLE),将降雨、土壤、植被覆盖、坡度坡长因子输入,就能在子流域尺度上模拟出土壤侵蚀量的空间分布,精准识别出急需治理的重点侵蚀区,从而指导水土保持工程和植被恢复项目的布局。

4.4 三维可视化与剖面分析:让地形“活”起来

将DEM转换为三维场景,是直观传达地形信息最有效的方式。

  • 三维飞行:在Global Mapper、ArcGIS Pro或Blender GIS插件中,加载DEM和遥感影像,可以制作出飞越玉龙雪山、俯瞰洱海盆地的动态视频,用于旅游宣传或地理教学。
  • 地形剖面:沿一条线(如规划中的铁路线、徒步路线)提取高程值,生成剖面图。可以清晰看到路线的爬升高度、垭口位置,是工程可行性研究和户外路线评估的必备工具。

实操心得:进行三维可视化时,为了增强立体感,通常需要对高程进行垂直夸大(如1.5倍到3倍)。云南地形本身起伏巨大,夸张系数不宜过高,否则会显得失真。同时,叠加高清卫星影像(如Sentinel-2)作为纹理,效果会大幅提升。

5. 常见问题、精度验证与数据分享

5.1 常见问题排查速查表

在实际操作中,你肯定会遇到各种问题。下表汇总了典型问题及其解决方案:

问题现象可能原因排查步骤与解决方案
拼接后存在明显色带或接缝1. 原始图幅来源不一致(如混用SRTM和NASADEM)
2. 拼接时重采样方法不当
3. 图幅边缘存在未处理的无效值
1. 检查并统一所有输入图幅的数据源和版本。
2. 拼接和投影时使用-r bilinear(双线性)或-r cubicspline(三次样条)等平滑算法。
3. 拼接前,用gdalinfo检查每个.hgt文件的边缘像元值。
生成的山体阴影图有异常斑块或条纹1. DEM中存在极端的异常高程值(噪声)
2. 投影转换时像元大小或原点设置不当,导致规则的人为网格
1. 使用栅格计算器或统计工具,查找并替换超出合理范围的值(如云南海拔范围大致在70-6700米)。
2. 检查投影参数,确保-tr(像元大小)设置为30,并使用-tap(target aligned pixels)参数对齐像元网格。
提取的河网断断续续,不连续1. DEM填洼不彻底,存在内流盆地
2. 汇流累积量阈值设置过高
3. 平坦区域(如湖泊、坝区)水流方向无法确定
1. 使用更激进的填洼算法或允许微小凹陷存在(设置填洼容差)。
2. 降低汇流累积量阈值,或使用Strahler河流分级来动态确定阈值。
3. 对平坦区域进行“河道烧录”或“流向平坦区处理”。
坡度图在平坦区域出现无意义的噪点原始DEM在平坦区域(如水面、高原面)存在微小数值波动在计算坡度前,先对DEM进行轻微的平滑滤波(如3x3中值滤波),或直接忽略这些区域(通过掩膜)。
数据文件体积异常巨大1. 使用了未压缩的TIFF格式
2. 保留了不必要的波段或数据类型精度过高
1. 最终成果保存为GeoTIFF并使用LZWDEFLATE压缩。gdal_translate -co COMPRESS=LZW -co PREDICTOR=2
2. 确保是单波段(高程)数据,数据类型使用Float32足够,无需Float64

5.2 如何验证你的DEM精度?

自己做的数据,心里得有杆秤。验证是必不可少的环节。由于没有全省范围的地面实测点,我们采用交叉验证和间接验证:

  1. 与更高精度数据对比:寻找云南局部区域的机载激光雷达(LiDAR)DEM或更高分辨率的立体测绘DEM(如5米)。在相同区域裁剪出你的30米DEM,计算两者高程值的均方根误差(RMSE)和平均误差(ME)。RMSE控制在10米以内,ME接近0,说明质量良好。
  2. 检查已知地标高程:查找梅里雪山卡瓦格博峰、玉龙雪山、昆明滇池等知名地点官方公布的海拔数据。在你的DEM上定位这些点,查看读取的高程值是否在合理误差范围内(通常±15米内可接受)。
  3. 水文逻辑检验:这是最有效的间接验证。用你的DEM提取河网,与高分辨率影像(如谷歌地球)上可见的真实河流进行叠加对比。检查主干河流的连续性,以及河流是否流经已知的湖泊、水库。如果河网与影像严重不符,说明DEM存在重大地形扭曲。
  4. 接边检查:将你的DEM与相邻省份(如四川、贵州)的公开DEM数据(确保是同源数据,如NASADEM)在边界处进行叠加。检查是否存在明显的高程跳跃或不连续。理想情况下,边界两侧的地形应该是平滑过渡的。

5.3 数据成果管理与分享建议

经过重重工序得到的宝贵数据,需要妥善管理和分享。

  • 元数据记录:务必创建一个README.txtmetadata.xml文件,详细记录:数据源(NASADEM版本号)、处理流程(软件、关键参数)、坐标系、分辨率、处理日期、精度验证说明、联系人信息。这是数据可重用的生命线。
  • 分层压缩归档:将最终DEM、主要衍生品(坡度、坡向、山体阴影)、流域矢量、元数据等打包为一个.zip.7z文件。内部建议按文件夹分类,如01_DEM/,02_Derivatives/,03_Vector/,04_Metadata/
  • 分享格式:通用分享首选GeoTIFF,因为它将空间坐标信息嵌入文件头,几乎所有GIS软件都能直接读取。如果面向网络地图发布,可以将其切片为MBTilesCloud Optimized GeoTIFF (COG)格式。
  • 版权与许可:明确标注原始数据源(NASA)的版权声明,并添加自己处理工作的使用许可(如CC BY 4.0),鼓励他人合规使用。

制作一份高质量的省级DEM,就像完成一件精密的数字雕刻。从数据源的甄别、预处理中的每一个参数选择,到误差校正的耐心打磨,再到衍生应用的无限拓展,每一步都融合了地理信息科学的原理和实际工程的经验。这份云南省30米DEM,不仅仅是一个栅格文件,它更是一个打开了数字地形分析大门的钥匙。当你用它清晰地划出分水岭,模拟出洪水淹没范围,或者仅仅是看着三维地图中磅礴的横断山脉时,你会觉得所有繁琐的处理都是值得的。最后一个小建议,在处理过程中,定期用山体阴影图进行视觉检查,人的眼睛依然是发现异常最敏锐的工具,很多逻辑检查发现不了的小瑕疵,一眼就能看出来。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询