ARTICLE DETAIL

资讯详情

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

云南省30米DEM数据下载与ArcGIS处理实战指南

云南省30米DEM数据下载与ArcGIS处理实战指南 简介云南省DEM30米分辨率数据包基于ASTER GDEM V3全球高程模型生成提供覆盖全省的30米精度地形高程信息适合GIS开发者、测绘专业人员及环境研究者开展地形分析、灾害风险评估、土地利用规划等工作。压缩包共10个文件涵盖GeoTIFF高程栅格、云南省界矢量数据、投影定义、属性表等类型总大小约603.1MB可在QGIS、ArcGIS中直接加载使用。数据采用WGS84坐标系与GeoTIFF标准存储与全球地理数据无缝兼容配套的省级边界文件免去了自行裁剪的步骤用户可直接提取坡度、坡向、山体阴影等地形因子用于洪水淹没模拟、地质灾害敏感性评价、交通线路选线等深度应用。目前已有1053人学习下载资源结构清晰、开箱即用是开展云南区域空间分析与建模的可靠基础数据。1. 云南省DEM30米分辨率一张数字高程底图如何撑起山区GIS分析在云南做GIS项目第一份要备的数据几乎都是云南省DEM30米分辨率——它不是某个软件而是一张覆盖全省的数字高程底图每个像元对应地面上30米乘30米的范围存的是地面到参考面的高度。云南山地占比超过九成从横断山到云贵高原高差动辄两三千米没有这张底图坡度、坡向、汇水、等高线这些后续分析全都开不了工。30米分辨率恰好是覆盖全国、免费公开、又能在中宏观尺度上看出地形骨架和大部分切割细节的平衡点。这套数据能帮你把一堆看似抽象的问题落到地面上一块地适不适合做光伏站址、一条规划道路的挖填方大致多少、一个流域的集水边界画在哪、地质灾害隐患点怎么圈初筛范围。适合的人群也很集中自然资源、林业、水利、交通领域的GIS工程师遥感方向的研究生以及所有刚拿到ArcGIS或QGIS、需要把一张省级高程图真正用起来的人。接下来我把从下载到出成果的完整链路讲一遍重点放在打开软件之后每一步到底怎么选参数。2. 云南省DEM 30米数据下载地理空间数据云的数据处理方式与文件格式很多同行把数据下载这一步想得太简单以为网页上点两下就能拿到一张整图。实际上你从平台拖回来的不是一个整包而是几十个按经纬度分幅切好的数据块有的平台还按SRTM和ASTER两套不同来源分目录。下面先把下载逻辑说清楚再讲文件格式怎么统一因为格式问题决定了你后面是顺手还是反复返工。2.1 国内下载渠道地理空间数据云怎么选数据、怎么拉包国内做30米DEM地理空间数据云是绕不开的渠道。它把SRTM和ASTER GDEM这两套全球公开的30米高程数据集整理成了可检索下载的目录覆盖范围包括云南全省。这两套数据的来路不同SRTM来自航天飞机雷达测高在云南大部分区域质量较稳但在高山峡谷的雷达阴影区会留空洞ASTER GDEM来自光学立体像对纹理信息丰富但噪声和伪地形多陡坡地区尤其明显。大量做山区项目的人习惯以SRTM为主ASTER作为局部备选。下载流程上地理空间数据云的处理方式一般是先注册登录然后选数据集类型比如SRTMDEM 30M或ASTER GDEM 30M检索方式选行政区划省份定位到云南也可以用经纬度范围框选平台会返回这一区域内的分幅文件列表最后批量勾选下载。下载回来的东西往往是一个压缩包解压后是一批GeoTIFF文件名带经纬度索引像ASTGTM2_N24E101_dem.tif这种。有人叫它dem安装包更准确的说法是dem数据包——本质是一批按经纬度切好的30米高程文件不是某个软件的安装程序。拿到数据包后先别急着拖进ArcGIS。我建议在硬盘上建三个目录DataTIF存原始分幅DataGRID放ArcGIS分析用的栅格Out放最终成果。原始TIFF保持只读任何转格式、重投影都另存。下载完成后先用QGIS或Global Mapper打开其中一两幅看一眼投影、像元大小和高程范围是否正常。云南最低海拔约76米最高接近6740米如果某幅的最大值显示成八千多或者打开一片黑多半是无效值或极端噪声趁早标记出来别等到镶嵌后再排查。2.2 文件格式对比GeoTIFF、IMG、GRIDdem文件到底指什么从平台下载下来的高程数据常见格式包括GeoTIFF、IMG以及旧工程里遗留的ESRI GRID。很多人搜“dem文件”到底指什么——日常语境里这个词有三个层面广义指一切高程栅格狭义指ArcGIS原生的GRID格式栅格表现形式是一个文件夹里面有dblbnd.adf、hdr.adf等一组文件再有就是某些软件导出专用的DEM交换格式。你实际拿到手里的大概率是GeoTIFF。格式扩展名/形态适用场景注意点GeoTIFF.tif 单文件数据下载、跨软件交换兼容性最好QGIS/Global Mapper直接打开IMG.img 单文件ERDAS老项目、部分遥感处理流程投影信息存在元数据里别单独移动ESRI GRID一个目录含.adfArcGIS本地地形分析内部文件不能改名删除整个目录一起删我一般建议把高程数据统一存成GeoTIFF作为归档格式工作区保留一份GRID副本作为ArcGIS分析专用。原因很实际Slope、Contour这类工具对GRID的历史兼容性最好而GeoTIFF在跨软件交换时最省心。如果项目只用QGIS那全流程用GeoTIFF就够了没必要转GRID。格式本身不改变高程数值但NoData标记方式会影响后续镶嵌的成败这一步值得在开始处理前就统一好。3. 把下载好的云南省DEM变成能用的底图TIFF转dem文件、镶嵌与裁剪原始分幅数据是没法直接做全省分析的你要先后解决三件事格式统一、多幅拼接、按省界裁剪。这三步做完才算有了一张可以随时调用的云南30米DEM底图。3.1 ArcGIS将TIFF转成dem文件的两种做法与注意许多人在ArcGIS里拿到的是一堆GeoTIFF但做Slope、Contour这类地形分析时老版本工具对GRID的兼容性更好于是就有了“arcgis将tiff转dem文件”这个经典需求。转格式本身不改变高程数值只是换容器但有三件事新手容易翻车。第一种做法是界面操作ArcToolbox → Data Management Tools → Raster → Raster Dataset → Copy Raster输入TIFF输出路径给到一个新文件夹下的GRID名格式选GRID。第二种做法是批量转用Raster To Other Format工具输入整个文件夹扩展名写GRID一次性把几十幅转完。当分幅数量到四十个以上时我强烈建议用脚本批量处理否则界面点选能点到手酸。import arcpy import os arcpy.env.workspace rD:\yunnan_dem\tif for tif in arcpy.ListRasters(*.tif, TIFF): name os.path.splitext(tif)[0] _g arcpy.CopyRaster_management( in_rastertif, out_rasteros.path.join(rD:\yunnan_dem\grd, name), nodata_value-9999, formatGRID )这段脚本的逻辑是遍历分幅目录里所有TIFF逐个执行CopyRaster输出到GRID目录同时把NoData统一设为-9999。参数说明nodata_value是关键不同分幅的NoData标记可能不一样有的写0有的写-9999提前统一能避免后面镶嵌时出现黑边format参数指定输出GRID格式。注意GRID格式的输出本质上是一个目录如果目标目录已存在CopyRaster会直接报错所以脚本跑第二遍之前要清空输出目录或者给输出名加时间戳。提示GRID格式在Windows资源管理器里显示为一个文件夹看不到扩展名。判断它是不是栅格看里面有没有dblbnd.adf这类文件就行。3.2 云南全省多幅拼接Mosaic To New Raster的四个必调参数云南的不规则轮廓大约覆盖四十多个经纬网分幅。把这几十幅拼成一张ArcGIS里最常用的工具是Mosaic To New Raster。这个工具有四个参数特别容易让人踩坑Pixel Type、Cellsize、Mosaic Operator和NoData值。参数推荐值原因Input Rasters全部分幅GRID或TIFF按文件名顺序排列方便定位问题分幅Pixel Type16_BIT_SIGNED云南高程范围约76~6740米16位有符号整数够用Number of Bands1DEM本身是单波段数据Mosaic OperatorFIRST重叠区取先写入栅格避免平均过渡造成平台失真Cellsize30锁死30米防止小数精度误差导致重采样NoData值-9999与转格式时保持一致import arcpy arcpy.env.workspace rD:\yunnan_dem\grd arcpy.MosaicToNewRaster_management( input_rasters;.join(arcpy.ListRasters(*_g)), output_locationrD:\yunnan_dem\out, raster_dataset_name_with_extensionyunnan_mosaic.tif, pixel_type16_BIT_SIGNED, cellsize30, number_of_bands1, mosaic_methodFIRST, nodata_value-9999 )这段脚本把GRID目录下所有以_g结尾的栅格按列表传入拼成一张yunnan_mosaic.tif。Mosaic Operator我推荐FIRST而不是BLEND原因在DEM上很微妙如果重叠区两景数据高程有系统差BLEND会做线性加权把接缝处抹成一片平缓的斜坡后期提取等高线时这里会出现可疑的平台。FIRST简单粗暴后写入的覆盖先写入的边界虽然可能有一条小坎但至少不伪造地形。如果实在想平滑接缝等镶嵌完再对边界做局部滤波不要全局BLEND。另一个隐蔽问题是Cellsize。平台标注30米的数据实际像元尺寸可能写成0.000277777度或其他值。Mosaic To New Raster里如果填30工具会把不匹配的输入自动重采样到30米镶嵌后边缘才整齐。不锁这个参数分幅之间哪怕差0.0000001度拼出来都会出现无人机航片那种边缘错齿。3.3 按省界裁剪与投影统一为什么建议先投影再裁剪镶嵌后的云南DEM还带着周边省份的高程下一步按省界裁剪。常见流程有两种先投影再裁剪、先裁剪再投影。我一般推荐先投影后裁剪。理由很直接如果先按经纬度边界裁剪裁剪边缘的像元在投影后会被重采样挪位省界反而对不齐先投影再用投影坐标系下的省界精确裁边界像元更干净。云南横跨UTM 47带和48带东经约97.5°到102°是47带102°到106.2°是48带。做全省尺度分析不要简单用UTM 47或48否则一半正常一半拉伸。我习惯用CGCS2000兰伯特等角圆锥投影中央经线取102°两条标准纬线取25°和27°或者直接用ArcGIS里现成的China_Lambert_Conformal_Conic。如果你只是出图不测量保留WGS84经纬度也能看但后面坡度计算会多个Z因子换算的麻烦。做国土、林业类项目坐标系尽量往CGCS2000靠因为行政界线和调查数据基本都是这个基准。import arcpy from arcpy.sa import ExtractByMask arcpy.env.workspace rD:\yunnan_dem\out arcpy.env.outputCoordinateSystem arcpy.SpatialReference(China_Lambert_Conformal_Conic) dem yunnan_mosaic.tif mask rD:\yunnan_dem\shp\云南省界_2000.shp out ExtractByMask(dem, mask) out.save(yunnan_dem_lcc.tif)这段脚本做的事情是读取镶嵌好的yunnan_mosaic.tif用云南省界shp做掩膜裁剪输出到yunnan_dem_lcc.tif同时输出坐标系由环境变量指定为兰伯特等角圆锥投影。ExtractByMask只保留掩膜范围内的像元范围外自动变成NoData。麻烦往往出在掩膜矢量本身不是CGCS2000——老数据可能是西安80或北京54投影定义不对时软件不会自动对齐这时先用Project工具把矢量转成CGCS2000千万别用Define Projection强行改坐标系。4. 把DEM跑出成果等高线生成dem arcgis、坡度坡向与山体阴影的参数门道底图做好之后就到了出成果的阶段。这一章讲的都是ArcGIS里高频使用的工具但参数如果设错出的图件只能当草稿看。4.1 等高线生成dem arcgis两个方向的流程与精度边界用户搜“等高线生成dem arcgis”其实包含两个完全相反的需求一是把现有等高线内插成DEM二是从DEM提取等高线。先说最常见的方向——从DEM提取等高线。ArcGIS里用3D Analyst的Contour工具输入就是前面处理好的yunnan_dem_lcc.tif。参数上三个最要紧contour_interval、base_contour、z_factor。等高距的选择和DEM分辨率直接相关30米DEM提取等高线常识边界是等高距不小于15到20米小于这个值等高线会开始出现大量锯齿、短枝和闭合圈徒增制图工作量。在云南高山峡谷区做图通常取50米或100米等高距做坡度分区和选线初判时取20米。具体看制图比例尺1:10万图配50米等高距1:5万图配20米。import arcpy arcpy.CheckOutExtension(3D) arcpy.env.workspace rD:\yunnan_dem\out arcpy.ddd.Contour( in_rasteryunnan_dem_lcc.tif, out_polyline_featuresyunnan_contour_50m.shp, contour_interval50, base_contour0, z_factor1 )这段脚本从30米DEM里提取50米间距的等高线存成shp文件。base_contour0表示从0米开始按50米递增如果项目区最低海拔约200米把base_contour设为200能减少无效的小闭合圈。z_factor在这个场景下设为1因为输入数据已经投影成兰伯特等角圆锥水平和垂直单位都是米。如果输入还是经纬度z_factor就得按纬度修正否则等高距会整体偏小一截这是初学者最多踩的坑之一。反过来的流程“等高线生成dem”在ArcGIS里对应Topo to Raster工具。它的原理不是简单反距离加权而是专门面向水文地形重建的ANUDEM算法能自动加强水系线上的流向一致性。适合的场景是你手里有1:1万地形图的等高线加高程点、水系线想重建一个比30米更细的局部DEM。注意三点一要同时喂等高线和高程点只用等高线会在斜坡上产生条带状伪影二要设定海拔范围最小最大值防止外推到离谱数值三cell size设10到12.5米不要小于数据源能支撑的尺度否则就是虚假精细。4.2 坡度坡向与山体阴影30米DEM被问得最多的三个参数坡度坡向是DEM最基础的产品但实际生产中参数翻车率非常高。三个问题最常见输出单位、Z因子、邻域大小。输出单位方面Slope工具有度DEGREE和百分比PERCENT_RISE两种。水土保持分析常用百分比比如坡度大于25%视为陡坡基础地形分析绝大多数用度。Z因子方面当输入DEM是经纬度坐标系时ArcGIS会拿水平单位度去和垂直单位米一起算坡度结果完全失真。常见做法是手动把Z因子设成111320一纬度大约111.32公里但在云南这种南北跨度大、地形切割剧烈的区域这始终是个近似值最好别用。最稳妥的办法是先投影成LCC或UTM让水平和垂直都是米Z因子直接设1。邻域大小方面Slope默认3乘3窗口边缘有噪声时可选5乘5平滑但代价是山脊线会变钝。import arcpy from arcpy.sa import Slope, Hillshade arcpy.env.workspace rD:\yunnan_dem\out slope Slope(yunnan_dem_lcc.tif, DEGREE, 1) slope.save(yunnan_slope.tif) hill Hillshade(yunnan_dem_lcc.tif, azimuth315, altitude45, model_shadowsSHADOWS, z_factor1) hill.save(yunnan_hillshade.tif)这段脚本同时生成坡度图和山体阴影。Slope的三个参数依次是输入栅格、输出单位DEGREE和Z因子1。Hillshade的参数里azimuth是光源方位角默认315度来自西北方向的光适合大多数山地制图altitude是光源高度角默认45度。注意model_shadows有两个选项SHADOWS会输出带阴影的值适合做地形晕渲No Shadows输出的是无阴影的照明值适合在ArcScene里做三维叠加时再套一次光照。云南这种高差大的地方不要再给Hillshade放大Z因子否则峡谷阴影会糊成整片黑块。对于“云南省DEM坡度图”这种典型图件我有两个习惯把坡度按0到5、5到15、15到25、25到35、大于35五级分类用色带从绿到深红把山体阴影放在下面做50%透明度叠合坡度分类制图效果比纯色块好得多。这个技巧不算高深但在山区制图里非常实用。5. 云南省30米DEM避坑指南五个常见翻车现场和解决办法这一章写的都是我在云南不同项目里实际碰到过的问题每条按现象、原因、解决的顺序说清楚。前面几章的操作你已经跑通的话至少能避开一半。5.1 镶嵌成品出现黑边和空洞现象把多幅云南DEM拼起来后图面上出现大片黑的或0值的区域尤其在山脊、峡谷和图像边缘。原因每个分幅的NoData值不一致。有的写0有的写-9999有的软件把0当有效高程记录。云南不少地方海拔在几百米以上0值在图面上看起来像黑色空洞实际上是被当作有效高程参与计算了。镶嵌时NoData没有统一真实高程和无效值混在一起坡度图在这些位置会算出夸张的数值。解决转格式或镶嵌前先用SetNull把所有无效值统一为NoData再进行镶嵌。import arcpy from arcpy.sa import SetNull arcpy.env.workspace rD:\yunnan_dem\grd for g in arcpy.ListRasters(*_g): out_null SetNull(g, g, VALUE -1000 OR VALUE 0) out_null.save(g.replace(_g, _clean))SetNull的三个参数分别是输入栅格、设为空的参照栅格、条件表达式。这里用“VALUE -1000 OR VALUE 0”把负值和高程0设空因为云南最低点约76米把0判为无效是安全的。清洗后再跑一遍Mosaic To New RasterNoData统一传-9999黑边问题基本消失。5.2 坐标系混用WGS84与CGCS2000边界错位现象云南30米DEM和县界、林班界叠加时边界整体错位几十米甚至上百米有的区域还出现旋转错位。原因多数下载平台直接给WGS84经纬度栅格而国土、林业的行政界线是CGCS2000两者基准面存在系统差纬度方向零点几米到几米不等。如果某处错位上百米大概率是有人把西安80或北京54的数据标记成了WGS84这种错误在省级数据整合里特别常见。解决统一用Project Raster做重投影不要用Define Projection去强改。判断方法很朴素找一个已知坐标的高程控制点比如实测的GPS水准点在ArcGIS里用Identify工具读取DEM上该点的高程和坐标和实测值对比。偏差在几米以内正常偏出上百米基本可以断定基准面错了。5.3 ASTGTM在峡谷区的伪沟谷现象用ASTER数据提取的水系和沟壑密密麻麻很多沟道在现实山体上根本不存在图面上像梳子一样。原因ASTER GDEM靠光学立体像对生成云南峡谷区云雾多、山体阴影重在陡壁处解算出大量高程噪声30米网格把这些噪声固化成了伪地形。SRTM虽然也有噪声但整体比ASTER稳。解决以SRTM为主数据ASTER只作参考。如果只能拿到ASTER先做Focal Statistics的3乘3或5乘5均值滤波再用Fill填洼水文分析前务必做这两步。同时评估一条沟在30米DEM上宽度不到3个像元时提取它基本是玄学——它可能是地形噪声叠加出来的不是真实沟道。这个认知能帮你省掉大量后期清理伪沟道的工夫。5.4 DSM生成DEM的错误用法现象用无人机或激光雷达拿回来的DSM直接当DEM算坡度、汇水建筑物和树冠全变成山包挖填方设计依据严重失真。原因DSM记录的是地表以上所有物体的顶面——房子、树冠、电线杆DEM才是裸地高程。二者名字只差一个字母用途完全不同。把DSM当DEM用植被茂密的山区会平白多出十几米甚至几十米的高程。解决如果是激光雷达点云先做点云分类把地面点抽出来生成TIN再转栅格如果是摄影测量DSM可以用形态学开运算或局部最小值滤波平滑回裸地。用ArcGIS的FocalMinimum取窗口最小值能大致削掉独立建筑和树冠但会把谷底也压低只适合粗略估算正式项目还是要回到点云分类。5.5 全云南省处理时内存溢出现象在ArcGIS里对全省镶嵌DEM执行Slope或Fill跑到一半报错999999或直接崩溃系统无响应。原因全省30米栅格约四亿像元填洼、流向这类水文工具会生成多级中间文件加上ArcMap老版本不少地形工具单线程运行极易撑爆内存。我在山区项目里实测过处理范围超过2000万像元时就要留意。解决三个办法。第一分块计算把云南省按流域或县级行政区切成六到八块分别算完后合并水文分析的流向和累积流按块算边界处留一段重叠区。第二优先用ArcGIS Pro 64位环境或独立Python进程跑让内存配额上来。第三用QGIS里集成的GRASS工具r.fill.dir这类算法在分块处理上更稳。工具选型看手头环境不必一条路走到黑。6. 云南省30米DEM的进阶技巧局部地形重建与控制点验证30米DEM在云南大尺度分析够用但在具体项目区——要选一个坝址、画一条进场公路、评估一个隐患点——它就会露馅山脊被磨圆、沟底高程被平滑、陡崖变缓坡。这时候的补救不是等更高精度的付费数据而是用好手头已有的等高线和高分影像。我常用的手法是重点区用Topo to Raster局部重建。如果项目区内有1:1万地形图等高线或已有5米等高距的成果把等高线、高程点、水系线一起丢进Topo to Raster生成10米或12.5米的局部DEM再把它镶嵌回30米底图。这样既不用重做全省又能让重点区有支撑初步设计的细节。操作时给Topo to Raster设定海拔范围云南项目里下限至少设到100米上限按项目区实际情况写防止内插出负海拔或万米峰值。控制点验证是我自己的硬习惯。任何一张DEM不管来路是下载还是重建先用南向北、西向东切五条剖面看一眼有没有突兀的负值、平顶、周期条纹。这比任何统计指标都直观。云南这种地形区SRTM在个别峡谷会有像元级台阶剖面上一眼现形。再拿实地水准点或RTK测量点做交叉验证把DEM读取值和实测值的差值统计出来算个平均误差。如果平均误差超过10米这张30米DEM在这个项目区只能当参考底图不能当设计依据。这套流程从头到尾跑下来一个人一天之内能完成从数据下载到坡度图、等高线图全部产出。希望帮到你。本文还有配套的精品资源点击获取
返回列表