ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

那曲市30米DEM地形分析实战:GDAL处理与坐标系避坑指南

2026/9/15 1:07:34 拓冰建站 浏览量
那曲市30米DEM地形分析实战:GDAL处理与坐标系避坑指南 简介西藏自治区那曲市30米分辨率DEM数字高程数据包面向GIS初学者、地理环境研究者及规划分析人员可用于地形地貌解读、坡度坡向提取、流域分析、灾损评估与城市选址等教学练习场景。压缩包共12个文件约637.56MB核心为TIFF格式的DEM栅格数据辅以那曲市行政范围Shapefile矢量边界并配套prj投影文件、tfw地理配准信息、sbn/sbx/shx空间索引及dbf属性表xml元数据则记录了数据来源与坐标系统等关键信息整体结构清晰便于直接导入ArcGIS、QGIS等主流平台。已有354人学习下载。借助这份数据读者可掌握30米精度DEM的基本操作流程练习栅格与矢量叠加、等高线生成、可视域分析等常见空间分析同时结合真实行政边界开展区域尺度的地形量化研究是理解青藏高原高寒地貌与开展GIS实训的实用素材。1. 那曲市30米DEM一张能算的地形图那曲市位于藏北高原平均海拔高地形起伏大。拿到这个「30米DEM 那曲市范围.shp」的zip包第一反应别是解压后直接拖进ArcGIS看颜色它真正值钱的地方在于每个像元都是一个真实地面高度值可以算出坡度、坡向、汇水区再叠加那曲市行政区边界做统计。30米分辨率意味着一个像元覆盖约900平方米对区域级分析足够对单沟道精细分析又偏粗所以用它之前先要想清楚自己的分析尺度。这篇把包里的文件拆开讲一遍然后给出用GDAL和QGIS复现的完整命令同时把shp和DEM叠加时最容易踩的坐标系坑一并处理掉。无论你是做地灾评估、工程选址还是教学练习这套流程都能直接套用。2. 拆开那曲市DEM压缩包文件角色与30米分辨率的含义2.1 DEM的格网结构与那曲市30米精度DEMDigital Elevation Model本质上是一张规则格网的高度图每个像元存储一个地面点的高程。30米分辨率不是随意定的——它对应的是类似ASTER GDEM v3这类全球产品的标称精度但在实际分幅数据中每个像元在地面上大约是30米乘30米。那曲市南北跨度大东经范围也宽如果你的DEM原始文件采用的是WGS84经纬度网格那么用gdalinfo看Pixel Size会出现0.0002777778这类度数单位。这个值在纬度方向换算成米大约是30.8米在经度方向还要乘上纬度的余弦所以那曲市北部的实际像元距离会比南部略小。地理坐标系下的DEM直接算坡度容易结果偏差正确做法是先重投影到米制投影再做地形计算。2.2 zip包内文件清单与作用解压后不要只盯着那个那曲市dem.tif压缩包里的每个文件都有存在的理由。下表是标准文件角色对照。文件类型作用那曲市dem.tifGeoTIFF核心高程栅格单波段高度值那曲市dem.tfwTIFF World File仿射变换参数确定像元位置那曲市dem.tif.ovr金字塔文件缩小视图时快速加载的影像金字塔那曲市dem.tif.xml / .aux.xml元数据记录坐标系、统计信息、处理历史那曲市范围.shpShapefile主文件那曲市行政边界几何那曲市范围.shx几何索引加速.shp的空间读取那曲市范围.dbf属性表每个边界的属性记录如名称、面积那曲市范围.prj坐标参考文件WKT格式的坐标系定义那曲市范围.sbn / .sbx空间索引ESRI专用加快空间查询和选择那曲市范围.shp.xml元数据带Schema的GIS元数据.shp、.shx、.dbf是Shapefile的三件套缺一个都打不开.sbn.sbx是ArcGIS自动维护的二进制空间索引缺了ArcGIS也会自动重建但大批量选择时可能变慢。.tfw和.prj是坐标系和定位的关键下面单独说。2.3 保留tfw与ovr避免数据悄悄“漂移”那曲市dem.tfw是一个六行纯文本文件记录栅格左上角坐标、像元在X和Y方向的分辨率以及旋转参数。用7-Zip解压时如果只勾选那曲市dem.tif而漏掉.tfw很多GIS程序仍能靠GeoTIFF内部的地理标签打开但如果内部标签缺失影像就会被放到(0,0)位置叠加那曲市范围shp时彻底错位。所以解压zip压缩包时最好保持原始目录完整不要单拎出某一个文件。.ovr是金字塔文件它让QGIS和ArcGIS在缩放到全图时不用读取整个原始tif。你可以放心删除它软件会重新生成但删除后第一次加载会明显卡顿。我的建议是保留毕竟那曲市范围很大30米栅格文件通常有几百MB带金字塔会流畅很多。此外.tif.ovr对应的金字塔损坏时QGIS会提示重新构建直接用文件管理器删掉损坏的.ovr再加载即可不需要重新解压整个包。3. 用GDAL提取那曲市DEM的坡度、坡向与山体阴影3.1 gdalinfo先看数据底细打开终端进入解压目录先运行gdalinfo 那曲市dem.tif重点看这几行Size is后面的宽高、Coordinate System is、Pixel Size、NoData Value。如果Coordinate System显示的是WGS84而Pixel Size是度数说明当前坐标系是经纬度。这时直接跑坡度会得到错误结果因为坡度计算要求水平单位与高程单位一致但这里水平单位是度高程单位是米。如果输出里没有NoData Value或者最小值出现了-9999、-32768这类异常值说明原始数据把无效区域标记成了特殊值。后续gdaldem碰到这些点会输出无效坡度最好先用gdal_translate显式设置NoDatagdal_translate -a_nodata -9999 那曲市dem.tif 那曲市dem_nodata.tif这个命令的逻辑是把等于-9999的像元统一标记为无效值后面的坡度计算才会把这些空洞排除掉。注意-a_nodata后面要跟实际本文件中无数据值不要照抄-9999以gdalinfo输出为准。3.2 重投影到米制坐标后再算坡度坡向那曲市横跨多个经度带直接切UTM 45N或46N都会让边缘区变形。更稳的做法是把DEM转到适合西藏地区的Lambert等角圆锥投影或Albers等积投影。在不知道数据原始投影时我一般用gdalwarp统一到一个固定投影并强制重采样为30米像元gdalwarp -t_srs EPSG:4547 -tr 30 30 -r bilinear 那曲市dem_nodata.tif 那曲_utm.tif参数说明-t_srs EPSG:4547把坐标系转为CGCS2000 / 3-degree Gauss-Kruger zone这里要谨慎实际上那曲市范围较大可能横跨多个3度带直接指定一个带会歪。更稳妥的做法是不指定具体带而是用EPSG:4547这种投影坐标还是有问题。作为通用处理我可以推荐使用Albers等积投影比如自定义projaea lat_125 lat_247 lat_00 lon_095 datumWGS84。用GDAL可以写完整参数。gdalwarp -t_srs projaea lat_125 lat_247 lat_00 lon_095 datumWGS84 -tr 30 30 -r bilinear 那曲市dem_nodata.tif 那曲_dem_albers.tif-tr 30 30强制像元大小为30米-r bilinear用双线性插值重采样适合高程这种连续表面如果做分类数据才用-r near。重投影后再用gdalinfo确认Pixel Size已经变成(30, -30)这样的米制单位。接着算坡度gdaldem slope 那曲_dem_albers.tif 那曲_坡度.tif -p-p表示输出坡度单位是度不加则输出百分比。那曲市地形陡峻用度更直观。坡向和山体阴影可以这样生成gdaldem aspect 那曲_dem_albers.tif 那曲_坡向.tif gdaldem hillshade 那曲_dem_albers.tif 那曲_山体阴影.tif -z 2 -az 315 -alt 45hillshade的三个参数值得记一下-z是垂直拉伸因子高原地区整体高差大如果山体阴影看起来过平把-z调到3-5-az是太阳方位角默认315度即西北光-alt是太阳高度角45度适合中纬度地区。生成的那曲_山体阴影.tif是单波段灰度图把它放在DEM下面作底纹可以同时看到地形纹理和高程色彩。3.3 QGIS可视化叠加那曲市范围shpGDAL算完后打开QGIS把那曲_dem_albers.tif拖进去。图层属性里选择“山体阴影”或“单波段伪彩色”配色方案用terrain并设置透明度为60%这样下面叠加的山体阴影还能透出来。再把那曲市范围.shp拖进来如果两者坐标系不一致QGIS默认启动“实时CRS变换”看起来能对齐但保存导出时一定要重新投影到同一坐标系否则后续用pandas或geopandas分析时会出现单位不统一的问题。4. 那曲市范围.shp叠加分析前先做坐标体检4.1 Shapefile不是单文件很多第一次接触GIS数据的人会认为那曲市范围.shp是一个文件拷走时只拷这个。实际上Shapefile是一组同名文件集合.shp存几何.dbf存属性.shx存几何索引.prj存坐标系。那曲市范围这个shp还带了.sbn和.sbx那是ESRI的空间索引主要加速ArcMap里的选择操作。如果要用ogr2ogr转GeoJSON只需要.shp、.shx、.dbf、.prj.sbn和.sbx可以不用带。但如果用ArcGIS继续编辑最好整组复制。4.2 用ogrinfo检查那曲市范围.shp的坐标系用GDAL的配套工具检查最省事ogrinfo -al -so 那曲市范围.shp输出里会有一段Layer SRS WKT里面写着GEOGCS[GCS_WGS_1984, DATUM[D_WGS_1984或类似的投影信息。对比前面gdalinfo 那曲市dem.tif输出的Coordinate System如果两者字符不同哪怕只差一个投影带直接叠加也必然错位。那曲市范围shp通常带的是经纬度坐标系而重投影后的DEM是Albers或UTM这时就必须统一。4.3 对齐DEM与shp的坐标系并完成叠加我一般的原则是“谁做分析就把另一个转换到谁”。如果最终分析要计算面积建议把shp从经纬度转成与DEM相同的Albers投影ogr2ogr -t_srs projaea lat_125 lat_247 lat_00 lon_095 datumWGS84 那曲市范围_albers.shp 那曲市范围.shp这条命令会生成一组新的shp文件并把属性表和坐标系一并转换。转换后用QGIS再叠一次确认那曲市边界刚好套在DEM边缘。如果边界与DEM边缘有几十米的偏差通常是原始数据源坐标系不同导致可以在QGIS里用“对齐栅格”工具微调但更推荐直接用gdal_warp把DEM整体平移到shp的边界范围而不是手动挪shp。4.4 三个高频加载报错找不到文件或数据源无效先看同目录下有没有.shx和.dbf三者缺一不可另外把解压路径改为全英文GDAL老版本对中文路径处理不好报错经常是No such file or directory。提示缺少prj要素乱飞用QGIS的“图层属性-源-设置坐标系”手动指定为EPSG:4326再重新导出。这种情况常见于从网盘下载后用微信传输文件被改名或丢失.prj。显示速度极慢检查是否删掉了那曲市dem.tif.ovr没有金字塔时QGIS每缩放一次都重新读tif30米那曲全景加载会卡十几秒。右键图层选择“构建金字塔”即可。5. 从30米DEM做等高线与质量验证5.1 用gdal_contour生成那曲市等高线等高线是DEM最常见的派生产品。那曲市海拔多在4000米以上气候和植被按高程分带明显做等高线时等高距可以选50米或100米太小会让生成的文件又大又碎。命令gdal_contour -a ELEV -i 50 那曲_dem_albers.tif 那曲_contour_50m.shp-a ELEV给生成的等高线shp添加一个名为ELEV的属性字段里面存每条线的高程值-i 50表示每50米生成一条。跑完后用ogrinfo检查属性范围确认没有异常负值。如果线条有锯齿可以在QGIS里调用“平滑”处理或者先在GDAL里做一次gdal_translate中的均值滤波但需要注意滤波会改变原始高程精度用于制图可以用于量化分析要谨慎。5.2 三个命令验证DEM数据质量拿到网上下载的DEM数据后不要直接信图标里写的“30米精度”先花两分钟做三项体检。第一项统计值与无效值gdalinfo -stats 那曲_dem_albers.tif看Minimum和Maximum是否在那曲市合理海拔范围内那曲市最低约3000米最高约6800米。如果最小值是-9999或最大值异常说明NoData没有被正确识别需要回到gdal_translate -a_nodata设置。第二项检查数据空洞gdal_calc.py -A 那曲_dem_albers.tif --outfile那曲_无效值面积.tif --calc(A-9999)*1 --NoDataValue0这个脚本把等于-9999的像元标为1其他为0然后统计剩余面积就能算出无效区域占比。如果空洞比例超过10%那曲市部分地区的地形分析结果就要谨慎解读。第三项和野外控制点对比。如果没有实测点可以用Google Earth在高差明显的山脊或河谷取几个坐标再用gdallocationinfo读取对应DEM高程gdallocationinfo -geoloc 那曲_dem_albers.tif 91.2 31.4注意-geoloc后面先写经度再写纬度GDAL会返回该点的高程值与已知高程对比误差在30米内都算正常。把gdal_contour跑完拿到那曲市等高线后后续制图标注和剖面分析就顺了。本文还有配套的精品资源点击获取