
简介张掖市30米分辨率DEM数字高程数据是面向GIS学习与地学分析的公开数据集适合测绘、城乡规划、环境灾害等方向的学生和研究人员用于地形认知、坡度坡向分析、流域提取及洪水淹没模拟等场景。压缩包共12个文件以tif高程栅格为主shp系列矢量及索引文件、dbf属性表、prj投影与tfw坐标信息齐备可被ArcGIS、QGIS直接读取和配准。区域范围shp已单独提供便于裁剪出张掖市辖区或周边重点地带开展后续分析。包体约187.99MB已有405人学习。借助这套数据用户可快速获取河西走廊中段的地形起伏、河谷与山地格局既可用于课堂实验和毕业设计也能为道路选线、生态规划、灾害风险评估等项目提供基础底图。1. 张掖30米DEM数据实测拆解这份地形基底能直接进ArcGIS和QGIS做过河西走廊项目的人都知道拿90米分辨率SRTM做祁连山前地带的坡度分级沟谷和冲积扇边界全是锯齿边界线一放大根本没法看。换成30米DEM之后等高线形状稳定了冲积扇的扇面坡度也拉得出来。张掖市DEM数字高程数据30m这份资源就是这种能直接落地的地形基底一个tiff格式的数字高程模型配套一个张掖市区域范围的shp边界文件两者叠起来能直接裁剪、填洼、提取坡度坡向和等高线。适合做地形分析、国土空间规划、灌区坡降计算、地质灾害评价的人。拿到手之后第一件事不是打开看颜色而是先做数据检查。2. 数据源与坐标系30米格网在张掖地形下的真实分辨力2.1 30米产品的分辨力边界从祁连山沟谷到走廊平原张掖的地貌格局很有代表性南边祁连山高差大中段河西走廊平原开阔北边合黎山和龙首山相对低缓。高程从走廊平原的1400米上下一直爬到祁连山主脊的5000米以上。30米格网在这种地形下能表达什么、表达不了什么直接决定后续分析路线。先说能表达的。祁连山北坡的沟谷、山前冲积扇的扇面形态、走廊平原的微坡降这些在30米格网下都有足够的像元支撑。一个冲积扇从山口到扇缘几公里长30米网格沿扇面能排布上百个像元坡度变化趋势完全拉得出来。反过来看90米数据扇面只有十几个像元很小的起伏会被网格平均掉坡降计算出来明显偏平。表达不了的是什么呢是裸岩区的微断裂、冰川侵蚀槽、细沟系统这类亚格网地形。做这类精细分析需要12.5米甚至更高分辨率数据30米硬扛就会出现陡坡被抹平、沟道被填浅的情况。所以拿到这份数据先明确任务边界区域尺度地形分析、1:5万到1:10万比例尺制图、水文分析前期处理30米完全够用要是做单沟泥石流建模那得另外找高精度数据。从产品特性看这份tiff大概率是SRTM1或者ASTGTM体系下的产品也可能是基于这两类数据加工后的成果。但不管源头是哪家30米这个级别在张掖属于性价比较高的选择。面积覆盖适中数据量不大一景tiff几百MBArcGIS和QGIS都能流畅处理。2.2 shp范围文件的坐标系识别先统一基准再动手压缩包里那个shp文件从命名看是张掖市区域范围通常有两种形式一是行政区划边界二是研究区矩形范围。不管是哪种处理之前必须先确认坐标系。这一步翻车的人很多我见过不止一次DEM是WGS84经纬度边界shp却是CGCS2000高斯投影两个图层叠加后边界偏移几十米裁剪出来的DEM边缘直接错位。坐标系识别用QGIS最快。加载shp后右键图层查看属性里的CRS信息或者打开图层属性的“信息”页签里面会显示完整的坐标系描述。也可以用命令行工具ogrinfo直接读ogrinfo -so zhangye.shp zhangye | grep -E EXTENSION|EPSG|PROJCRS|GEOGCRS输出里如果看到GEOGCRS[WGS 84说明是WGS84经纬度坐标如果看到PROJCRS[CGCS2000说明是2000国家大地坐标系的高斯投影。这两类坐标系在张掖这个经度范围平面位置差异通常在几十米量级。对DEM裁剪来说几十米的错位足以让边界上的地形信息大面积失真。统一坐标系我一般建议这么处理DEM原始数据如果是WGS84经纬度边界shp也是WGS84那直接投影到UTM 47N再干活。张掖市区约在东经100度正好落在UTM 47N覆盖区96°E到102°E投影变形小后续坡度和面积计算都方便。如果边界shp是CGCS2000那就把DEM重投影到CGCS2000对应的投影坐标系和shp保持一致而不是反过来迁就DEM。2.3 范围shp的三个用途裁剪、分区统计、出图很多人以为shp边界文件只是用来裁剪其实它的价值有三个层面。第一是严格裁剪。用shp做cutline把DEM裁到张掖市行政边界避免拿矩形范围做分析时把周边青海、内蒙古的高程也算进来。特别是祁连山南坡已经出了张掖市范围不裁剪的话坡度分级统计会被山体南坡数据污染。第二是分区统计。结合DEM可以做高程分级统计比如把张掖市范围内3000米以上区域面积算出来用zonal histogram工具按shp边界统计各级高程的面积占比。这对做生态保护红线、林线分析都很有用。第三是制图出图。分析完的坡度图、坡向图配上shp边界做掩膜只在边界内显示数据图面干净得多。ArcGIS里用“按掩膜提取”工具QGIS里用“裁剪栅格按掩膜图层”效果一样。注意一点裁剪前先确认shp文件本身的几何质量。有些范围shp是从全国边界数据里裁出来的边界上可能带细微的自相交或悬挂节点用ArcGIS的修复几何工具先跑一遍再拿去裁DEM能省掉后面很多莫名其妙的问题。3. 数据检验与预处理四道关把tiff变成可分析DEM3.1 用gdalinfo检查像元深度、nodata与无效值拿到DEM第一步不是打开看而是先用gdalinfo读元数据。这份数据的空间参考、像元深度、nodata值设置全在这一条命令的输出里gdalinfo zhangye_dem_30m.tif重点看几项Size确认行列数Pixel Size确认是不是30米分辨率Band 1下面的NoData Value还有Coordinate System是否和shp匹配。30米分辨率在张掖这个纬度像元大小应该接近(0.0002777778, -0.0002777778)度换算过来就是1/3600度大约30米。nodata值是关键检查项。常见设置是-9999或者-32768。如果gdalinfo输出里没有NoData Value这就要警惕了意味着无效值可能被当成普通高程值参与计算。最典型的翻车现场是DEM边缘一圈本来应该是空值结果因为nodata没设置参与填洼后边缘出现一圈深坑看起来像护城河。直接用rasterio跑一段Python脚本把无效值排除后的真实高程范围统计出来import rasterio import numpy as np with rasterio.open(zhangye_dem_30m.tif) as src: dem src.read(1) nodata src.nodata # 排除nodata后统计真实高程范围 valid dem[dem ! nodata] if nodata is not None else dem print(行列号:, src.height, src.width) print(nodata设置:, nodata) print(有效高程最小:, np.nanmin(valid)) print(有效高程最大:, np.nanmax(valid)) print(无效值像元数:, (dem nodata).sum() if nodata is not None else 0)这段脚本的逻辑很直白先读栅格数据再按nodata值过滤出有效像元最后输出高程范围和无效值像元数量。注意np.nanmin和np.nanmax处理的是数据里的NaN和nodata是两回事所以必须在过滤后再统计。如果统计出来最小值是负数且绝对值很大说明这部分数据来源可能是经过了某种差值处理需要进一步排查。3.2 QGIS中的重投影与shp裁剪参数确认完坐标系后如果DEM和shp的坐标系不一致先做重投影。QGIS里用“栅格投影”工具也可以在命令行下用gdalwarp一步到位gdalwarp -t_srs EPSG:32647 -r bilinear -cutline zhangye.shp -crop_to_cutline zhangye_dem_30m.tif zhangye_dem_utm47n_cut.tif参数拆开讲-t_srs EPSG:32647表示目标投影是WGS84 / UTM 47N这是覆盖张掖区域的标准投影-r bilinear指定重采样方法为双线性插值DEM重采样一般用bilinear或cubic千万别用nearest那会让地形产生阶梯状棱线-cutline zhangye.shp指定裁剪边界-crop_to_cutline让输出栅格严格按shp的范围生成而不是保留完整矩形。重投影后最好再跑一次gdalinfo确认Pixel Size变成了30米左右而非变形成30.1米。UTM投影下像元尺寸理论上保持一致但如果原始数据在经纬度网格上投影边缘像元重采样后可能出现轻微尺寸偏移这一步能看到实际值。3.3 ArcGIS填洼的参数陷阱Z limit不是越大越好DEM填洼Fill是水文分析前的标准工序但填洼参数设不好地形直接被改造成台地。ArcGIS的Fill工具里有个Z limit参数很多人直接留空或者随手填个几千结果就是祁连山的沟谷被填平成一片缓坡真实地形消失。在张掖这种高差大的区域Z limit的设置要先看实际地形。一般的做法是先用焦点统计计算DEM的局部高差分布或者直接看填洼后消失的沟谷数量。实际操作中我习惯先跑一遍默认Z limit即不设限制生成填洼结果后和原始DEM做差值差值图上凡是超过某个阈值的区域说明填洼过度。常见做法是设定在50到100米之间。河西走廊平原区地形平缓Z limit设个10到20就够祁连山区沟谷切割深50到100之间比较稳妥。这个值本质上是“允许被填平的最大深度”超过这个深度的洼地保留不超过的填平。ArcGIS里操作路径Spatial Analyst工具 → 水文分析 → 填洼。Z limit填100其他默认。填洼完成后用“栅格计算器”做差值检查原始DEM - 填洼后DEM打开差值结果如果某一片区域差值稳定在100米左右说明那些是真洼地被填掉了如果差值图上出现大范围超过100米的异常块先停一下可能是nodata没处理好回到3.1重新排查数据。4. 地形因子提取实操坡度、坡向、等高线与掩膜裁剪的参数4.1 坡度坡向计算与分级阈值设定坡度计算在ArcGIS里用“坡度”工具QGIS里用“坡度”或gdal的gdaldem slope。核心参数有两个Z factor和输出单位。Z factor是垂直方向单位与水平方向单位的换算系数DEM是UTM投影时水平和垂直单位都是米Z factor设为1即可。如果DEM还在经纬度坐标下水平和垂直单位不一致Z factor要按纬度余弦值近似计算张掖约在北纬39度这个值大约是0.78。所以强烈建议先投影再做坡度。坡度提取后就是分级。张掖这种地形分级阈值表是个参考坡度范围度张掖地形对应特征常见用途0-5走廊平原、冲积扇扇缘灌区、耕地适宜性5-15山前坡地、洪积扇中上部林草地分布15-25祁连山浅山区水土流失敏感性评价25-45祁连山深切割区地质灾害易发区45裸岩陡崖不宜建设区这个分级不唯一但逻辑是明确的平原区阈值要细陡坡区可以放宽。如果你做的是全域统一分级0-5度那一档在平原区太粗走廊平原的微坡降被压在一个级别里后面做灌区分析时还得重新细分。坡向计算就简单了直接调用“坡向”工具输出是0到360度的方位角其中-1表示平地。平地像元在后续分析里常被当成无效值如果研究区包含大面积走廊平原这部分占比很高做坡向统计时要单独列出“平地”类别不要硬归到北坡南坡里。4.2 等高线生成与平滑参数等高线生成是热搜里出现频率很高的操作ArcGIS的“等高线”工具和QGIS的“等高线”工具参数一致等值线间距interval和起始高程base level。间距怎么选完全看地形和目标比例尺。张掖全市范围出图50米间距比较合理图面不密不乱祁连山典型沟谷做局部分析20米间距能看到沟道两侧的坡形变化走廊平原做灌区坡降5米间距都嫌粗直接看DEM坡向渲染比等高线直观得多。实际操作坑在于直接用原始DEM生成等高线山区部分线条锯齿感强平原部分等高线又稀疏得断断续续。我的做法是提取前先做一步平滑用Spatial Analyst的“焦点统计”工具以3x3像元窗口做均值平滑然后从平滑后的DEM提取等高线。QGIS里等价操作是gdal的gdaldem配合gdal_contourgdaldem smooth zhangye_dem_utm47n_cut.tif zhangye_dem_smooth.tif -smoothing 5 gdal_contour -a elev -i 20 zhangye_dem_smooth.tif zhangye_contour_20m.shp-a elev指定属性字段名生成出来的shp里每条线的高程值就存在这个字段里-i 20是等高距20米。注意gdaldem smooth的-smoothing参数取值范围是0到105是中档平滑太狠会把真实地形拐角也抹掉。有个问题值得留意等高线shp自带高程属性字段但如果你在ArcGIS里对生成的shp做了拓扑编辑或合并操作字段值可能被重置这时需要用“按属性选择”工具按elev字段重新赋值别凭肉眼确定哪条线是哪个高程。4.3 山体阴影与三维显示快速检查数据合理性拿到DEM先别急着分析生成一张山体阴影图Hillshade叠加原始DEM做半透明显示一眼就能看出数据有没有条带、空洞、拼接错位。ArcGIS里“山体阴影”工具参数就两项太阳高度角默认45度和方位角默认315度。张掖地区我习惯用高度角40度、方位角135度来做这样从东南方向打光祁连山北坡的沟谷和冲积扇纹理最清楚走廊平原的微地形也显影。如果生成的山体阴影图上有明显的横向条纹多半是原始数据源在不同轨道之间拼接时的接边效应如果出现突兀的黑色空洞那是nodata没处理好。这两种情况都建议回到原始tiff重新检查而不是继续往下做填洼。5. 常见问题与避坑张掖DEM处理中容易翻车的五个场景5.1 nodata被当成0值参与填洼走廊平原出现人工深坑现象填洼结果出来后平原区出现一些深度几十米的圆形深坑位置和DEM边缘或者河流断点高度吻合。原因是tiff文件里nodata值没有正确设置无效值在填洼工具眼里就是0海拔直接被填充。解决方法是回到gdalinfo检查如果没有NoData Value用gdal_edit.py手动写入gdal_edit.py -a_nodata -32768 zhangye_dem_30m.tif再跑一遍3.1的Python脚本确认nodata像元数量确认生效后再做后续处理。5.2 shp边界与DEM坐标系不一致裁剪后边缘错位现象用张掖市shp裁剪出来的DEM边界上明显缺了一块或者多了一块山区和实际行政边界在高分辨率影像上对不上。原因就是坐标系不统一WGS84和CGCS2000之间在张掖地区有几十米平移量。解决裁剪前先确认两边的坐标系用gdalwarp把DEM投影到和shp一致的坐标系再执行裁剪。注意如果shp是CGCS2000重投影目标优先选CGCS2000 / 3-degree Gauss-Kruger而不是WGS84 / UTM 47N。5.3 Z limit设成默认值祁连山沟谷被填成台地现象填洼后原始DEM和填洼结果的差值图上祁连山区大范围稳定在几百米的填平量沟谷系统完全消失。原因是Z limit留空ArcGIS把所有洼地不分深浅全部填平。解决把Z limit改成100米左右跑完后用栅格计算器做差值检查。填洼的意义是消除阻碍水流连续性的微型洼地不是重塑地形。5.4 等高线在平原区交叉混乱、断头严重现象提取出来的等高线走廊平原部分短线密集、方向杂乱图面乱成一片。原因是平原区高程变化太缓DEM像元间的高程差和噪声同级直接提取等高线就是在提取噪声。解决先用焦点统计做3x3平滑再用gdaldem smooth做一次滤波最后才生成等高线。平原区如果还乱把等高距从20米改成5米同时只保留研究区内的线边缘断头用按掩膜提取裁剪掉。5.5 tiff打开是纯黑或纯白显示拉伸问题现象在ArcGIS里打开DEM显示成全黑或者全白用识别工具却能读到具体高程值。原因是显示拉伸方式不对DEM是32位浮点栅格系统默认的拉伸方式没识别出来。解决图层属性里把拉伸类型改成“百分比截断”截断范围设2%到98%或者改成“标准差”拉伸乘数设2。这样显示出来才是正常的地形明暗效果不影响数据本身。6. 可靠性验证技巧用一条剖面线五分钟看穿DEM毛病填洼和分析都做完后最后一步做验证别急着出图。我每次拿到新DEM都会先画一条剖面线从祁连山北坡随便找个山口拉到张掖城区方向贯穿山区到走廊平原然后用QGIS的Profile Tool插件或者ArcGIS的3D Analyst剖面工具提取这条线上的高程变化曲线。判读标准很明确山区段高程应该连续爬升坡度从山前到主脊逐渐变陡冲积扇段高程缓慢下降曲线平滑走廊平原段接近水平但仍有微小坡降。如果曲线上出现锯齿状骤降或者突兀的尖峰说明数据里有未处理的条带或噪声点如果冲积扇段坡度为零说明填洼时Z limit设得太大把扇面坡降抹平了。更严谨的交叉验证办法是找几个已知高程点做比对。张掖市区高程大约在1400米上下黑河水文站、各县城的高程数据在网上都能查到公开记录。用QGIS的“取样”工具提取DEM上对应坐标的高程值和已知高程做差值误差在15米以内说明数据质量正常超过30米就要警惕是不是投影或裁剪出了问题。从那以后我每次处理新DEM都强制自己先跑一遍剖面验证再做正式分析这个习惯帮我挡掉了至少三次因坐标系搞错而返工的时间损失。希望帮到你。本文还有配套的精品资源点击获取