青海省30米DEM数据源怎么选?SRTM/ASTER/ALOS对比与全流程处理
简介青海省30米分辨率数字高程模型DEM数据基于ASTER GDEM V3制作坐标系为WGS84。青海地处青藏高原东北部地形复杂多样涵盖高山、湖泊、草原、河谷等地貌类型这份数据可为地形地貌分析、地质灾害评估、流域水文研究、城乡规划及交通选线等工作提供基础高程底图面向地理信息、环境科学、地质工程等领域的研究者和从业人员。压缩包共10个文件以GeoTIFF格式的DEM栅格数据为核心另含青海省边界Shapefile矢量文件及其dbf、prj、sbn、shp等配套文件便于在ArcGIS、QGIS、GlobalMapper等软件中直接叠加分析包体大小约944.59MB。数据可支撑用户完成高程提取、坡度坡向计算、可视域分析、等高线生成等操作并借助配套边界文件快速裁剪和划定研究区域同时可作为遥感影像分类、植被覆盖与地形关系研究的基础底图支持后续二次开发与建模。已有495人浏览/学习适合需要开展区域地形分析或专题制图的用户取用。1. 青海省DEM30米分辨率为什么高原水系与选线项目都绕不开这个规格青海省DEM30米分辨率是水利、电力、交通项目在青海落地的第一份数据底图。青海地处青藏高原东北部祁连山、昆仑山、巴颜喀拉山与柴达木盆地并存地形起伏大、沟谷切割深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 AW3D30PALSAR 雷达立体测量北纬 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 到等高线 shpArcMap 与 QGIS 的最小提取流程裁剪好的青海 30 米 DEM最常见的一个下游动作是提取等高线 shp。无论是做规划专题图还是叠加重力勘探剖面等高线都是最直观的成果。但等高距、平滑参数弄不对出来的 shp 不是碎线就是断线这节把流程和参数讲透。5.1 等高距怎么定30 米 DEM 配多大间隔才不心累30 米分辨率 DEM 的一个像素对应地面 30 米理论上能表达的等高距受制于像素尺寸。经验值是平原和丘陵区做 10 米等高距能看清水文脉络但不至于碎线高山峡谷区做 20 米能在保证连贯度的同时体现地形大势。你非要 5 米等高距结果就是满屏锯齿线和破碎多边形后处理的时间比你想象的长得多。青海这种高差大的区域我通常直接 20 米起步需要精细地形时再加 10 米辅助层。5.2 gdal_contour 命令行批量出 shp设置好高程属性与 NoDataQGIS 安装后自带 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 提取 shp3D 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最后套一次等高线三步缺一不可。养成这个习惯后数据质量坑基本都挡在了前期这个流程也希望能帮到你。本文还有配套的精品资源点击获取