ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

湘西州30米DEM数据处理实战:从坐标转换到地形分析

湘西州30米DEM数据处理实战:从坐标转换到地形分析 简介湘西土家族苗族自治州30米分辨率DEM数字高程数据包面向GIS从业人员、地理信息专业学生及城乡规划、环境保护、灾害评估等领域使用者提供可直接用于地形分析的基础数据。压缩包共12个文件约50.18MB核心为覆盖湘西州全域的TIFF格式高程栅格数据配套tfw配准文件、prj投影文件及XML空间参考信息可确保在ArcGIS、QGIS等软件中准确叠加显示同时内含市级范围Shapefile边界文件含shp、shx、dbf、sbn、sbx等格式便于基于行政边界进行裁剪、统计或制图。已有300人学习下载。借助这些数据用户可开展坡度坡向计算、可视域分析、洪水淹没模拟、地形剖面绘制等操作也可用于科普展示或区域地理研究减少自行下载拼接原始数据的繁琐流程提升项目前期准备效率。1. 湘西州30m DEM数据包先搞懂你手里攥着的到底是什么很多第一次拿到《湖南省湘西土家族苗族自治州DEM数字高程数据30m含本市级范围shp文件.zip》的人会下意识把它当成一个需要安装的地形软件。实际上它只是把两份GIS标准数据塞进了一个zip一份是30米分辨率的DEM数字高程栅格文件一份是湘西州本市级范围的shp矢量边界。前者告诉你地表每一个30米见方格子的绝对高度后者告诉你“湘西州”在地图上的精确多边形范围。这两个文件叠在一起直接省掉了GIS项目里最磨人的数据准备阶段——下载、分幅拼接、范围裁剪和坐标对齐。适合做全州尺度的地形分析、淹没模拟、选址评价、坡耕地调查和三维可视化的人也适合刚接触GIS、想拿真实数据练手的学生。但打开它之前最好把预期拉到一个合理高度30m分辨率看全州、看流域足够想拿它去量一条冲沟的断面它连热身都算不上。2. 解压与验货先搞清楚tif里的椭球基准和shp里的坐标系秘密拿到zip先别急着拖进ArcGIS界面。压缩包本身不产生数据解压之后这两个文件是否可用、坐标系是否一致才是后续所有操作的地基。这一步我叫它“验货”花五分钟看清底细能避免后面所有环节都在错误的地基上盖楼。2.1 解压后先清点文件.shp一拖四.tif不只是个栅格把zip解压到纯英文路径的文件夹里建议路径里不要带中文和空格这是老生常谈但每年都有人在这上面翻车。解压后你会看到两类文件一类是DEM栅格通常是一个GeoTIFF格式的tif文件另一类是边界矢量也就是shp文件。shp表面上看是“一个文件”实际上它是一组文件的合称。很多人只拷贝了.shp后缀那个文件发给同事结果对方打开全是空图层然后双方互相怀疑人生。常见配套关系如下文件后缀作用缺失后果.shp几何形状本体点线面的坐标记录缺了它图层完全不存在.shx几何索引加速读取定位缺失后大部分软件能打开但极卡.dbf属性表要素的非空间字段缺失后属性窗口空白.prj坐标系描述文本缺失后软件按默认坐标猜经常错位.cpg属性表字符编码缺失后中文属性可能乱码验证几何文件是否健康的常用做法是用GIS打开后查看每个要素的几何或者用ArcGIS的Check Geometry与修复类工具跑一遍。如果.shx损坏很多软件会拒绝显示图形这时候要先修复索引或重新导出。验证DEM是否健康不要直接肉眼看颜色用命令行看元数据最准。GDAL是处理栅格的事实标准工具你的电脑上如果没有装一个通用发行版就能直接用# 查看DEM栅格的完整元数据 # 重点看Size、Pixel Size、Datum、NoData Value四行 gdalinfo xiangxi_dem_30m.tif这条命令会打印一小段信息。Size后面是栅格的行列数Pixel Size是每个像元的实际地面尺寸30m数据这一行通常是(30, -30)或者(0.000277777777778, -0.000277777777778)前者代表已投影后者代表还是经纬度地理坐标。Datum行写的是坐标基准常见是WGS_1984或CGCS2000也可能显示成椭圆体名称。NoData Value指无效值常见是-9999、-32768或0这个值在后续填洼、坡度、等高线的每一步都会出来捣乱务必记下来。2.2 椭球基准与高程基准GDEMV3、WGS84、CGCS2000、EGM96到底怎么分很多人在这一步把“坐标系”三个字混为一谈。实际上这里藏着三个不同层次的概念椭球基准描述地球形状的数学拟合高程基准描述海拔从哪里起算投影方式决定用经纬度表示还是用平面米表示。30m这个分辨率段的公开产品最常见的是GDEMV3和SRTM两类。GDEMV3的椭球基准是WGS84椭圆体高程起算面用的是EGM96大地水准面。国内常规地形图和国家工程矢量成果则普遍采用CGCS2000坐标系配1985国家高程基准。这几套基准之间不是简单画等号的关系椭球体形状略有差异会在水平方向产生米级的位置偏移高程起算面不同会在海拔读数上产生系统性偏差在湘西这种从云贵高原向洞庭湖盆地过渡的山区这种偏差会被地形起伏放大。实操里最常见的场景是这样的DEM文件里写的是WGS84地理坐标而本市级范围的shp边界是从国土部门拿到的CGCS2000成果两者直接叠加你会发现边界和地形总差着几十米甚至上百米。这不是数据坏了是基准没对齐。判断方法很简单把.prj文件或gdalinfo里的Datum字段读出来再在ArcGIS或QGIS的属性里看shp的坐标系。不一致就先做投影转换再分析不要用“看着差不多”糊弄过去。这里有一个通用经验分析类和制图类的任务全部统一到你所在行业采用的国家基准上去只做地形渲染和快速浏览的用原本的WGS84也能凑合。概念作用常见取值判断位置椭球基准描述地球的数学形状WGS84椭球、CGCS2000椭球tif的Datum字段与shp的.prj高程基准海拔的零起算面EGM96、1985国家高程基准数据说明文档栅格本身不直接标注投影方式经纬度转成平面米地理坐标、UTM 49N、3度分带tif的Pixel Size是否含米3. 把边界shp和DEM精确套在一起投影转换与裁剪的正确姿势验证完坐标系下一步就是让边界和地形在同一个空间里严丝合缝。这一步做不好后面算出来的坡度、面积、体积全都没法用。本市级shp存在的意义就是当裁剪掩膜把一张覆盖范围更大的DEM裁成湘西州边界内的一块。3.1 统一坐标系用gdalwarp把DEM转到UTM 49N先做一个判断你手里的DEM到底是地理坐标还是投影坐标gdalinfo里Pixel Size显示为小数度说明它还处于经纬度状态。经纬度坐标下1度的经度在湘西这种纬度上的实际地面距离不到1度纬度对应距离的九成直接用这种数据算坡度、坡向和面积结果是错的而且错误是非线性的没法用一个系数修正。所以第一步是投影转换。湘西州经度范围大致在109°E到110°E之间跨UTM 49N分带国内测绘也常用3度分带中央经线111°E的那一套。两者都能用选哪一套取决于你后续要和什么数据叠加。如果叠加的是国土和规划口的矢量数据跟着CGCS2000 3度分带走如果只是自己做分析选WGS84 UTM 49N最简单稳妥。常见做法是用gdalwarp完成投影和重采样一次到位# 将地理坐标DEM投影到UTM 49N双线性重采样 gdalwarp -t_srs EPSG:32649 -r bilinear -overwrite \ xiangxi_dem_30m.tif xiangxi_dem_utm49n.tif-t_srs指定目标坐标系EPSG:32649就是WGS84 UTM 49N的标准编号。-r bilinear是重采样算法对高程这种连续表面双线性是保持平滑的稳妥选择cubic能更锐利但可能产生小范围过冲最差的near会把30m数据搞得像马赛克。如果DEM里已经带正确的投影信息gdalwarp会自动读取原始坐标系不需要单独指定-s_srs。转换完复查一次gdalinfo确认Pixel Size已经变成(30, -30)这样的米单位。这时候还有一个容易被忽略的细节投影转换后栅格范围会略微变化四个角可能出现细长的NoData条带。3.2 按边界裁剪cutline用法与NoData黑边的处理投影统一之后用湘西州的shp边界做精确裁剪# 用shp做精确裁剪并设置无效值 gdalwarp -cutline xiangxi_boundary.shp -crop_to_cutline \ -dstnodata -9999 -overwrite \ xiangxi_dem_utm49n.tif xiangxi_dem_clip.tif-cutline后面跟shp路径gdalwarp会把所有落在shp范围内的像元保留、范围外的像元丢弃。-crop_to_cutline的作用是让输出栅格的边界完全贴合shp的包围范围而不是保留原始矩形行数列数再填一片空值。-dstnodata -9999把范围外的无效值统一写成-9999这个值要和数据本身的NoData一致。裁剪完成后不做检查就往下走是翻车的开始。打开ArcGIS或QGIS把裁剪后的DEM和shp叠在一起看三个点边界是否贴合、边缘有没有一圈黑边、边界处的等高线会不会突然折断。黑边几乎都是NoData问题表现为黑色的锯齿带贴附在湘西州界内侧原因是原始数据在边界处本身就有空隙或者是裁剪时像元对齐方式导致边缘一圈像元被判成无效。出现黑边后不要急着重新裁剪先检查原始DEM在边界的像元是否有效再考虑把shp向外缓冲一个像元重新裁剪。到这里你的DEM已经是一块“湘西州形状”的完整地形下一步是把这块地形变成能用于分析的产品。4. 从DEM到能用的地形产品山体阴影、填洼、水文分析和等高线原始的DEM是一堆高程数值只有衍生成坡度、坡向、山体阴影、等高线才对视觉和决策有直接价值。这一章按一条完整的分析流水线走一遍每道工序的参数都按山区地形来调。4.1 山体阴影与坡度光照方向、垂直比例和Z单位陷阱山体阴影是DEM最容易出效果的产品也最能暴露坐标系问题。它的原理是模拟一束太阳光从特定方向打在地表上根据坡面朝向与光源方向的关系生成明暗灰度。渲染时压暗背坡、提亮迎坡能直观看出湘西这种山地的沟谷走向。# 生成西北方向光源的山体阴影太阳高度角45度 gdaldem hillshade xiangxi_dem_clip.tif xiangxi_hillshade.tif \ -az 315 -alt 45 -z 1.0-az是光源方位角315度代表光源从西北方向照来这是地形制图的经典默认方向因为绝大多数地图阅读者习惯左上角亮、右下角暗视觉上不容易产生凹陷反转错觉。-alt是太阳高度角45度比较通用山地峡谷纵横时调到35度能加强沟壑对比但会牺牲平缓坡面的层次。-z是垂直方向放大倍数数字高程在投影坐标下单位已经是米-z保持1.0即可如果数据还在经纬度坐标下硬算才需要夸张放大这本身就是坐标系没统一的重要信号。坡度计算的坑在单位。如果你用的软件默认输出坡度百分比同一个32度的陡坡百分比是62.5%初学者经常把这两个数字搞混写到报告里。处理方法是输出时明确选择“度”作为单位湘西这种喀斯特峰丛地带30m格网下坡度大于45度的像元通常集中在峡谷壁和峰林边缘。4.2 填洼与水文分析喀斯特地貌下千万别一刀切填平水文学分析的起点是填洼因为自然地表上的洼地会阻断径流路径导致流向计算断流。ArcGIS里的Fill工具是标准做法它反复扫描DEM把低于周边像元的高程抬升到溢出阈值。操作界面里关键的参数是z_limit它限制单次填充的最大深度。这里有个必须警惕的地方湘西是典型的喀斯特岩溶区地表溶蚀洼地、漏斗和落水洞是真实现象地下水系远比地表水系复杂。直接做无条件填洼会把真实的溶蚀漏斗当成噪声填平后续提取出来的河网会凭空多出一条穿越山脊的“暗河”。实操经验是先做一次无阈值填洼用填洼前后的栅格相减得到一个“洼地深度栅格”统计它的深度分布观察是否存在明显比周围深一截的斑块。如果某个区域洼地深度超过10米且形态圆滑这很可能就是真实的喀斯特漏斗应当用掩膜把这部分排除在填洼之外或者单独给它设置一个很高的填充阈值保证水流经地下通道不中断。水文分析之后提取河网常见做法是先算流向再算流量累积然后用一个像元阈值决定哪些格网算河道。这个阈值在30m数据上没有普适值小流域经验值常见几百到几千像元需要对照影像和地形反复试。4.3 生成等高线间隔、抽稀和断线检查等高线是从DEM自动生成的最成熟产品也是拿出去给外行看最“专业”的成果。GDAL里一条命令直接输出shp# 每50米生成一条等高线高程值写入ELEV字段 gdal_contour -a ELEV -i 50.0 -nln contours \ xiangxi_dem_clip.tif xiangxi_contours.shp-a ELEV是指定属性字段名后续在制图里要按高程标注就靠它。-i 50.0是等高距30mDEM生成等高线20米间距太密容易锯齿明显50米适合全州范围可视化100米适合省级小比例尺视图。如果你需要用光滑曲线出图可以加-t参数设置顶点容差做抽稀容差单位与坐标系一致设为5到10个像元对应的米数能明显减少密集折线但不要设得太大否则真实的地形特征会被磨平。等高线生成后必查三个问题线是否穿出边界外在NoData边缘有没有断头以及陡崖处是否重叠打架。穿出和断头都和前面的裁剪质量有关重叠则常见于悬崖地形30m数据无法表达直立岩壁会在陡坡处生成互相贴在一起的密集曲线。出现重叠不要尝试手动修线回到坡度分析里把大于70度的像元提取出来单独说明这是30m数据的物理极限。5. DEM落地出现的5个高频坑现象、原因、解决数据落地过程中出的问题高度重复下面五条是我认为最有代表性的踩坑记录每条都按现象、原因、解决三个步骤拆开方便你直接对照。5.1 tif一打开全黑像一张报废图现象把DEM加进ArcGIS画布全黑缩放也没用。 原因这不是数据损坏是栅格渲染拉伸问题。高程DEM的数值范围是几百到两千多米的整数默认渲染器可能按0到255的灰度范围去拉伸加上NoData被当成0值画面自然全黑。 解决在图层属性里的符号系统改成拉伸渲染选择应用统计后的标准差拉伸通常2到3倍标准差就能看到清晰地貌。顺手确认一下栅格属性里的NoData是否被正确识别如果NoData没被识别统计结果会被无效值污染拉伸也会失真。5.2 shp边界和DEM错开几百米边界落在山脊上现象把本市级shp和DEM叠加矢量的州界和地形上的山谷走向完全对不上整体平移了几百米。 原因几乎都是坐标系基准不一致。DEM是WGS84shp是CGCS2000或者shp只有几何没有.prj软件按默认WGS84去猜导致错位。 解决先读出两个文件各自的坐标系如果是缺.prj要确认shp的原始坐标系后手动赋予再转换。不要直接拖动对齐手动移动矢量等于给数据造假。用Project工具把两者统一到同一基准和投影再叠加验证。5.3 裁剪完边缘一圈NoData黑边锯齿贴满州界现象用州界shp裁剪后边界内侧有一圈黑色无效像元放大看是参差锯齿。 原因边界矢量是多边形DEM是规则格网任何多边形都很难让格网像元完全落在边界上落在边界外侧一半的像元被判定无效。另外原始DEM在行政边界附近可能存在真实空缺。 解决裁剪时先给shp做负缓冲或者正缓冲再裁。向外缓冲60到90米再裁能保证边界内的像元完整填充向内缓冲则相反能得到干净利落的边界线但会损失一圈信息。做坡度、水文分析时优先向外缓冲做图时用向内缓冲比较美观。5.4 搜遍全网找“dem安装包”或者把tif改名成dem现象有人把DEM当软件找安装包找半天还有人把.tif后缀直接改成.dem认为这样能提升兼容性。 原因对格式的误解。DEM是一种数据内容不是一种特定文件格式。tif可以存DEMGRID可以存DEM.dem也可以是某种DEM格式改后缀不会改变文件内部结构反而可能导致软件无法识别。 解决保持GeoTIFF格式不变就是最通用的做法。ArcGIS完全可以直接读取tif的DEM不需要转换。如果第三方工具非要.dem用ArcGIS的转换工具做一次真正的栅格格式转换而不是改后缀。5.5 zip解压时提示文件损坏或需要密码现象双击zip解压到一半报错说文件损坏还有的zip打开后提示需要密码但作者明明没设过密码。 原因分卷压缩包没收集全或者传输过程中zip被污染提示密码的现象在zip文件里还有一种叫“伪加密”的标志位问题文件本身没加密但内部标志被改写了。 解决先确认是不是分卷包补齐所有分卷再解压。伪加密的常见解决方法是换用标准的压缩工具打开很多工具会提示是否忽略加密标志选择忽略即可正常解压全部内容。真正解决的关键是拿到zip之后第一时间解压验证而不是等到项目汇报前才处理。6. 进阶玩法把DEM做成彩色山体阴影底图再合成进大工程数据处理好只是及格能让它在汇报和交付里出彩才算完事。这里分享一个我几乎每次做山区项目都会用到的组合拳把DEM和山体阴影融合成一张彩色地形底图再参与更大范围的数据拼合。山体阴影是灰度图叠加一层半透明的渐变色高程分级就能一眼看清“哪里高、哪里低、坡度从哪变陡”。“半透明叠加”的做法在ArcGIS里把彩色分级栅格放在上层透明度设为40%到50%在命令行下则是用gdaldem的color-relief# 按高程色带文件生成彩色分级地形 gdaldem color-relief xiangxi_dem_clip.tif color_ramp.txt xiangxi_color.tifcolor_ramp.txt是一个纯文本每行写“高程值 红 绿 蓝”例如“200 200 230 150”表示低海拔处用浅黄绿。生成的彩色图再和山体阴影做加权叠加或融合这种底图用来做湘西州的地形总览、旅游规划、灾害危险性示意图比单纯等高线直观一个量级。如果以后收集齐邻市的同规格DEM想拼成湖南省范围的大场景不要急着把多个tif直接Merge。先用gdalbuildvrt建立一个虚拼接线索引文件需要时再按范围动态读取省了多次拷贝超大栅格的痛苦。这也是我最初期最容易忽略的教训当时拿到几个地市的DEM就直接合并磁盘空间和等待时间都白耗了一轮换VRT方案后整个流畅度完全不同。最后留一个习惯每拿到一批DEM先写一个几行的说明文件放进同一个zip目录记录来源分辨率、椭球基准、投影、NoData值。不然三个月后你自己看着一堆tif也说不清它是什么基准。希望这个方向的数据处理方案能帮到你少走几步我已经走过的弯路。本文还有配套的精品资源点击获取
返回列表