ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ArcGIS地形图制作全流程:从DEM数据到三维可视化

2026/9/1 4:19:50 拓冰建站 浏览量
ArcGIS地形图制作全流程:从DEM数据到三维可视化 简介本资源面向GIS初学者与地理信息相关专业师生提供一套完整的云南洱海流域地形图制作实战数据包解决ArcGIS中DEM叠加分析、水系提取、流域裁剪及专题地图输出等核心操作需求。压缩包共79个文件包含7个.shp矢量图层含河流、湖区、裁剪边界、12个.adf格式DEM栅格数据90m分辨率、6个.prj投影定义文件及配套.dbf属性表、.sbx/.sbn空间索引和.xml元数据另有.mxd工程文件直接加载全部图层显著降低入门门槛。已有2023人学习下载资源结构清晰支持开箱即用用户可基于dem90m高程数据生成晕渲图结合River_系列与湖区.shp完成水文要素可视化并通过clip图层快速限定分析范围适用于课程实验、毕业设计及区域环境分析等场景。 做洱海流域的地形图前前后后我折腾过好几版。第一版光找数据就卡了一天shp矢量边界、dem高程数据来源不一样坐标系不统一裁剪出来的图还缺了一块每步都在踩坑。后来把整套流程理顺了从数据下载、预处理、地形因子提取到制图出图每一步都可以固定下来重复使用。这篇就把完整流程和我在实操中遇到的问题一次性讲清楚。这里需要说明一下这套流程不仅适用于洱海流域。任何以区域地形图为目标的活儿——不管是做某一个县的坡度图、某条河的等高线图还是某个水库的三维地形展示——都可以直接套用同样的方法和步骤只需要替换shp边界和重新下载对应范围的dem即可。1. 项目思路这张地形图背后需要准备什么1.1 从数据到成图完整工作流拆解很多人拿到“制作云南洱海流域地形图”这个需求第一反应是打开ArcGIS把数据往里一拖就开始画。这种做法往往做到一半就卡住了。我的建议是先把整个工作流拆开你就知道每一步在干什么也方便排查问题。完整的流程大概分成五步数据准备收集洱海流域的行政边界或流域边界shp、dem高程数据、重点水系和居民点要素。数据预处理统一坐标系统、裁剪dem到指定范围、清理shp属性字段。地形因子提取生成坡度、坡向、山体阴影、等高线等基础地形图层。制图表达将dem进行高程设色叠加山体阴影、等高线、水系和注记在布局视图里完成地形图整饰。三维可视化扩展把dem和shp放入ArcScene制作三维地形场景输出可视化成果。为什么要先做流程拆解因为地形图表面上是一张图背后实际是三个独立问题的叠加数据管理问题、空间分析问题、地图表达问题。不拆开你很难定位到具体是哪一步出了问题。比如最后出图时发现等高线像毛线一样密密麻麻问题往往不在制图而在等高距选择不合理又比如坡度计算结果数值离谱问题不在工具而在坐标系投影没有做。1.2 shp矢量数据去哪下载制作洱海流域地形图需要三类矢量数据流域边界、行政边界、水系。这些数据都以shp格式为主shp是Esri公司推出的矢量数据格式也是目前行业内交换数据最通用的格式之一ArcGIS、QGIS、CAD等软件都能兼容处理。具体到下载渠道我做项目时常用以下几类全国地理信息资源目录服务系统webmap.cn提供1:25万基础地理数据包含国界、省界、县界、居民地、水系、交通等要素注册后下载就是shp格式整体质量比较可靠。资源环境科学与数据中心resdc.cn提供行政区划、流域分区等数据对于做流域尺度的项目很实用下载后需要自己筛选出洱海流域范围。国家地球系统科学数据中心geodata.cn有部分科研团队共享的流域边界和水系数据精度根据数据来源而不同但胜在种类丰富。如果只需要大致的流域范围也可以用DEM数据自己通过水文分析提取流域边界这个放到后面扩展部分再细说。在下载shp的时候注意两点。第一看数据的坐标系说明。很多数据下载下来是WGS84地理坐标系经纬度表示的这没问题后面统一转投影坐标即可。第二看属性的编码格式。国内很多数据源的属性表是GBK编码ArcGIS Pro默认按UTF-8读取打开就会乱码这个我在第2章专门讲解决办法。1.3 DEM数据源怎么选DEMDigital Elevation Model数字高程模型是地形图的核心底图数据记录的是地表每个栅格单元的高程值。制作地形图时dem的质量直接决定等高线、坡度、山体阴影这些衍生成果的准确度。目前免费可用的dem数据源有好几个我大致列一个表数据源空间分辨率覆盖范围质量特点常用下载渠道SRTM30米/90米全球老牌数据发布早平原和丘陵地区效果稳定USGS EarthExplorer、地理空间数据云ASTER GDEM V330米全球覆盖范围广但部分地区存在噪声和坑洞地理空间数据云、USGSALOS AW3D3030米全球山区细节表现比较好JAXA官网Copernicus GLO-3030米全球基于多源数据融合生成整体质量均匀我在项目中使用频率较高欧空局PANGAEA、AWS开放数据做洱海流域地形图我优先用的是Copernicus GLO-30。原因很简单洱海西侧是苍山高差从湖面约1965米到苍山顶峰超过4000米相对高差很大对DEM的垂直精度要求较高。从实操对比看GLO-30在山区地形的细节上比SRTM更干净尤其是生成等高线时不容易出现一些细碎的毛刺。当然如果你访问欧空局的速度不太理想退而求其次用地理空间数据云下载SRTM 30米或ASTER GDEM V3也完全够用。再补充一个下载细节这些dem数据通常按经纬度分幅组织你下载时不需要把整个云南省都下载下来。先看洱海流域的经纬度范围大致为东经99°50′到100°30′北纬25°25′到26°10′然后找出覆盖该范围的分幅图逐个下载相邻的几幅最后在ArcGIS里用镶嵌工具合并成一块完整的dem即可。2. 数据预处理坐标系、裁剪与乱码修复2.1 先把坐标系统一这是所有操作的基石做地形图最容易忽视但又最致命的一步就是坐标系统一。不少人和我说明明数据都加载进去了但用按掩膜提取裁剪出来的dem是全黑的或者坡度的计算结果数值大得离谱大概率都是坐标系不一致导致的。ARCGIS在加载数据时如果两个数据坐标系不一致它会临时做一个动态投影来显示看起来好像叠上了但真正执行空间分析时不会自动处理结果就是各种千奇百怪的问题。所以在动手做任何分析之前先检查每个数据源的坐标系。具体操作分两步。第一步右键图层打开属性在源选项卡中查看坐标系信息。第二步把shp和dem都统一到同一个投影坐标系。对于洱海流域我推荐使用WGS 84 / UTM zone 47N这个分带覆盖了东经99度到105度的范围洱海区域正好落在带内变形比较小。shp转投影用数据管理工具下的要素投影工具dem栅格转投影用栅格投影工具。这里有个细节要注意栅格投影时重采样方式建议选双线性插值或三次卷积不要选最近邻法。最近邻法适合土地利用分类这类离散数据用于dem这种连续表面数据会产生明显的锯齿感生成的等高线也很粗糙。如果你手里是CGCS2000坐标系的数据也可以用高斯-克吕格投影3度分带。洱海区域大约在东经100度对应3度带的34带中央经线为102度。不过考虑到数据源大多是WGS84的统一用UTM 47N最简单不容易出错。2.2 按掩膜提取让DEM只保留洱海流域拿到原始dem后覆盖范围通常远超研究区。比如你下载了覆盖整个滇西区域的dem分幅不裁剪就做分析后面生成的坡度、等高线数据量都会变得很大出图范围也不聚焦。这时就需要用流域边界shp对dem做裁剪。裁剪使用空间分析工具中的提取分析、按掩膜提取。操作步骤很直接输入栅格选dem输入掩膜数据选洱海流域边界shp输出路径指定到项目文件夹点击确定即可。我当初做这一步踩过的一个坑是直接拿整个大理州的shp做掩膜结果把洱海流域周边的其他县也裁了进来图面上出现了大量无关区域。正确的做法是先打开大理州shp的属性表按字段筛选出属于洱海流域的县域如大理市、洱源县等再导出为单独的shp文件作为掩膜。如果用的是专业的水文流域边界数据直接选对应的流域多边形即可。按掩膜提取完成后可以顺手对dem做一次统计检查。在图层属性里查看栅格的最小值、最大值和平均值如果最大值明显偏离实际地形比如洱海周边不会有超过6000米的高程说明原始dem可能存在异常值可以用栅格计算器或焦点统计修复也可以直接用原始数据重新下载对应分幅。2.3 打开shp出现乱码的处理方法国产数据用得多了shp乱码几乎是必踩的坑。shp的属性表是存储在dbf文件里的DBF文件本身有编码格式常见的有GBK和UTF-8等。如果dbf的编码是GBK而ArcGIS Pro默认按UTF-8读取字段名和属性值就会变成一串乱码。搜索引擎里“arcgis乱码最简单三个步骤”这种词一直热度很高说明遇到这个问题的远不止我一个。这里直接说处理步骤找到shp文件同目录下的.cpg文件这个文件记录的是shp的编码格式。用记事本打开如果里面内容是UTF-8但中文属性乱码就把内容改成GBK并保存反之亦然。如果这个shp没有.cpg文件你自己新建一个文本文档改名为和shp同名的.cpg文件注意扩展名要正确并把编码名称写在里面。重新在ArcGIS中刷新加载这个shp属性表就能正常显示。如果是ArcMap还可以在自定义、ArcMap选项、常规选项卡里找到字符集设置把默认编码修改为GBK或UTF-8。这个方法在读取老数据时很管用但会全局影响所有新加载的数据如果只有个别文件乱码尽量不要动全局设置用cpg文件的方式解决更干净。一个更根本的预防方案数据下载后统一用ArcGIS的属性表字段计算功能或复制要素到新要素类将编码转成UTF-8。做一次转换后面使用就再也不乱码了。3. 地形因子提取坡度、坡向、山体阴影与等高线3.1 坡度坡向提取与Z因子设置有了裁剪好的洱海流域dem接下来可以提取地形因子。坡度反映地表陡缓程度坡向反映坡面的朝向这两个因子是地形图的基本内容也是后续做地质灾害、水土流失分析的基础数据非常重要。在ArcGIS中用空间分析工具、表面分析、坡度工具即可生成坡度图。输出栅格时单位选择度。这里必须强调Z因子设置如果你的dem还处于地理坐标系经纬度下栅格单位的x、y方向是度而z方向是米单位不一致ArcGIS需要用Z因子做换算。1个纬度的距离大约为111320米所以Z因子要设置为111320左右坡度才算准确。如果你已经把dem投影到了UTM坐标系下x、y、z单位都是米Z因子保持默认的1即可。所以我的建议是在第2章就完成投影转换后面做坡度坡向就不用操心Z因子的坑了。如果你偷懒没有转投影直接在WGS84的dem上计算坡度结果往往是整个区域坡度都集中在0到2度之间看着就是一片灰完全失真。坡向工具与坡度工具在同一个菜单下操作方式基本一致。生成坡向结果后如果后续需要做分类统计可以用重分类工具把坡向分成9个类别平地、北、东北、东、东南、南、西南、西、西北方便制图或栅格统计。3.2 山体阴影的参数组合山体阴影是地形图可视化中画龙点睛的图层。它模拟太阳光照射地面产生的明暗变化叠加在高程设色图或坡度图下方能让地形的立体感立刻显现出来。使用表面分析、山体阴影工具生成山体阴影。工具里有两个关键参数太阳方位角和太阳高度角。系统默认值是方位角315度、高度角45度这个组合在大多数场景下效果都不错模拟的是西北方向来的光照山脊线和山谷线都能比较清晰地展现。如果你觉得默认效果偏平或偏暗可以试试调整参数。比如想让苍山这类南北走向的山脉有更强烈的立体感可以把方位角调整到270度到300度之间让光从西侧斜射如果想让画面更柔和一些可以适当降低高度角到30度左右阴影会长一些立体感更强。进阶玩法是生成多个方向的山体阴影然后用栅格计算器取最大值或按一定透明度叠加。这样做出来的山体阴影不会出现单方向光照造成的大面积死黑区域适合做印刷级别的地形图底图。不过这个操作会增加不少工作量如果只是做屏幕展示单方向的默认参数就足够了。3.3 等高线生成、间距选择与平滑等高线是地形图里最传统的表达要素。用ArcGIS生成等高线很简单但让等高线既准确又美观需要认真选等高距。使用空间分析工具、表面分析、等值线工具在等值线间距一栏填入间距值。洱海流域的海拔跨度很大湖面约1965米苍山主峰超过4000米高差超过2200米。如果等高距定得太小比如5米生成的等高线数量极其庞大图面全被线条覆盖根本没法看如果定得太大比如200米地形细节又丢失了等高线稀疏图面显得空。我实测下来洱海流域这个尺度等高距选50米比较合适。全流域大约能生成30到40条等高线图面既丰富又不拥挤。如果你重点展示平坝区比如大理盆地周边的农田区域可以在此基础上加密局部区域的等高线间距取20米或10米把微地形表现出来。还有一个细节直接生成的等高线会带有很多细小的折角图面不够平滑。可以在ArcToolbox里用制图综合、平滑线工具对等高线做一次平滑处理。平滑算法的容差根据等高线间距来定间距50米时容差取10到15米比较合适太大容易让等高线变形失真。平滑前建议把等高线图层导出备份一份平滑效果不满意时可以重新来。4. 专题图制作与三维地形可视化4.1 DEM设色与晕线渐变地形图的视觉表达核心在于高程设色。ArcGIS中右键dem图层进入符号系统将拉伸类型设置为最值选择一个合适的颜色带就能把dem渲染成彩色高程图。对于洱海流域我建议使用“绿-黄-棕-白”的渐变方案低海拔的湖面和平坝区用蓝色或绿色中山区域过渡到黄色和浅棕色高海拔的苍山区域用棕色山顶接近白色。这符合传统地形图的色彩习惯读者一眼就能读懂高程分布。如果你希望更好的过渡效果可以把配色方案调整得再细腻一些或者手动设置分类。比如按每200米一个间隔做分级设色对应不同颜色然后加上白色背景、黑色等高线整体出图效果会非常专业。热搜词里“arcgis晕线渐变”也是制图中常用的技巧。晕线其实就是渐变填充线制作方式是在等高线图层中用多重环缓冲或专门的制图表达工具生成层叠的渐变线条。对于初步的地形图直接用dem渐变设色叠加山体阴影效果已经比纯线条的晕线图好很多适合入门。如果你需要传统的晕线地形图可以在完成等高线后基于等高线做缓冲再对缓冲区做渐变填充。4.2 基于ArcScene的地形三维展示ArcGIS的地形图不一定非得是二维纸图在ArcScene里做三维地形展示可以让汇报和展示效果大大加分。ArcScene中加载dem之后右键图层打开图层属性在基本高度选项卡中选择从表面获取高程并使用自定义表面选择dem本身。这一步做完dem就会自动根据高程值在三维空间中拉伸起伏。接下来把shp要素叠加到三维地形上。洱海流域的行政边界、主要水系、道路等矢量数据在图层属性中同样设置基本高度为在自定义表面上浮动选择同一个dem矢量要素就会贴合到地形表面。需要注意河流、道路这类线状要素要选择在自定义表面上浮动而不是绝对高度否则会悬浮在半空或者埋到地下。调整三维显示效果时垂直夸大系数是关键。洱海流域水平范围几十公里垂直高差只有两千多米如果不做垂直夸张三维场景会显得非常平坦。一般设置2倍到3倍的夸张系数让地形起伏在视觉上更明显。具体数值根据你加载的范围动态调整看着舒服就行。用ArcScene导出的场景图可以直接用于报告或PPT展示。操作方法是在菜单栏选择视图、场景属性调整背景色和光照然后导出场景为图片。如果不想用ArcScene还可以把dem导出为TIFF格式用外部三维软件或在线平台如Cesium、MapBox加载展示做Web端的交互效果但这类扩展不在今天的范围内以后可以单独展开。4.3 出图设置与导出高清图片完成符号化后最后一步是布局整饰和导出。进入布局视图插入图例、指北针、比例尺、标题、经纬网格等地图要素。这些要素的摆放有一些实用经验。图例放在图面的右下角或左下角比较常规比例尺放在底部中央或右下角指北针放在右上角或左上角注意不要遮挡主要图斑。经纬网格可以通过格网和经纬网工具添加设置合适的间隔比如每10分一个格网线让地形图具备地理参考价值。导出图片时在文件、导出地图中设置分辨率。如果只是屏幕上看或微信传阅150dpi足够如果是打印或印刷300dpi起步。文件格式建议选PNG或TIFFJPG压缩后会有明显画质损失尤其是等高线和文字部分容易产生锯齿和色块。导出前先预览一下有时候图例和比例尺位置不对或者字体显示不全预览就能发现问题避免返工。还有一个小习惯导出之前检查图层属性里所有图层是否都显示了正确的名称。很多人做完分析后图层默认叫“坡度_洱海2”、“裁剪_裁_裁”这样一种莫名其妙的名字直接导出去会显得很不专业。双击图层名称改成“坡度图”、“洱海流域边界”、“等高线50m”这样的规范命名图例会直接引用这些名称整体效果会好很多。5. 实操中常见的坑与解决办法5.1 许可提示处理思路很多人在做地形分析时会突然弹出“You are not licensed for ArcGIS for Desktop Advanced”的提示说某个工具不可用。这个问题在热搜词里也名列前茅应该说得上是ArcGIS用户最头疼的问题之一了。出现这个提示根本原因是当前安装的ArcGIS许可等级不够。ArcGIS Desktop的许可等级分为Basic、Standard、Advanced旧称ArcView、ArcEditor、ArcInfo部分高级工具比如Topo to Raster、部分栅格分析工具、某些数据互操作功能只有Advanced许可才提供。如果你用的是Basic许可打开这些工具就会弹出该提示。解决思路是分几步走检查许可等级。打开ArcGIS Administrator或ArcGIS Pro的授权页面查看当前使用的许可等级。如果单位购买了更高级别的许可可以在授权界面重新读取许可服务切换到可用的等级。如果当前许可等级确实不够又不想花钱升级可以尝试用开源的QGIS搭配GRASS插件完成类似功能。GRASS的栅格分析能力非常强大很多ArcGIS高级工具能做的事它都能做只是界面相对没那么友好。如果是ArcGIS Pro环境单机许可Single Use和共享许可Named User的切换方式不同。单机许可需要在软件内登录ArcGIS账号重新授权共享许可则需要联系管理员确认用户名是否被分配了正确的许可类型。这里要特别注意不要从网上随便下载所谓的许可码生成器或破解补丁。除了法律风险这些工具往往捆绑恶意程序为了省一点许可费导致电脑中病毒完全得不偿失。正版许可可以通过试用版、教育版、开源替代等多种合规途径解决。5.2 两组栅格数据不吻合怎么对齐做地形图时如果你有两组栅格数据比如一个是dem另一个是土地利用分类图想叠加分析结果发现两组栅格的范围或像元大小对不上叠加后总有一块空白区或者两组栅格边缘不能重合这几乎是家常便饭。不需要写代码把三个工具过一遍就能解决范围不一致用数据管理工具下的裁剪或空间分析工具下的按掩膜提取把两组栅格都裁剪到同一个shp边界范围。像元大小不一致用数据管理工具、栅格、重采样工具把两组栅格统一成相同的像元大小。比如dem是30米分辨率土地利用是100米分辨率统一成30米或统一重采样成90米都可以根据你的分析需求来定。坐标系不一致用栅格投影工具统一投影。注意如果两组栅格的坐标系一个是WGS84度一个是UTM米必须转换后才能做后续的像元对齐。操作顺序建议是先统一坐标系再重采样统一像元大小最后裁剪统一范围。做完之后在ArcGIS中加载两组栅格检查范围框完全重合再继续做后续的栅格计算和叠加分析。另外有些栅格计算工具可以设置“捕捉栅格”Snap Raster环境参数。在工具箱下方的环境设置中找到栅格分析把捕捉栅格设为dem这样工具会自动将输出栅格的像元对齐到dem的网格可以省去手工重采样的步骤。5.3 格式转换场景扩展做地形图的过程中经常需要把shp或dem转成其他格式。热搜词里相关的有“shp转3dtiles”“shp转txt”“dxf转换shp”“批量把多个shp转为cad”这些其实都是在数据生产链路中遇到的典型格式互换需求。shp转CADArcMap或ArcGIS Pro中有转为CAD的转换工具可以将shp要素导出为dwg/dxf格式。输出时需要设置CAD的实体类型点、线、面在AutoCAD中打开后可以做进一步的制图和标注工作。批量转换时用模型构建器或脚本工具循环遍历文件夹内的shp文件即可不用一个个手动操作。dxf转换为shp用ArcToolbox中的从CAD转换工具输入dwg/dxf文件选择要导入的要素类型点、线、面、注记输出为shp要素类。需要注意CAD中的图层名会作为shp的源图层字段保留转换后可以按图层分类整理。dem转其他格式dem可以导出为TIFF、IMG、GRID等栅格格式也可以转成XYZ的文本点云格式即shp转txt类似思路。用栅格转ASCII工具输出一个包含每点坐标和高程的文本文件可以用于外部绘图或高程点批量标注。如果希望dem在Web端加载展示可以将其转换为Terrain RGB瓦片或3D Tiles这个需要借助第三方转换工具原理类似“shp转3dtiles”即在WebGIS三维场景中加载地形数据。5.4 问题速查表把制作地形图过程中最常见的几个问题汇总成一个速查表方便你遇到问题时快速定位现象可能原因解决办法shp属性表中文乱码dbf编码与ArcGIS读取编码不一致检查或新建.cpg文件指定GBK或UTF-8按掩膜提取后dem全黑掩膜与dem坐标系不匹配掩膜范围偏离dem确认坐标系转成同一投影后再裁坡度计算结果全部接近0度dem仍为地理坐标系Z因子设置错误转投影坐标系Z因子设为1等高线过于密集无法辨认等高距设置太小或dem存在大量噪声加大等高距必要时先对dem做平滑滤波两组栅格图层无法重合对齐范围、像元大小或坐标系不一致Clip、Resample、Project Raster三连操作出图时图例显示无序图例项按图层加载顺序排列且未整理在布局视图中手动调整图例项顺序高级工具提示未授权许可等级不够检查许可授权或换用QGIS/GRASS替代要素浮在dem上方或埋入地下三维视图的Z值和坐标未正确关联在属性中设置基本高度为在自定义表面上浮动这张表也是我在日常项目中排查问题的固定清单。遇到任何异常先对照这张表找到最可能的环节而不是上来就反复调整工具参数。结尾最后分享一个我做了很多次地形图后才养成的习惯每次拿到数据先不急着往ArcGIS里拖先花10分钟把文件管理器里的目录结构搭好——原始数据放一个文件夹中间处理结果放一个最终出图成果单独放一个。看似老土但当你有十几个中间图层要反复试算的时候这个习惯能帮你省掉大量找文件的时间。地形图制作这件事核心不是ArcGIS操作本身而是对数据和流程的理解。坐标系、分辨率、编码、符号化每一步背后都有明确的目的。流程理顺了换任何流域、任何区域都能顺利跑通这也是我写这篇内容的根本目的——把“为什么会这样”讲透让下一次做地形图不再从零开始踩坑。本文还有配套的精品资源点击获取