ARTICLE DETAIL

资讯详情

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

赣州30米DEM数据下载包在ArcGIS中的处理与应用指南

赣州30米DEM数据下载包在ArcGIS中的处理与应用指南 简介江西省赣州市三十米分辨率数字高程模型数据集压缩包内含覆盖赣州市全域及周边的高程栅格与市级范围矢量边界适合地理信息系统初学者以及城市规划、环境研究、灾害评估等领域的专业人员使用。资源共十二个文件主体为高程栅格影像及其配套坐标信息文件另有矢量边界及属性表、投影定义、空间索引和多个元数据文件其中投影与索引文件可保证数据在主流软件中正确显示和高效访问降低预处理门槛并能支撑地形渲染、坡度坡向提取、汇水分析、等高线生成等常见地理信息任务。压缩包大小约一百四十兆目前已有1108人学习。借助其中市级范围矢量文件可对高程数据进行精确裁剪并统一坐标基准结合常用地理信息软件即可快速产出坡度图、地形剖面或淹没模拟为水利设施选址、交通选线、土地整治等提供可靠的高程依据也可作为区域地理教学与科研的基础数据。1. 赣州市30米DEM数字高程数据带shp边界的下载包到底能做什么做GIS项目的人最烦的不是处理数据而是“缺数据”。尤其像赣州市这种跨多个地形单元的区域——南部是南岭山脉的余脉中部有丘陵盆地北部又连着武夷山脉如果你手上只有90米或者250米的DEM做坡度分析和视域分析时那种粗糙感简直让人想摔鼠标。这份赣州市DEM数字高程数据30m含本市级范围shp文件.zip解决的就是这个“第一公里”的问题打开压缩包里面是分辨率为30米的栅格高程数据外加赣州市本级行政区划的shp边界文件。你不需要再去地理空间数据云上按行列号拼接影像也不用自己勾画市界。适合谁做国土规划、林业调查、水文分析的从业者或者正在做赣州区域课题的学生。它不替代你的分析能力但能让你从“攒数据”直接跳到“跑流程”。2. 解开zip之前先搞清DEM的底细文件组织、坐标系与30米精度意味着什么2.1 解压后的典型文件结构栅格文件、shp边界和那个容易被忽略的说明我下载这类数据包的习惯是先别急着拖进ArcGIS第一步是解压后看一眼根目录。一个规范的DEM数据包不管是tif还是img格式都会包含这么几类东西——高程栅格文件常见的是GeoTIFF或ERDAS IMG格式、市级范围shp通常由.shp、.shx、.dbf、.prj四个文件组成以及一份元数据说明。这份赣州市的压缩包从标题看重点就是“30m DEM 本市级shp”所以我默认包内至少有一个覆盖赣州全域的高程栅格以及一个市界边界文件。解压时有一个坑要先提醒如果你用的是Win10系统右键菜单里那个“压缩为zip”功能解压出来的文件偶尔会丢失文件夹路径中的特定字符但更麻烦的是某些网盘下载的zip文件带有“伪加密”标志。什么是伪加密就是zip文件头里的加密标志被改成了“是”但实际文件内容并没有加密你双击解压时却会提示需要密码。我一般直接用7-Zip打开这类文件——7-Zip对伪加密的容忍度比系统自带解压器高得多。如果7-Zip也报错那就检查文件大小如果一个好几GB的DEM压缩包只有几百KB大概率下载不完整别浪费时间重新下载吧。拿到解压后的文件第一步是把shp的四个相关文件放在同一个文件夹里。很多人直接把.shp单独拖进ArcGIS结果提示“缺少.shx或.dbf”这是最常见的翻车点。我通常会在解压后新建一个名为“赣州_30mDEM”的文件夹把栅格和shp文件组都塞进去这样后续的工程引用路径不会乱。2.2 30米分辨率到底能看清什么从“省份级”到“县域级”的质变很多刚接触DEM的朋友会对“30米”这个概念没感觉。简单换算一下一个30米分辨率的像素在地面上就是约900平方米。这意味着在ArcGIS里做5000分之一比例尺的显示时山脊线、沟谷、陡崖都能看得很清楚做坡度图时基本能支撑水土保持、土地整治这类项目的初步分析。而如果是90米分辨率一个像素将近8100平方米很多细小的冲沟直接被抹平算出来的坡度甚至能比实际低2到5度。这份数据的坐标系也很关键。国内公开的DEM数据常见的投影有两种一种是以经纬度为单位的WGS84地理坐标系另一种是高斯-克吕格投影或UTM投影。如果包内提供的是WGS84经纬度你在ArcGIS里算坡度时工具会提示“建议使用投影坐标系”因为地理坐标系下的坡度计算是错的。我拿到数据后第一件事就是用ArcMAP看一下图层的属性——在“源”选项卡里找到“投影坐标系”和“地理坐标系”。如果发现是WGS84地理坐标那么在做面积、坡度计算前必须用“投影”工具转换成高斯投影中央经线按114°E也就是赣州所在的3度带第38带。千万别用“定义投影”去强行修改那是完全不同的操作定义投影是给没有坐标信息的数据添加坐标而投影转换是改变坐标系的数学表达。3. 在ArcGIS里让DEM落地加载、裁剪、坡度计算与参数设置3.1 标准加载流程把栅格和shp控制在同一套显示逻辑下这一步是基础中的基础但也是很多人之后越做越乱的原因。打开ArcMap或ArcGIS Pro我习惯先把shp文件拖进地图因为矢量文件的坐标系会在状态栏实时显示然后拖入DEM栅格。如果栅格和shp的坐标范围对不上地图会自动跳到两者范围的并集此时你看到的可能是一片“黑”或者一片“灰”那多半是渲染方式的问题。解决显示问题右键栅格图层打开“符号系统”把拉伸类型改为“最值动态拉伸”色带选一个从绿色到棕色的渐变这样地图上能立刻看出地形的起伏。我通常会在这个界面把“Gamma”设为1不给它做线性拉伸的偏移。如果数据本身带有NoData值通常在0值或-9999检查“显示NoData”选项是否勾选。如果黑色的区域太多很可能是NoData被渲染成了黑色而不是数据真的缺失。加载完shp边界后下一步是检查shp和DEM的套合度。我一般会加载一个带坐标的在线影像作为底图或者直接用shp的边界和数据范围的轮廓线对比。如果边界线和山脉走势完全不匹配那就要检查是不是下载到了相邻省市的数据——这种问题在下载数据时偶有发生特别是从网盘分享的资源里。3.2 用市级shp裁剪DEM三个必须写对的关键参数拿到赣州全域的DEM后很多场景不需要完整范围比如做某个县域的坡度分析或者沿着章江流域做水文分析都需要把DEM裁剪到目标区域。ArcGIS里裁剪栅格有两种常见方式一是用“环境设置”里的“处理范围”和“栅格分析”里的“掩膜”组合二是直接用“提取分析”工具里的“按掩膜提取”。我倾向于用后者因为它更直观且不容易产生误操作。在“按掩膜提取”对话框里输入栅格选择的是那张30m DEM输入掩膜数据选择的是那个shp边界。很多人会在这一步忽略一个参数——“输出像元大小”。如果不设置工具会默认取输入栅格的像元大小但万一shp的坐标系与DEM不一致工具会自动重采样导致输出变成其他分辨率。更关键的是如果shp是多边形要素提取时要注意“将输入矩形范围内的像元全部输出”和“只输出掩膜覆盖的像元”这两个选项的区别。ArcGIS默认会输出所有被shp边界矩形范围覆盖的像元也就是说你会得到一个矩形的栅格边界是多边形矩形角落处是NoData。这不影响后续计算但如果你用这个裁剪结果做面积统计NoData区域会被算进去吗不会统计时默认忽略NoData。只是渲染时会显得多余。我一般在裁剪前会先用“要素转栅格”把shp转成和DEM分辨率一致、范围一致的面状栅格再用“乘以”工具让DEM和这个掩膜相乘这样得到的结果就是干净地只保留shp范围内的DEM。虽然多一步但能避免后续“黑边”的视觉问题。如果你就是不想这么麻烦在“按掩膜提取”之后用“栅格计算器”写一句Con(IsNull(mask), -9999, dem)也能把矩形NoData区域填成背景值然后设置符号系统时把-9999显示为空白。3.3 坡度与坡向计算隐藏的Z因子陷阱地形分析最常用的两个工具是“坡度”和“坡向”它们都在“3D分析工具”-“栅格表面”下。坡度计算时有个参数叫“Z因子”Z factor它的作用是调整水平单位与垂直单位的比值。你的DEM数据如果是经纬度坐标系水平单位是度而高程单位是米那么Z因子必须设置为一个很大的数值约111320否则算出来的坡度完全不可信。这个坑几乎每个月都有同行在群里问一遍。正确做法在计算坡度之前先将DEM投影到高斯坐标系。然后Z因子设为1。如何确认投影坐标系右键图层属性在“源”看到“投影坐标系”下写着“Gauss Kruger”或“WGS_1984_UTM_Zone_50N”之类的就可以放心。如果数据本身是经纬度你又不愿做投影那就用“坡度”工具里的“Z因子”填111320真值吗不对111320是纬度方向的换算常数但坡度工具要求的是水平单位与高程单位的比值而水平单位是度时不能简单用一个常数解决不同纬度有差别。所以我强烈建议先投影再算坡度。这一条写进你的操作SOP里能避免很多后续分析的返工。坡向计算相对简单输出为0360度的方位角-1表示平地。如果你后续要把坡向与植被指数叠加分析记得把-1重分类为“平地”类别。这些都是老生常谈但我在实际项目中见过太多直接把坡度、坡向结果扔进统计分析却忽略了Z因子的人。4. 把DEM变成看得懂的成果等高线生成、shp导出与格式互通4.1 从DEM生成等高线等距选择、平滑与拓扑问题很多场景下客户要的不是彩色的DEM图而是等高线shp文件。ArcGIS里“等高线”工具在3D分析工具-栅格表面。我常用的参数是等距10米或20米。赣州地区多山10米等高线在ArcGIS里显示时线条密集打印到A3纸上会糊成一团而20米等高线则比较适中。这个选择取决于你的用途如果做坡度分级图10米够用如果做总体规划图20米更好。生成等高线后的第一件事是检查拓扑错误看看有没有重叠线、自相交线。在ArcGIS中用“拓扑”工具集可以查但我更习惯把生成后的等高线转成CAD能读的dwg文件之前先用“要素转线”工具把欠复杂的线处理一下。怎么判断等高线值是否正确用“识别”工具点一下等高线看它的高程值是否落在DEM的最小最大值范围内。如果出现负数高程且DEM本没有负数那就是NoData被计算了。很多人问dwg转shp的问题反过来shp转dwg也一样。如果你要把等高线shp转成CAD格式在ArcGIS里用“导出为CAD”或在ArcGIS Pro里用“格网转CAD”。注意转换后的dwg文件没有高程属性只是二维线。如果你需要带高程的CAD那就要在ArcMap里用“将属性导出到文本文件”再在CAD里手动加载点文件这一步很繁琐但很多测绘单位就是这么干的。4.2 把DEM成果转成KML或3D Tiles跨平台展示的两种思路做汇报时svg或jpg不够立体客户想看三维效果。我会把DEM在ArcScene里加载并做垂直夸大然后再导出成3D模型。但更轻量级的办法是转成KML——在ArcGIS Pro里右键图层选择“共享为”-“KMZ”就可以把DEM叠加到Google Earth上。这时注意KML显示DEM本质是图片叠加不是真正的3D地形所以只有视觉参考价值。如果是做3D Tiles一般用CesiumLab或DTiles等工具将DEM切片成3D Tiles这适合Web端展示但已经超出了这份数据包本身要解决的问题。在制图输出阶段shp文件的属性表代码页是个大坑。赣州市界shp里如果包含区县名称字段用ArcGIS打开时可能会看到乱码。原因在于dbf文件中的字符编码与ArcGIS默认的编码不一致。解决办法用记事本打开同名.prj文件确认坐标系代码再用“表选项”-“导出”把dbf转成Excel表格或在新版ArcGIS Pro中直接设置“读取器的编码为UTF-8”。我曾经帮人修复过一个省界shp属性表里所有地名都是“锟斤拷”就是因为dbf文件是GBK编码而工具读成了UTF-8。建议在拿到shp后第一时间检查编码而不是等到做专题图时才发现。5. 避坑指南坐标系、黑边、伪加密与渲染卡顿的五个血泪记录5.1 现象shp和DEM“套合”后边界偏移了几百米原因shp文件是西安80或北京54坐标系而DEM是WGS84。两个不同椭球体的坐标即便空间参考都写着“经纬度”数值也会差一个大几米到几十米在某些区域甚至上百米。解决右键shp图层导出为“WGS84坐标系下”的新要素类或使用“投影”工具把shp转换到与DEM一致的地理坐标系。转换时注意使用正确的转换参数比如“Beijing_1954_To_WGS_1984_1”。如果连原始坐标系都不知道那就只能用“空间校正”手动配准这是下策。5.2 现象裁剪出的DEM有黑色矩形区域原因“按掩膜提取”默认输出包含整个掩膜矩形的像元矩形四个角不属于shp范围因此为NoData。NoData在默认渲染中显示为黑色。解决在“符号系统”中将NoData和其他值分开显示或者用“栅格计算器”把NoData填一个特定值如-9999再把该值显示为“无颜色”。我一般用Con(IsNull(dem_cut), -9999, dem_cut)简单有效。5.3 现象zip压缩包解压时提示密码但资源说明里没给密码原因下载的zip文件可能是“伪加密”。部分网盘或QQ中转站会修改zip头标志导致文件属性显示加密但内容并没有。解决用7-Zip打开如果7-Zip不要求密码且能直接看到内容就直接把文件拖出来。如果7-Zip也要求密码试试用ZIP密码移除工具如Zip Password Remover扫描一下里面的目录结构。如果文件头被破坏那只能重新下载。值得提醒的是正规的数据资源包不会设置这种伪加密遇到这种情况多检查文件完整性。5.4 现象在ArcMap里拖动DEM地图画面要卡好几秒原因30米分辨率的全域DEM尽管赣州市面积大约3.9万平方公里但像素数也有约4300万个显示时ArcMap默认用全分辨率渲染。解决在图层属性-“金字塔”里查看是否有“构建金字塔”提示。如果没有金字塔文件.ovr就先构建。也可以在“显示”选项卡中设置“固定比例范围”拉到较小时才显示全分辨率。或者将DEM重新采样为90米分辨率建立一个副本用于快速预览只在最终输出时使用原始30米数据。5.5 现象shp属性表里中文名称乱码在CAD里打开也是问号原因dbf文件是GBK编码ArcGIS 10.2及以下版本以系统区域语言读取如果系统是英文就会乱码。解决在ArcGIS Pro中打开属性表如果仍乱码可用Notepad打开dbf边的.cpg文件控制代码页的文件把内容改成UTF-8并保存。更稳妥的办法是用Excel打开dbf另存为xls再通过“连接”的方式挂接属性。如果你要把shp数据分享给用dwg的同事记得告诉他们属性表需在“要素转CAD”时勾选“将属性字段作为扩展属性”。6. 进阶用法用Python批量提取点位高程值把DEM用出效率当你需要沿道路或河流剖面提取高程值时ArcGIS的“值提取至点”工具已经能做但如果你有一百条线路或者成千上万个点用ArcGIS的批处理反过来更麻烦。我习惯写个小脚本用GDAL和pandas直接读tif里的高程。前提是你已经把DEM转成了GeoTIFF格式并且坐标系已投影好。import gdal import pandas as pd # 打开DEM文件 ds gdal.Open(ganzhou_dem_30m_utm.tif) band ds.GetRasterBand(1) geo_transform ds.GetGeoTransform() # 点位坐标列表这里用两个示例点替换 points [(114.05, 25.85), (114.12, 26.10)] results [] for lon, lat in points: # 把经纬度转成像元行列号 # geo_transform[0]为左上xgeo_transform[3]为左上y px int((lon - geo_transform[0]) / geo_transform[1]) py int((lat - geo_transform[3]) / geo_transform[5]) # 读取像元值若该位置是NoData则返回-9999 val band.ReadAsArray(px, py, 1, 1)[0][0] results.append((lon, lat, val)) df pd.DataFrame(results, columns[lon, lat, elevation]) df.to_csv(elevation_points.txt, sep\t, indexFalse)这段代码的逻辑是先获取DEM的地理范围信息然后根据经纬度坐标换算成栅格行列号再读取单个像元的高程。代码里要注意geo_transform[5]通常为负数表示向下是正方向所以计算行号也要取整时注意正负。如果想让脚本更健壮可以加上对GeoTransform零值的判断并处理从ReadAsArray返回的数组维数确认。如果你是做水文分析建议在提取高程前先把DEM进行填洼处理否则提取出的河流沿线高程会有一堆“坑”看起来反自然。从那以后我每次提取点位高程前都强制走一遍“填洼-流量方向-流量累积”的标准流程确保数据源本身是无凹陷的。希望这些操作习惯能帮到你少走一段我曾经走过的弯路。本文还有配套的精品资源点击获取
返回列表