
简介这份资源是甘肃省陇南市30米分辨率数字高程模型DEM数据附带陇南市行政边界的Shapefile矢量范围面向GIS从业者、城乡规划、环境研究、灾害风险评估及地理教学人员用于快速获取地表海拔、坡度坡向等基础地形信息。数据精度达到每个栅格单元对应地面30米×30米的平均海拔覆盖陇南市行政边界并包含周边部分区域可支撑坡度提取、汇水分析、可视域分析等常见空间操作。压缩包共12个文件以TIF高程主文件、TFW坐标定位、OVR金字塔和SHP边界文件为主同时包含DBF属性、PRJ投影及SBN/SBX空间索引等配套文件整体约113.86MB导入ArcGIS或QGIS即可直接使用。目前已有360人学习下载适用于城市扩展模拟、地质灾害易发区识别、生态功能区划、交通选线等场景。借助这份完整数据使用者能同时拿到高程栅格与行政边界矢量既可直接制图也可结合其他地理数据做深度建模分析为区域研究和项目决策提供可靠的地形底图。1. 30m DEM压缩包到手先别急陇南地形和这套zip数据的真实定位从同事手里接过一个《甘肃省陇南市DEM数字高程数据30m含区域范围shp文件.zip》很多人第一反应是双击解压、拖进ArcGIS、赶紧出一张坡度图。我劝你慢一步。陇南是甘肃唯一属于长江水系的地方白龙江、西汉水在秦巴山区里切出密集的V形峡谷高差大、坡度陡30m分辨率的DEM在这里能看出主沟、梁峁和坡向大势但遇到窄谷、陡崖、弃渣场就会明显被平滑掉。这套zip的价值在于把高程栅格和区域边界shp文件放在一起让你能直接做裁剪、配准、小流域分析和地灾解释省去东拼西凑找边界的麻烦。适合做规划、地灾、林业、农业选点和工程选址的人但无论新手老手拿到之后先做文件体检别急着打开。2. 解压与文件体检在打开GIS之前识别zip里的“暗伤”2.1 先别双击用unzip -l看压缩包结构zip文件最常见的翻车方式不是数据坏了而是解压出来的东西和你想的不一样。常见做法是先列目录不只双击解压。在Windows上装Git Bash或者直接开CMD都可以用unzipmacOS/Linux自带。先把压缩包内部结构看清楚unzip -l 甘肃省陇南市DEM数字高程数据30m.zip这条命令只列出压缩包内容不会真正解压。重点看三件事文件扩展名是什么、有没有嵌套文件夹、文件路径里带不带上层目录名。如果列出的文件全是flt、hdr、adf后缀说明这不是GeoTIFF而是ESRI Grid或者老式FLT格式如果只有tif和一个散装shp后边会好处理很多。确认结构没问题后再真正解压mkdir -p longnan_dem unzip -O gbk -o 甘肃省陇南市DEM数字高程数据30m.zip -d longnan_dem这里-O gbk是为了处理中文文件名乱码。Windows下压缩工具默认按GBK编码文件名macOS的解压工具常解出乱码目录。如果你用的是7-Zip不需要这个参数直接在界面里右键解压就行。还有个更隐蔽的坑如果压缩包被标记成zip伪加密Windows资源管理器会弹密码框但7-Zip能直接打开。遇到这种情况优先用7-Zip命令行处理7z x 甘肃省陇南市DEM数字高程数据30m.zip -olongnan_dem逻辑很简单先确认里面是什么再决定用哪个工具解压。不要用“解压到当前文件夹”一把梭然后在一堆乱码目录里找数据。提示解压完成后打开目录看一眼文件大小。如果shp只有几KB多半缺附件如果tif是0字节那这个包可以直接退给来源方了。2.2 shp不是“一个文件”tif也不一定只有一张很多人把shp文件当成“一个文件”这是后边所有打不开、对不齐问题的根源。shp是Shapefile的矢量格式它最少由.shp几何、.shx索引、.dbf属性三个文件组成规范做法还会带上.prj投影定义。下表是常见出场阵容文件后缀类型检查要点.tifGeoTIFF栅格DEM主体能否用gdalinfo读到大小和NODATA.tfw / .xml栅格配准文件和元数据看tfw里的像元大小是否约等于30m级别.shp / .shx / .dbf区域范围矢量组三个文件缺一不可缺.prj还能修.prj投影定义文件没有它坐标系全靠猜.txt / .md说明文档先读来源单位、投影、高程基准说明如果你是新手第一次在GIS里“打开shp文件”报错先别骂数据去目录里数一数这几个附件是否齐全。缺了.dbf属性表打不开缺了.shxArcGIS报缺少索引缺了.prj数据能显示但坐标可能是未知坐标系。QGIS对缺件的容忍度稍高ArcGIS相对严格但最后做分析时都会出问题。另一个常见疑问是“arcgis将tiff转dem文件”到底要不要做。我的建议是如果zip里给的是tif你就保持tif。DEM用带浮点值、自带坐标系和NODATA信息的GeoTIFF存储就行老平台非要ESRI GRID格式时再用Copy Raster去转没必要提前转成dem格式多转一次多丢一次元数据。2.3 用gdalinfo核验椭球基准、像元大小和范围解压完先别打开ArcGIS在命令行用GDAL看一眼数据身份证。ArcGIS属性窗口能告诉你范围但椭球基准、高程基准、NODATA值这些细节属性窗口给不痛快。gdalinfo longnan_dem/陇南_DEM.tif | grep -Ei Size is|Origin|Pixel Size|PROJCRS|Data type|NODATA|Extent输出会看到类似这样的关键字Size is是两个像素数Pixel Size是像元尺寸Origin是起始角坐标PROJCRS说明是地理坐标系还是投影坐标系NODATA是无效值。栅格GeoJSON等不必细究关键是判定以下几点Pixel Size如果是0.00027度左右说明原数据还是地理坐标系后续要转投影才算得准PROJCRS里写的是WGS 84还是CGCS2000直接决定要不要做地理变换NODATA如果没显示说明这个tif可能没写入无效值后边做坡度和填洼时会把这些地方当真实地形算Data type如果是Int16而高程值有负数要格外小心SRTM的void值经常是-32768。这里要专门说一个容易忽略的点甘肃陇南这套30m数据如果是GDEMV3或SRTM V3的派生数据椭球基准通常是WGS84高程基准则对应EGM96大地水准面而不是工程上常用的1985国家高程基准。也就是说你用RTK在陇南实测一个点和DEM上读的高程可能差几十厘米到几米。这不代表DEM坏了是两套高程基准不同。真要用于工程放样必须先做高程基准转换不能直接拿DEM高程当实测高程用。3. 加载、投影与裁剪用shp把30m高程数据框进CGCS20003.1 打开ArcGIS/QGIS先定数据框投影陇南选EPSG:4547直接拖入tif也能显示但如果你在WGS84经纬度下直接算坡度、算面积、做缓冲结果会失真。原因是经纬度坐标的X、Y单位是度不是米很多工具默认以为你给的已经是米。陇南大致位于东经104度到106度落在高斯-克吕格3度带的中央经线105度带内。常见做法是把数据框投影设为CGCS2000 3-degree Gauss-Kruger CM 105E对应EPSG:4547。操作顺序是新建地图或工程在属性里把数据框坐标系预置为EPSG:4547先添加区域范围shp确认它能否正常显示再添加DEM的tif看两个图层是否大致贴合用Identify工具在shp边界上取一个点对照范围文本验证坐标。如果shp本身没有定义坐标系ArcGIS会弹“未知坐标系”警告。这时先取消添加用Define Projection工具给它指定和DEM相同的坐标系再重新添加。不要随手选WGS84陇南很多历史shp是西安80或北京54乱指定后会和DEM错好几百米。3.2 gdalwarp重投影把WGS84转成高斯并压缩数据框投影只是显示层面的动态投影要真正重采样输出一份带投影坐标的DEM还得用GDAL。gdalwarp是这里最稳定的工具命令如下gdalwarp -t_srs EPSG:4547 -tr 30 30 -r bilinear -dstnodata -9999 \ -co COMPRESSDEFLATE longnan_dem/陇南_DEM_WGS84.tif longnan_dem/陇南_DEM_4547.tif参数逻辑-t_srs指定目标投影-tr 30 30强制输出像元尺寸为30米乘30米-r bilinear用双线性重采样适合高程这种连续表面-dstnodata -9999把边界外或无值区统一设成-9999避免后续把黑边当真实高程-co COMPRESSDEFLATE做无损压缩这个zip翻出来的数据往往已经很大压缩后能省不少空间。为什么不建议用cubic或lanczos重采样山区DEM中的峰谷像元值是真实的cubic会在陡坡处出现过冲把一个沟谷边上插出负高程。如果坚持保细节可以选cubic但输出后要检查最小值出现负数就得回退。重投影前最好保留原始WGS84文件不删这就是后悔药。提示如果原始DEM已经是EPSG:4547投影坐标就不要再用-t_src EPSG:4326去强制定义先跑一遍gdalinfo看PROJCRS避免坐标系标签被改错。3.3 用区域范围shp裁剪按掩膜提取而不是Clip投影做完后zip里带shp文件就派上用场了。最常见做法是用ArcGIS Spatial Analyst里的“按掩膜提取”Extract by Mask它比你直接用的“裁剪”Clip多了边界外保留NODATA的能力边缘处理更干净。命令行做法用gdalwarp的cutline参数gdalwarp -t_srs EPSG:4547 -cutline longnan_dem/陇南_范围.shp \ -crop_to_cutline -tr 30 30 -dstnodata -9999 \ -co COMPRESSDEFLATE longnan_dem/陇南_DEM_4547.tif longnan_dem/陇南_DEM_cut.tif这里-crop_to_cutline是核心它让输出栅格的范围贴合shp边界而不是保留原来矩形范围。很多人在这一步翻车不加-crop_to_cutline输出还是一整块矩形shp只是用来把边缘之外设为NODATA看起来边缘透明但文件大小没变后边做图幅拼接时还会出现整块的无效区。不过如果只是出图展示我一般先不裁剪直接把shp叠在DEM上面看范围就行。分析阶段才做裁剪因为每次裁剪都会重采样一遍边界像元会被改值多裁一次多丢一次信息。3.4 只有DEM没有shp或shp缺.prj时怎么办有时zip里带的shp文件不完整缺.prj或缺.dbf。这时先别急着换数据源按下面顺序排查确认.shp/.shx/.dbf三个主件存在缺哪个补哪个缺.prj时用“如何新建shp文件”的思路在ArcCatalog里新建一个面要素类坐标系先选EPSG:4547再把缺失.prj的shp通过Define Projection指定为同一坐标系如果连shp都没有可以用“最小边界几何”工具从DEM的范围生成一个矩形shp但这是最后手段生成的范围是外接矩形不含实际行政边界。还有项目里要和MapGIS互转的shp转mapgis线文件前必须注意三点要素必须炸开成单部件属性字段不要用中文转换时选“投影转换”而不是“直接打开文件”。否则在MapGIS里看到的是一条条怪异折线或者属性全丢。4. 用30m栅格跑三个分析坡度、坡向与可视域的必调参数4.1 坡度用“度”还是“百分比”Z因子怎么设ArcGIS的坡度工具界面上有一个Z factor很多人默认填1结果在经纬度坐标系下算出的坡度小得离谱。公式很简单只有X/Y单位和高程Z单位一致时Z factor才为1。WGS84经纬度下X/Y单位是度Z单位是米必须设成大约111320转成EPSG:4547这类投影坐标系后X/Y单位已经是米Z factor设1。命令行下用gdaldem更直接gdaldem slope longnan_dem/陇南_DEM_cut.tif longnan_dem/陇南_slope_percent.tif \ -p -s 111120-p输出百分比坡度山区里的的陡崖往往超过100%比度数更吓人。如果不加-p输出的是度。这里-s 111120是为地理坐标系准备的尺度换算参数投影坐标系下删掉即可。30m分辨率的DEM在陇南V形峡谷里会漏掉一些70度以上的陡崖输出可能只显示35度这是分辨率决定的不是算错。4.2 山体阴影和坡向日照分析、滑坡解译山体阴影常被当成“好看的底图”其实它也是检查DEM有没有拼接错误的好帮手。命令gdaldem hillshade longnan_dem/陇南_DEM_cut.tif longnan_dem/陇南_hillshade.tif \ -az 315 -alt 45 -z 1.5 gdaldem aspect longnan_dem/陇南_DEM_cut.tif longnan_dem/陇南_aspect.tif \ -zero_for_flathillshade参数-az是太阳方位角315度对应西北方向来光这是地形图最常用的方向-alt是太阳高度角45度排布最自然-z是垂直夸张因子陇南这种高差大的地方设1.5就够设太大阴影黑成一团。aspect输出的是坡向方位角0度表示北坡90度东270度西。加-zero_for_flat后平地为0而不是用-9999表示。坡向在陇南特别有用白龙江沿岸的东南坡和南坡降雨接收更多浅层滑坡和泥石流点往往集中在这一侧。把滑坡点shp和aspect栅格叠加统计点在哪个坡向上比单纯拿高程说话更直观。4.3 可视域基站、瞭望塔和风电塔“看得见”问题可视域分析和前两个不同它关心的是站在某个点30米分辨率的表面上哪些像元能被看到。原理是沿每个视线方向判断中间像元是否挡住目标像元。ArcGIS里的Viewshed工具输入栅格加观测点shp即可标注一个SPOT字段表示塔高。命令行GDAL从3.1版本开始提供gdal_viewshed需要手动指定观测点坐标gdal_viewshed -in longnan_dem/陇南_DEM_cut.tif -out longnan_dem/陇南_viewshed.tif \ -ox 105.0 -oy 33.5 -oz 35 -tz 1 -md 10000 -fov 360-ox、-oy是观察点经纬度或投影坐标按你的实际点位改-oz是观察点离地高度广播通信铁塔常见30到40米-tz是目标物离地高度比如看人要设1.5米-md是最大分析距离10公里-fov是水平视场角360度。结果是一个分类栅格1表示可见0表示不可见。如果要用多个塔同时看用ArcGIS里的Viewshed2会比gdal命令行好它会输出累计可见次数。必须说清楚30m DEM做视域只能用于宏观选址决策单棵树、电线杆、塔身横担这些细节全部会被忽略。要精细到通信网络覆盖得换LiDAR数据但做风电场塔位筛选、森林防火瞭望塔选址这套30m数据已经够用。5. 避坑笔记坐标漂移、NODATA黑洞与zip解压的四个血泪经验5.1 加载后全黑或一片灰不是数据坏了是拉伸设置现象DEM拖进ArcMap后通体黑色或者灰蒙蒙一片什么都看不出来。原因DEM是32位浮点栅格默认按最小最大拉伸显示如果存在少量-9999无值或-32768空洞拉伸范围会被这些异常值撑大真正的山体高程差被压到很小显示出来就是黑屏或灰屏。QGIS里常见的是对比度增强未启用。解决ArcGIS图层属性里找到符号系统拉伸类型改成“百分比截断”截断范围填2%到98%如果还有黑边再拉大到1%到99%。QGIS里在图层渲染选项勾选“Contrast enhancement”为Stretch to MinMax并设置Dataset的NODATA。这不影响数据本身纯显示问题。5.2 shp边界和DEM错半条河谷坐标系被当成“未知”甚至乱配现象把区域范围shp和DEM叠在一起边界没有完全贴合向东或西偏出去几十米到几百米小比例尺看不出来放大到1:5000时很明显。原因绝大多数是坐标系不匹配。一种是shp缺.prj被GIS默认当成WGS84而DEM实际是CGCS2000两者在陇南地区平面差可达百米另一种是shp在西安80坐标系下做的被直接赋予WGS84转投影后自然错位。解决先给shp定义一个和DEM一致的坐标系。不要盲目赋EPSG:4547先用gdalinfo看DEM的PROJCRS再Edit the shp的投影。如果DEM是WGS84shp也是WGS84却仍然偏移那就要考虑是不是西安80或北京54的历史数据用ArcGIS的Define Projection改标签不可行得用Project工具配合地理变换参数陇南一带通常用“WGS84_To_Beijing_1954”或“WGS84_To_Xian_1980”七参数。5.3 高程出现-32767、-9999或0的“无值黑洞”现象等值线在某个山谷突然扎进一个深坑或者做水系提取时莫名出现一条笔直的深沟。原因原始DEM在卫星雷达空洞处填了无效值可能是-32767或-9999压缩包作者在裁剪时没正确保留NODATA信息软件把无效值当成了真实高程。最坏情况是把NODATA写成了0河谷里的0值比周围低几百米。解决先用gdalinfo确认NODATA值然后统一转成-9999再做空洞填充gdal_translate -a_nodata -9999 longnan_dem/陇南_DEM_cut.tif longnan_dem/陇南_DEM_mask.tif gdal_fillnodata -md 50 longnan_dem/陇南_DEM_mask.tif longnan_dem/陇南_DEM_filled.tifgdal_fillnodata的-md参数是最大填补半径用50意思是空洞周围50个像元范围内找有效值插值填补。如果空洞超过半径工具会保留NODATA并提示而不是硬填出一个平地。这里要注意别把真实的洼地当空洞陇南有些山间盆地和喀斯特洼地是真实地形gdal_fillnodata只处理被标记为NODATA的区域不会动有效高程所以基本安全。5.4 zip伪加密、中文文件名乱码、shp缺附件现象双击zip弹出密码输入框问了一圈谁都不知道密码硬解压出来shp拖不进GIS提示Shapefile索引丢失或无法打开。原因一种是zip伪加密文件的加密标记位被置1但内容其实没有加密Windows资源管理器仍然要求密码另一种是压缩包制作时把GBK编码的中文文件名塞进zipmacOS或Linux解压后出现乱码目录还有一种是shp主文件在传输过程中漏了附件只给你传了.shp和.dbf缺.shx索引。解决伪加密用7-Zip能直接解不需要移除密码更不要上网找“zip密码移除”工具那是多余动作乱码文件在Windows下用7-Zip或unzip -O gbk解压附件缺失时回源头把整个shp文件组重新拷一遍找不到就以shp几何文件为准做重建。我一般解压后第一件事就是数文件shp组件不全的直接标红。5.5 与MapGIS、CAD互导时的线要素问题现象shp转mapgis线文件之后线全部跑偏或者一条完整线被拆成几段属性表里的字段全是空白。原因Shapefile允许一个要素包含多个几何部分Multi-partMapGIS转换时对多部件支持差另外shp属性字段若包含中文名或浮点型长字段MapGIS的默认模板解析不了。陇南本地很多单位还在用MapGIS做地灾入库这个转换避不开。解决在ArcGIS里先用“多部件转单部件”把要素炸开字段精简为英文短名并删掉浮点型的多余精度列然后在MapGIS转换向导里选择带投影转换的通道而不是直接双击打开shp。转线文件前还要在投影参数里选CGCS2000对应的MapGIS内置坐标系统否则坐标会默认按经纬度读直接偏出几千公里。6. 进阶批量拼接、填洼与高程校核把数据集变成可信底图6.1 用VRT批量拼接别让merge把条带洗出来如果你手里的陇南DEM是分幅下载的拼接时别直接用merge工具它会重新采样并对重叠区域做羽化条带和接缝都是这里来的。可靠做法是先用VRT搭虚拟拼接再落盘成tifgdalbuildvrt longnan_mosaic.vrt tile_a.tif tile_b.tif tile_c.tif gdal_translate -co COMPRESSDEFLATE longnan_mosaic.vrt longnan_mosaic.tifgdalbuildvrt不重采样只是把多个tif的像元位置写进一个索引文件gdal_translate再把它转成单一tif同时做压缩。最后在ArcGIS里叠加hillshade顺着拼接缝看一眼如果接缝两侧灰度跳跃说明两幅数据的椭球基准或采集批次不一致这已经不是拼接命令能解决的事。6.2 水文填洼前给Fill设一个Z-Limit做河网分析时ArcGIS的Fill工具默认会把所有低于某个纳水阈值的洼地都填平参数Z-Limit默认是无限大。陇南有不少构造洼地和湿地一刀切填平后水系会强行绕道。建议先看统计直方图把Z-Limit设在0.5到3米之间只填那些小于阈值的局部凹陷。如果拿不准用QGIS的Fill Sinks (Wang Liu)算法它保留真实凹陷只处理伪洼地更符合山地地形逻辑。6.3 与实测点对高程RMSE怎么算数据再好也要验证。拿出项目里的实测GPS或RTK点在ArcGIS里用“多值提取至点”把DEM高程提取到点属性表然后在Excel里算中误差RMSE等于DEM高程减实测高程的差值的平方和除点数后开根号。一般30m公开DEM在平地RMSE可以到3到5米在陇南这种陡峭山区10米以内都算正常。实测数较少时多是用手持GNSS踩点精度本身就低不要直接下结论这可能是实测点精度问题而不是DEM问题。我自己的习惯是每次拿到这种zip先写一个meta.txt把投影椭球、NODATA、像元大小、范围、高程基准五行字写清楚和tif放同一目录。三个月后再回来看数据不用重新跑gdalinfo去猜谜。这套工作流做完这个30m DEM才能从“能打开的zip”变成“可信的地形底图”。希望帮到你。本文还有配套的精品资源点击获取