简介:青海省30米分辨率数字高程模型(DEM)数据,基于ASTER GDEM V3制作,坐标系为WGS84。青海地处青藏高原东北部,地形复杂多样,涵盖高山、湖泊、草原、河谷等地貌类型,这份数据可为地形地貌分析、地质灾害评估、流域水文研究、城乡规划及交通选线等工作提供基础高程底图,面向地理信息、环境科学、地质工程等领域的研究者和从业人员。压缩包共10个文件,以GeoTIFF格式的DEM栅格数据为核心,另含青海省边界Shapefile矢量文件及其dbf、prj、sbn、shp等配套文件,便于在ArcGIS、QGIS、GlobalMapper等软件中直接叠加分析,包体大小约944.59MB。数据可支撑用户完成高程提取、坡度坡向计算、可视域分析、等高线生成等操作,并借助配套边界文件快速裁剪和划定研究区域,同时可作为遥感影像分类、植被覆盖与地形关系研究的基础底图,支持后续二次开发与建模。已有495人浏览/学习,适合需要开展区域地形分析或专题制图的用户取用。
1. 青海省DEM(30米分辨率):为什么高原水系与选线项目都绕不开这个规格
青海省DEM(30米分辨率)是水利、电力、交通项目在青海落地的第一份数据底图。青海地处青藏高原东北部,祁连山、昆仑山、巴颜喀拉山与柴达木盆地并存,地形起伏大、沟谷切割深,10 米 DEM 全省覆盖要拼上百块分幅,成本高且时效低;90 米或更粗的数据又看不到峡谷里的冲沟和河流阶地,水文分析与线路选线根本不够用。30 米正好卡在精度与数据规模之间的甜点上。这篇文章我从数据源选型、分幅拼接、省界裁剪讲到等高线提取和地形因子自检,适合刚拿到青海项目、想在一周内把 DEM 数据链路跑通的测绘与 GIS 工程师。下面先解决最要紧的问题:同一份 30 米,到底该信哪个来源。
2. 三种 30 米 DEM 数据源横评:SRTM、ASTER GDEM、ALOS AW3D30 在青海怎么选
别再到处找 30 米高程数据了。真正能用的全球 30 米 DEM 就三家:SRTM v3、ASTER GDEM V2、ALOS AW3D30。它们的空间分辨率都标称 30 米,但出身不同,在青海这种高原环境的可用的质量差异非常大。选错数据源,后边的坡度、填洼、集水区提取全都要翻车。
2.1 三款 30 米 DEM 的出身与日常表现
| 数据源 | 传感器类型 | 覆盖范围 | 在青海的常见问题 |
|---|---|---|---|
| SRTM v3 | 航天飞机雷达干涉 | 北纬 60° 到南纬 56° | 陡坡和高山阴影区边缘有锯齿状台阶 |
| ASTER GDEM V2 | 光学立体像对 | 北纬 83° 到南纬 83° | 平坦地区(柴达木盆地)容易看到横向条带噪声 |
| ALOS AW3D30 | PALSAR 雷达立体测量 | 北纬 82° 到南纬 82° | 局部山谷空洞,但整体空洞率最低,细节最好 |
先说 SRTM。它来自 2000 年奋进号航天飞机的雷达干涉测量,后期 NASA 把原本以 90 米分发的版本重采样出 30 米,也就是 SRTM v3。在青海这类高差大的山区,雷达信号在陡坡处容易失相干,DEM 表面会出现一种像梯田一样的台阶感,提取坡向时能明显看到多条平行的棱线。它最大的优点是空洞少、稳定,做区域背景数据很好,但作为精细分析的底图有点勉强。
ASTER GDEM V2 由 NASA 和 METI 联合发布,基于光学立体像对生成。它的覆盖最完整,40 多度到 80 多度范围基本都有,青海全省都能取到。但光学数据怕云、怕雪、怕阴影,在高原地区,尤其是昆仑山西段雪线附近,局部会出现高程异常和条带。V2 版本已经修掉大量 V1 的伪影,但柴达木盆地那种平坦盐碱地、戈壁纹理极弱的区域,仍时不时看到规则的横向条纹,这属于 ASTER GDEM 的“胎里毛病”。
ALOS AW3D30 来自日本 JAXA 的 PALSAR 雷达数据,是目前公认在山区细节和空洞控制上做得最好的全球 30 米 DEM。雷达不受云的影响,在青海祁连山区和可可西里这种云量大、地面纹理又复杂的区域,综合质量明显更稳。缺点也很现实:分幅数量多,下载时要反复重试,很多国内团队懒得折腾,反而错过这个好数据源。
2.2 青海特殊地形对选型的影响:湖泊、雪线、深切割峡谷
青海的地形不是均匀的“高原”,省会西宁周边是黄土丘陵,青海湖盆地是平坦水域加草甸,玉树、果洛那边是深切割的高山峡谷,柴达木盆地则是极端平坦的盐碱平原。我拿到青海项目后的固定动作是先圈出项目区,再决定用哪个源:涉及江河源区水文分析、冲沟提取、潜在滑坡识别的,优先 ALOS AW3D30;只是做“全省地形概况”和宏观日照分析的,用 ASTER GDEM V2 就够;做跨区域、跨省的连续拼接,则多用 SRTM v3,因为它最省心,接边一致性好。
具体到青海湖、察尔汗盐湖这类大面积水体区域,光学和雷达数据都会出现水面高程波动。水体表面在可见光下纹理弱,在雷达下后向散射也低,双方都容易把水面附近的地形做平或做鼓包。选数据源时要有预期:湖岸线周边 1-2 公里的高程你只能信趋势,不能信像素级精度。如果项目恰好做环湖道路选线,那就要额外引入水体矢量边界做掩膜,把湖面高程统一替换。
2.3 不想碰命令行的备选捷径:用 Bigemap 加 Global Mapper 拿现成 GeoTIFF
我清楚有不少同事习惯直接用 Bigemap 一类的图商客户端把项目区高程数据拉下来,再用 Global Mapper 14 打开、裁剪、导出成 dem 文件或 GeoTIFF。这套流程适合以 ArcMap 为主、不爱敲命令的业务岗位,操作确实快:框选范围、叠加下载、Global Mapper 里统一导出,十几分钟就能得到一块能用的 30 米高程栅格。
但我要提醒一句:这种“黑匣子”式的数据获取方式,最大的问题是你拿不到原始数据说明,不知道分幅号、原始坐标系、无效值到底是多少。我曾经处理过一份从这类客户端导出的 tif,表面一切正常,一跑坡度分析,边缘全是异常负值,查了半天才发现无效值被软件写成 32767,后续所有加 1000 米的运算全被污染。所以走这条捷径可以,拿到文件后第一步先做检查,这个习惯能救你一命。接下来就看怎么把全球分幅的 DEM 拼成青海省范围。
3. 把全球 1 度分幅的 DEM 拼成青海省范围:gdalwarp 拼接与省界裁剪全流程
30 米 DEM 在全球范围按经纬度 1 度 x 1 度分幅发布,青海相当于要拼几十块。直接把这些分幅拖进 ArcMap 看不是不能看,但做省级分析、计算坡度坡向时,每块之间会互相“打架”。规范做法是先拼接成一张全省覆盖的 GeoTIFF,再按省界矢量裁出来。
3.1 先看懂分幅文件名,再决定要下载哪几块
ASTER GDEM V2 和 ALOS AW3D30 的文件名都带经纬度索引,比如 N36E094 表示北纬 36 度、东经 94 度这一块。青海省范围大致在北纬 31.5 度到 39.5 度、东经 89 度到 104 度之间,按 1 度分幅去圈,就是一堆 N31 到 N40、E089 到 E104 的文件。下载前先在 Excel 里列一个“经度 x 纬度”矩阵,把项目实际覆盖的分幅勾出来,能少下三分之一无关数据,尤其是省界边缘那些只蹭到一点边的分幅。
拿到文件后先用 gdalinfo 看每一个 tif 的基本信息,重点看坐标系、像素大小和无效值标记。分幅文件的投影一般是 WGS84 经纬度,像素大小是 0.00027778 度左右,也就是 30 米。这一步不花时间,但能避免后边拼接时出现坐标系不一致的晕头情况。
3.2 gdalwarp 全省拼接:一条命令处理坐标系、无效值与接边
分幅文件准备好后,我最常用的拼接命令是下面这条,直接放在 bash 里跑:
gdalwarp -t_srs EPSG:4326 \ -r cubic \ -dstnodata -9999 \ -of GTiff \ N36E089.tif N36E090.tif N37E089.tif N37E090.tif ... \ qinghai_dem_30m_raw.tif命令里-r cubic指定重采样方法是三次卷积,比默认的最近邻要平滑,能减少山区地形的锯齿感。-dstnodata -9999是把输出统一写成 -9999,这样后面裁剪再统一处理无效值。如果分幅文件本身的无效值标注不统一,gdalwarp 会自动处理,但你要留个心眼:输出文件的 NoData 值未必等于 -9999,等拼接完用 gdalinfo 再看一眼。
拼接完成输出一张 qinghai_dem_30m_raw.tif,用 ENVI 或 ArcMap 打开,先做一次目测。重点看大范围有没有整块空白、湖区和山脊有没有明显的颜色断裂。平滑过渡是正常的,但当你看到一条清晰的缝、两边高程明显不等,那就是分幅之间存在基线差异,后边要做高差校正,这个坑我在第 4 章详细写。
3.3 按省界矢量裁剪:Clip、按掩膜提取与 gdalwarp -cutline 的区别
拼接完成后,下一步是裁剪到青海省界。很多人在 ArcMap 里会同时看到两个工具搞不清楚:一个是“数据管理工具 - 栅格 - 栅格处理 - 裁剪”,另一个是“空间分析工具 - 提取分析 - 按掩膜提取”。它俩都可以用面图层裁剪 DEM,但处理逻辑有差别:裁剪(Clip)直接用矩形或矢量范围切窗,速度快、边缘干脆,但不自动处理边界外的无效值;按掩膜提取会把矢量转成掩膜,边缘像素会依据掩膜重新判定,边界外像素多半会成为 NoData,更适合严格要求掩膜外无数据的场景。
我在实际项目里,如果只是把省界内的 DEM 切出来做展示,用 Clip 就够了;如果要紧接着做填洼、流向计算,我倾向用按掩膜提取,因为无效值边界更干净。而在 Linux 服务器上处理大批量数据时,我用的是 gdalwarp 的裁剪方式,一条命令连拼接带裁剪全搞定:
gdalwarp -cutline qinghai_boundary.shp \ -crop_to_cutline \ -dstnodata -9999 \ -of GTiff \ qinghai_dem_30m_raw.tif \ qinghai_dem_30m_clip.tif-cutline指定省界矢量,-crop_to_cutline让输出栅格的范围完全贴合矢量范围,边界外不再保留冗余区域。这一步做完,数据整体就收敛到青海境内,边缘像素被切成 NoData。如果你在 ArcMap 里做,一定要确认省界矢量自身的投影和 DEM 保持一致,不然裁剪后的边界会歪歪扭扭。剪完再叠一次青海省界,验证边界贴合度,这是贵的教训换来的习惯。
4. 青海省 DEM 常见问题排查:黑边、DSM 混淆、接边台阶与投影玄学
数据拿齐、裁剪做完,你以为就完事了?大多数 DEM 项目真正耗时间的不是下载,是排查看起来对、实际到处都是毛病的栅格。青海地形特殊,下面几条是我在这片区域反复踩过的坑。
4.1 黑边与漏值:无效值不一致为什么总出现在省界边缘
现象:裁剪后的 DEM 在省界内侧一圈出现黑色条纹,或者在 ArcMap 里显示为 NoData,值为 -9999、-32768 混在一起。
原因:原始分幅文件使用两种无效值标记,某些地块用 -9999,另一些用 -32768。裁剪时只统一了输出参数,没有先把输入分幅的 NoData 统一,结果边界附近很多像素被错误保留或错误丢弃,显示成黑边。
解决:拼接前先对每一块分幅做gdal_translate -a_nodata -9999统一点位,再用统一的-dstnodata -9999拼接。拼完后再用 gdalinfo 检查输出文件的有效值统计,min/max 若出现负大值,就要回到分幅逐块排查。ArcMap 用户可以在栅格计算器里加一句SetNull(IsNull(dem), dem)强制统一 NoData。
4.2 DSM 与 DEM 的混淆:青海湖环湖和城市区域高程异常
现象:青海湖周边和西宁城区的 DEM 中,湖面和河滩原本应该平坦,却显示出高低起伏,甚至出现房屋、树冠的“轮廓”。
原因:把 DSM(数字表面模型)当成了 DEM(数字高程模型)。30 米分辨率下,树冠、建筑、桥梁顶部都会混进高程值里。青海湖周边草甸和西宁城市建成区这类区域,DSM 与真实地面高程的差异可达数米到十几米。如果拿这份数据做填洼,会在湖心洼地或建筑物屋顶上生成错误汇水点。
解决:先确认数据来源。ASTER GDEM 和 ALOS AW3D30 是经过滤波处理的 DEM,不是 DSM,但仍要到人工地物密集区抽检。检测方法是把 hillshade 叠到影像上看,如果城市区域出现网格状隆起,就要用矢量建筑区做掩膜,把局部高程替换为邻域众数并重插值。DSM 生成 DEM 的常见做法是用点云分类或形态学滤波,手上没有点云时,至少要做一遍中值滤波把孤立高值抹平。
4.3 接边台阶与条带噪声:用 hillshade 一眼识别
现象:全省拼接后的 DEM 上,某一县边界处出现连续的高程台阶,或者柴达木盆地平坦区出现均匀间隔的横向条纹。
原因:两个原因常见。一是不同分幅来自不同轨道或不同时相,数据间存在固定的系统性高差;二是 ASTER GDEM 条带噪声在平坦地区被放大。台阶通常以度为单位,肉眼在彩色渲染下不明显,但生成坡度和流向时会在台阶处出现一条“假山脊”和“假河谷”。
解决:先对拼接前分幅做相邻重叠区统计,算平均高差,在拼接时用一个常数进行统一校正。我在操作时会先拼一块小面积试验区,生成 hillshade 快速目测,发现台阶立即回退到分幅级别查。条带噪声则需要中值滤波或傅里叶滤波处理,ALOS AW3D30 在青海西北部几乎没这类问题,所以涉及条带噪声的项目,我通常直接换数据源而不是硬修。
4.4 投影与高程基准:经纬度坐标下算坡度,等于拿厘米尺量公里路
现象:直接在 WGS84 经纬度坐标下用 30 米 DEM 生成坡度图,出来的坡度值整体偏小,或是地形破碎区域出现奇异高值。
原因:ArcGIS 和 QGIS 的坡度工具对经纬度影像支持并不好,它默认把像素宽高按“度”参与运算,而 1 度纬度约等于 111 公里,1 度经度在青海高纬度地区只有约 85 公里,横纵比例不统一,坡度计算完全失真。
解决:先用gdalwarp -t_srs EPSG:32647把青海大部分地区转到 UTM 47N 投影(青海东西跨度大,东经 96 度以东用 46N,以西用 47N 更合适),再生成坡度坡向。另外注意高程基准:SRTM 和 ASTER 使用 EGM96 大地水准面,国家 1:1 万项目通常要求 1985 国家高程基准,两者在青海地区偏差在 20-40 米量级。省级宏观项目可以忽略,涉及工程设计和跨界算高差时,一定要用区域似大地水准面模型改正,否则海拔一拉出去就错 30 米,这在验收时是硬伤。
5. 从 DEM 到等高线 shp:ArcMap 与 QGIS 的最小提取流程
裁剪好的青海 30 米 DEM,最常见的一个下游动作是提取等高线 shp。无论是做规划专题图还是叠加重力勘探剖面,等高线都是最直观的成果。但等高距、平滑参数弄不对,出来的 shp 不是碎线就是断线,这节把流程和参数讲透。
5.1 等高距怎么定:30 米 DEM 配多大间隔才不心累
30 米分辨率 DEM 的一个像素对应地面 30 米,理论上能表达的等高距受制于像素尺寸。经验值是:平原和丘陵区做 10 米等高距,能看清水文脉络但不至于碎线;高山峡谷区做 20 米,能在保证连贯度的同时体现地形大势。你非要 5 米等高距,结果就是满屏锯齿线和破碎多边形,后处理的时间比你想象的长得多。青海这种高差大的区域,我通常直接 20 米起步,需要精细地形时再加 10 米辅助层。
5.2 gdal_contour 命令行批量出 shp:设置好高程属性与 NoData
QGIS 安装后自带 gdal_contour 命令,直接在终端里跑:
gdal_contour -a ELEV \ -i 20.0 \ -snodata -9999 \ -f "ESRI Shapefile" \ qinghai_dem_30m_clip.tif \ qinghai_contour_20m.shp-a ELEV是把高程值写进属性字段 ELEV,方便在样式里标注;-i 20.0是等高距 20 米;-snodata -9999声明无效值,避免在省界边缘画出乱线。跑完用 gdalinfo 或 ArcGIS 打开检查等高线是否闭合,通常在一部分山谷处会出现悬挂线,这是 30 米数据在深切割峡谷区的正常表现,不必强求全部闭合,但数量过多就要考虑加密等高距或先对 DEM 做低通滤波。
5.3 ArcMap 中从 DEM 提取 shp:3D Analyst 工具一步到位
如果你在 ArcMap 中操作,路径是“3D Analyst 工具 - 栅格表面 - 等高线”,输入栅格选裁剪好的 qinghai_dem_clip.tif,等值线间距填 20,起始等高线可不填让它自动取整。有一个容易被忽略的参数是“Z 因子”,当数据是经纬度坐标系时,Z 单位是米但 XY 单位是度,必须填放大系数,常见做法是填 111120,把度转换成近似米,否则生成的等高线高程属性会被错误拉伸,投影后再对不上。
从 DEM 提出的等高线 shp 不建议直接作为竣工断面图使用,30 米数据在沟谷里的插值能力有限,做区域趋势分析可以,做精确断面必须补充实测点。你只需要记住:等高线只是验证 DEM 是否合理的“工具”,不是最终成果的“依据”。
6. 进阶验证与自检:用 gdaldem 批量生成坡向与山体阴影,完成最后一道质检
数据做完,我最后一步固定是用 gdaldem 批量生成山体阴影和坡向,做交叉验证。这一步能暴露前面所有没发现的黑边、台阶和条带,也是把高程数据变成可交付成果之前的最后一道门。把裁剪后的 DEM 放到一个目录,在 bash 里跑一小段循环:
for f in qinghai_dem_30m_clip.tif; do gdaldem hillshade $f ${f%.tif}_hillshade.tif -az 315 -alt 45 -z 2 gdaldem slope ${f%.tif}_slope.tif -s 111120 -p gdaldem aspect ${f%.tif}_aspect.tif -zero_for_flat donehillshade生成西北方向光照的山体阴影,适合肉眼识别条带和接边;-z 2是垂直方向的夸张系数,高原平地微小起伏也能在图上放大;-s 111120解决经纬度坐标系下的坡度缩放问题,这是很多新手忽略的关键参数。跑完后把坡度和山体阴影叠加在影像上,我通常在青海湖边缘和祁连山南麓抽两个区块,放大到 1:5 万查看:如果山体阴影上有明显的“拉丝”痕迹,说明数据源有条带;如果在河谷两侧坡度图出现对称的陡坎,说明拼接时相邻分幅存在高差。
生成坡度和山体阴影后,再用 gdalinfo -stats 检查文件统计值,确保没有异常负值,等高线粗对齐后,这份青海省 30 米 DEM 才算敢放进项目里。最后说个亲身经历:很多年前我在德令哈附近做项目,为了省事拿了一份标签为 “30 米 DEM” 的 DSM 直接算汇水面积,结果集水区边界偏出规划范围近两公里,被甲方当着全组点名。那之后我给自己定了一条规矩:任何 DEM 到手,先 gdalinfo,再跑 hillshade,最后套一次等高线,三步缺一不可。养成这个习惯后,数据质量坑基本都挡在了前期,这个流程也希望能帮到你。
本文还有配套的精品资源,点击获取