ARTICLE DETAIL

资讯详情

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

ArcGIS地形图制图:DEM等高线生成、平滑与掩膜注记全流程

ArcGIS地形图制图:DEM等高线生成、平滑与掩膜注记全流程 开头做GIS的人应该都有过这种经历拿到一份DEM数据领导说“给我出一张带等高线的地形图”你二话不说用ArcGIS里的Contour工具一跑出来的却是一堆锯齿状、密密麻麻、完全谈不上“图面美观”的线条连自己都看不下去。问题出在哪很多人把“生成等高线”等同于“跑一个工具”距离真正能上版、能打印、有传统纸质地形图那种“既视感”的成果中间还差着好几个关键步骤。这篇内容我就围绕一个完整的实操链路来写从DEM数据预处理、等高线生成、平滑细化到利用掩膜技术把等高线注记处理得清爽不压盖最后再系统梳理一下DEM可视化的几种主流表达方案。我尽量把每一步为什么要这么做、参数怎么定、踩过什么坑都讲清楚适用的读者包括需要出地形专题图、做规划底图、搞科研制图的ArcGIS用户不管你是新手还是有一定基础按这个流程走一遍应该能明显感觉到图纸质的提升。1. 内容整体设计与思路拆解1.1 核心需求解析标题里三个关键词其实是三条递进式需求第一生成等高线但要有“地形图既视感”也就是不只追求数学上的正确还讲究线条流畅、层次分明、有传统制图的印刷感和立体感第二“利用掩膜进行等高线注记”解决的是图面上文字与线条打架的问题第三“DEM的可视化表达总结”是把山体阴影、高程分层设色、等高线与立体晕渲这些手段串起来形成一个完整的制图方案。先说“地形图既视感”这个概念。它模拟的核心其实是传统印刷地形图的几个视觉特征底图有微弱的立体感、等高线分粗细首曲线细、计曲线粗、线条圆滑没有明显小棱角、注记周围白底压盖。所以在ArcGIS里要做到这一步不是简单跑完Contour工具就结束而是要把等高线生成、平滑、符号分级、叠加山体阴影、做注记掩膜串联成一条流水线。1.2 方案选型与为什么不用“一键出图”可能有人会问ArcGIS里也有很多自动化的出图工具干嘛要绕这么大一圈我的观点是自动化的出图方案适合快速查看不代表能达到出版级制图要求。网上那些宣称“一键生成复杂地形图”的工具往往是定死的固定参数一旦遇到高差悬殊的高山峡谷地区要么等高线过密糊成一团要么过分平滑丢失真实地形细节。传统制图中的等高线讲究一个原则——在真实与美观之间取得平衡。ArcGIS的Contour工具本身不提供平滑参数所以大家用完之后才会觉得线条僵硬、边角尖锐。这也是为什么需要额外的平滑处理、符号分级、注记掩膜技术来“二次加工”。我采用的方案是一套组合拳使用Spatial Analyst或3D Analyst的Contour工具生成原始等高线用Cartography工具集下Smooth Line对等高线做平滑用图层符号分级区分计曲线和首曲线用山体阴影或高程分层设色做底图用掩膜技术解决注记压盖。这样做的优势在于每一步都可以单独控制参数哪一步你觉得效果不对单独调整就行不会出现“动一个参数全局崩盘”的尴尬局面。2. 核心细节解析与实操要点2.1 DEM数据准备与坐标系检查这一步最容易被跳过但恰恰决定了后面所有操作的正确性。拿到DEM第一件事不是直接丢进Contour工具而是看它的投影坐标系。高程值本身是相对于某一高程基准面的而高程值的单位通常为米如果DEM数据是地理坐标系GCS也就是经纬度坐标那么在计算坡度、生成等高线时软件对水平距离使用度、垂直方向使用米就会产生量纲不一致的问题。这里有一个通用建议在做任何地形分析之前把DEM投影到合适的投影坐标系。投影带选择的原则是让制图区域的变形尽量小。对于国内大多数中低纬度的项目高斯-克吕格投影3度分带或者6度分带都很常见如果数据跨带比较广也可以选择Albers等积圆锥投影或Lambert等角圆锥投影。补充一点如果DEM原始数据高程单位不是米而是英尺或其他单位需要对Z因子做设置或在栅格属性里做单位换算否则生成的等高线数值会整体偏离真实高程。2.2 等高线生成工具与参数深度解读ArcGIS中生成等高线的工具叫Contour在ArcMap里位于ArcToolbox中的Spatial Analyst Tools/SurfaceArcGIS Pro里则在Spatial Analyst或3D Analyst扩展下。界面参数看起来简单只有输入栅格、输出要素、等高距、起始等高线、Z因子这几项但每个参数背后都有门道。等高距的选择是最核心的一项。等高距太大地形细节丢失等高距太小线条过密图面一团黑。经验上可以按照比例尺和DEM分辨率来定比如1:50000地形图通常用10米或20米的等高距1:10000可以用5米。如果你是做大范围区域图手里是30米分辨率的公开DEM10米等高距已经会让图面拥挤20米或50米可能是更适合的选择。判断标准很简单先按经验值跑一遍如果线条密度太大逐级放大等高距再试。起始等高线默认是0也就是从海拔0米开始计数。如果制图区域整体海拔较高起始等高线可以设置成一个能被等高距整除的数值这样图面上的计曲线位置更容易对齐后续在图例和注记上也好解释。Z因子是个容易踩坑的地方。当水平坐标与垂直坐标单位一致Z因子保持默认1即可。当水平坐标是地理坐标度高程单位是米时Z因子应设置为1113201度大约等于111320米软件才会把水平和垂直放在同一量纲下计算。2.3 平滑处理从“生硬折线”到“圆滑曲线”原始等高线生成之后外观往往像折线尤其在中低分辨率DEM上锯齿感非常明显。解决方案是使用Cartography工具集中的Smooth Line工具位于ArcToolbox Cartography Tools Generalization。Smooth Line工具有两种平滑算法PAEKPolynomial Approximation with Exponential Kernel和Bezier interpolation。PAEK算法会在原折线附近生成平滑过渡的曲线失真较小适合等高线、河流边线这类对位置精度有要求且线条自然弯曲的地理要素。Bezier插值会生成通过原始折线点的贝塞尔曲线平滑效果更强但可能出现超出原始范围的膨胀。针对等高线我更推荐PAEK。平滑容差参数一般设置为生成等高线平均间距的0.5倍左右。比如等高距是20米平滑容差设置到10米左右既能消除锯齿又不会让等高线走向出现明显偏差。需要提醒的是过度平滑会造成等高线相交一旦出现这种情况说明平滑容差偏大需要调小重试。另外Smooth Line会生成新的要素类或覆盖原要素类注意保存位置别选错我一般会另存一份以_smooth结尾的文件方便对比和回滚。平滑之后还有一个制图细节计曲线与首曲线的区分。传统地形图中每5条等高线会有一条加粗显示的计曲线用于方便判读高程。ArcGIS的符号化可以通过按属性查询来实现给等高线添加一个字段用FLOOR函数计算每条线的高程值是否属于5的倍数再用唯一值符号化区分粗细。2.4 生成“地形图既视感”的关键组合光有平滑后的等高线还不够要用等高线还原出传统印刷地形图那种感受还需要两个东西合适的底图裁体和符号细节。第一个建议把山体阴影图作为底图设置一定的透明度叠加在高程分层设色之上然后再叠等高线。山体阴影提供了三维立体的底子高程分层设色提供颜色层级等高线提供精确的高程信息三者叠加之后的成果非常接近老式地形图。透明度数值没有一个绝对标准我习惯山体阴影透明度设在30%左右既能看清地貌起伏又不会把底图颜色冲淡。第二个建议等高线的符号别用太粗的线和纯黑色。传统地图的等高线通常是棕色系如CMYK中的40%洋红80%黄色而不是纯黑。在ArcGIS符号选择器中把线颜色调整为深棕色线宽首曲线设置为0.5磅、计曲线为1磅左右图面立刻会显得“专业制图”很多。还有一个小技巧给等高线图层开启“Remove hairline artifacts”类效果也就是在线条连接处做一些羽化处理避免元素边缘出现细小白线。这在ArcGIS Pro的符号选项里对应“Halo”或“线连接”设置。虽然是小细节但打印大图时这点做得不好会很明显。3. 实操过程与核心环节实现3.1 等高线生成实操全流程下面我按ArcGIS Pro 3.x的界面演示一遍ArcMap 10.x的路径基本对应只是菜单名称略有差异。准备DEM数据以公开30米分辨率DEM为例已经投影到UTM或高斯投影单位为米软件ArcGIS Pro 2.9以上或ArcMap 10.6以上确保3D Analyst扩展模块可用。步骤一投影检查与处理。打开DEM属性查看“源”选项卡里的空间参考信息确认是投影坐标系。如果不是用“Project Raster”工具投影到指定坐标系。步骤二运行等高线工具。在“分析”选项卡下打开“工具”搜索Contour在参数面板中设置输入栅格选择DEM输出要素指定保存位置等高距设置为20起始等高线设为0Z因子保持默认1。步骤三分段验证。初次运行后先不要急着平滑打开属性表查看线条数。如果线条多达几千上万在大比例尺下图面会很拥挤我会重新调整等高距到50米再运行。如果线条偏少表达不出地形细节再缩小等高距。步骤四平滑处理。打开Smooth Line工具输入要素选择刚生成的等高线平滑算法选择PAEK平滑容差设置为等值线平均间距的一半。输出另存为ctour_20m_smooth。步骤五添加类型字段并分类。在属性表中添加短整型字段cont_type用字段计算器写cont_type IIf(Int([ELEV] / 20) Mod 5 0, 2, 1)这里的意思是如果高程值除以等高距后能被5整除标为2计曲线否则标为1首曲线。当然我这里设置的等高距是20米所以计曲线间隔是100米如果你的等高距是10米计曲线间隔就是50米。步骤六符号配置。在符号系统中选择“唯一值”字段选择cont_type。计曲线值2设置线宽1.2磅、颜色RGB(132, 63, 22)首曲线值1设置线宽0.5磅、颜色RGB(201, 125, 75)。3.2 山体阴影与分层设色叠加实操等高线画完之后底图的立体感也需要跟上。ArcGIS里山体阴影生成工具叫Hillshade在Spatial Analyst工具箱下核心参数包括方位角、太阳高度角、Z因子。方位角默认315度西北方向光源这个值适用于大多数情况模拟的是常见地图制图中的“西北光源”约定看起来比较自然。太阳高度角默认45度如果地形起伏小可以适当调低到30度~35度来增强阴影效果如果地形起伏剧烈调到50度~60度反而更平稳。Z因子根据坐标系单位设置前面已经提过。高程分层设色在符号系统中选择“渐变颜色”分类分类方法有两种比较常用等间距Equal Interval适合地形均匀变化的区域分位数Quantile适合各高程段面积不太均衡的区域。如果你想做出传统文化层设色图低海拔绿色、高海拔棕褐色、雪线以上白色可以用手动分段颜色从绿色系过渡到土黄、棕色再过渡到灰白。关键点是分段数量不要太多6到8级已经足够清晰太多会让图面色彩杂乱。完成分层设色后在内容列表中把山体阴影图层放在分层设色图层下方选中两个图层右键做“启用透明度”。我习惯山体阴影图层透明度设为30%这样底部山体阴影的纹理能透过上半部分的分层设色显示出来形成混合晕渲效果。3.3 等高线注记与掩膜详细操作等高线注记是很多人在实践中卡壳的重灾区。默认情况下注记层漂浮在等高线上文字被线条穿过图面混乱。所谓“利用掩膜进行等高线注记”核心思路就是给文字的背景做一个白色或底图色的“挖白”效果把底下的等高线挡住这样文字部分就干净清楚了。在ArcGIS里实现掩膜注记目前我常用的有三种做法。方法一地理数据库注记掩膜。这是最主流也是最可控的方式。步骤是右键等高线图层选择“将标注转换为注记”。转换时选“将注记存储在数据库中”设置好参考比例尺。转换完成后注记要素类有了自己的符号。在注记图层属性里找到“掩膜”选项卡勾选“创建掩膜”掩膜图层选择等高线图层掩膜样式设置为“周围绘制边框”边距可根据需要设置1~3磅。在生成的掩膜要素类中ArcGIS会自动为每个注记生成一个隐藏的掩膜面。右键注记图层选择“将掩膜转换为要素”这样就得到了一个掩膜多边形图层。把这个掩膜多边形放在等高线图层之上、注记图层之下并填充为白色或底图的颜色。因为掩膜多边形恰好覆盖住文字周围区域等高线穿过文字的部分就被白色多边形遮挡了。方法二制图表达的自动掩膜。如果你使用ArcGIS Pro或ArcMap的高级制图表达Representation设置起来更快右键等高线图层选择“将符号系统转换为制图表达”。在制图表达的符号属性里找到“掩膜”选项勾选“掩膜邻近要素”在掩膜设置中选“使用掩膜图层”并选择注记图层。确认无误后生成软件会自动在所有文字周围创建白色掩膜矩形。方法三手动缓冲区掩膜。这个方法适合不想使用注记数据库或制图表达的场景。做法是给注记点创建缓冲区缓冲半径略大于文字宽高的一半把缓冲区多边形叠加到等高线上方并填充白色。这个办法简单但不太精准因为注记文字的长度差异很大统一缓冲半径会导致短文字掩膜偏大、长文字掩膜不足。我一般只把它当作临时方案。实操中我推荐优先使用第一种数据库注记掩膜因为它的掩膜形状与文字轮廓贴合度最高且支持打印前微调各个掩膜的大小和位置不会出现制图表达里偶尔出现的“掩膜丢失”的怪问题。3.4 注记放置的进阶技巧注记本身的高程值应该写哪一侧也是有讲究的。传统地形图中的等高线注记一般放在计曲线上让数字的底部朝向坡下方向这样读图者能直观读出坡向。在ArcGIS的标注引擎中等高线标注有几个参数值得细调“放置属性”中等高线标注应设置为“水平”或“沿要素方向弯曲”。我一般选择“水平”因为数字在任何弯曲状态下的可读性都最好也更贴近老式地形图的做法。“与要素的冲突检测”中设置等高线注记不与自身重复。默认情况下ArcGIS会在每条线上重复标注打开“重复标注距离”设置让同一数字仅在图上出现一到两次即可。标注时勾选“仅放置在地图的一侧”可以避免注记随机分布在线的两侧影响图面规矩感。4. 常见问题与排查技巧实录4.1 等高线锯齿明显平滑后出现扭曲锯齿问题大多是因为DEM分辨率偏低或Contour工具的输出要素没有做后续平滑。按照前文说的Smooth Line PAEK法一般能解决但如果平滑后等高线出现明显的“鼓包”甚至相交情况说明平滑容差太大。遇到这种问题可以按比例逐步下调容差测试找到既能消除锯齿又不至于明显改变走向的临界值。我遇到过最麻烦的情况是部分区域坡度突变等高线密集平滑后局部相交。这时候不要全局改小容差因为平坦区域的锯齿还没消干净。更精细的办法是把等高线按照坡度分区提取坡度大于XX度的区域只对陡坡区域的等高线用更小的平滑容差重新处理然后再与其他部分合并。4.2 掩膜不生效或掩膜遮挡范围异常掩膜不生效的常见原因有两个一是掩膜图层没有放到正确的位置也就是没有位于等高线图层之上、注记图层之下二是掩膜面的填充颜色和底图不同比如底图是分层设色而掩膜用了纯白色掩膜区域会明显区别于周边看起来像一块块白补丁。第二个问题其实要特别注意。如果底图是分层设色我的经验是掩膜的填充色不能是纯白而应该模拟“挖白”后透出底纸的效果也就是用地图背景色。在制图输出中通常会用打印纸张颜色纯白作为背景所以纯白是合理的。但如果最终成果是导出到网上浏览背景色可能是浅灰色的网页底色这时候纯白掩膜没毛病可如果底图是有颜色的就要把掩膜填充色改为“无填充”仅保留下方底图透过——不对这样会露出等高线。严谨的做法是给掩膜多边形填充一个与底图接近的“平均色”或者用白色但把透明度降低到与底图融合不过这个调整过程比较繁琐。我的实际建议是如果掩膜区域明显说明掩膜半径过大把它调小一点如果仍然不协调就考虑把等高线注记直接放在图例或者色带外的空白区域不放在等高线上。4.3 生成等高线后属性表里的高程值是浮点取整麻烦ArcGIS生成的等高线高程字段默认是浮点型显示出来可能是120.000001这种值。这其实不影响制图但在注记和符号化时会出现怪异的数字。解决方法是添加一个长整型字段用Round函数取整然后再用这个整数字段做注记和分类。ArcGIS Pro里可以在字段计算器写Round(!Contour!, 0)字段计算之后后续的计曲线判断、注记转换都用这个整数字段整个流程会顺畅很多。4.4 大范围DEM计算时软件卡顿大范围、高分辨率的DEM跑等高线非常吃内存经常遇到跑到一半卡死或提示虚拟内存不足。我的经验是提前把研究区范围用掩膜提取出来再跑别直接全图计算。另外可以把大的DEM切片分块处理生成等高线后再用Merge工具合并注意合并时对相邻散块的接边处做一下拓扑检查和消除避免出现重叠线或断线。如果最终目的是打印较大比例尺的地形图也可以适当对DEM做聚合Resample到较低分辨率因为分辨率过高在同等比例尺下对等高线的细节贡献有限计算量却成倍增加。我在实际项目中30米分辨率的DEM出1:50000地形图已经很彻底了完全没必要跑到原始5米或10米分辨率的计算量。5. DEM可视化表达方案总结5.1 灰度地貌晕渲最经典的表现手段DEM可视化最基础、也最持久耐看的表达方式是山体阴影Hillshade也就是通过模拟光照生成灰度晕渲图。很多外行人一眼看到灰度晕渲图第一反应是“这张地图有一种立体浮雕的感觉”这就是它的价值。制作时需要注意ArcGIS默认的Hillshade有一些固有不足单一方向光源会在某些坡向形成全黑区域导致阴影部分细节完全丢失。遇到这个问题可以生成多个方向的光照山体阴影如315、0、45度然后对多幅山体阴影做加权叠加用栅格计算器的加权和运算能显著减少纯阴影带。我个人实践中多方向叠加后的晕渲底图比默认单方向光源平顺得多适合做背景衬底。5.2 分层设色与山体阴影叠加地貌的彩色表达高程分层设色是另一种经典表达。它的本质是把高程值按照一定间隔映射成渐变色带给人一目了然的高低分布感知。缺点是单靠颜色无法表现地形的微起伏所以最合理的方式是“分层设色山体阴影”叠加这也是目前主流GIS软件中生成地形图的默认组合。叠加时透明度参数很关键。我给出的建议是一个起始参考山体阴影透明度设置在30%~40%如果底图分层设色颜色比较浓透明度还得再调低。一般来说制作打印地图时透明度高一点让山体阴影更明显制作屏幕浏览的地图时透明度低一点让色彩更鲜艳。还有一个容易被忽视的点分层设色的分类边界要尽量与等高线计曲线的高程值对齐。比如等高线计曲线是每隔100米一条那么分层设色的分段边界也设为100米的整数倍这样视觉上分类断层正好被计曲线覆盖图面干净且符合认知。5.3 综合制图一个推荐的图层组织方式把上面这些串起来我推荐的标准出图图层面板如下从底部到顶部底图影像或空白背景灰度山体阴影透明度约30%~40%高程分层设色透明度0%平滑后的首曲线细棕色线平滑后的计曲线粗棕色线等高线注记掩膜白色多边形等高线注记层。这个组织方式经过多次项目验证底子立体、色彩清晰、线条精确、注记干净整体上就是“地形图既视感”的完整来源。当然制图风格上没有绝对的最优解。我见过做地质地貌图的人喜欢去掉等高线只用分层设色地形阴影也见过做户外运动地图的人反过来把等高线加粗提亮完全淡化底图颜色。关键是掌握每个工具能做什么、怎样叠加能出什么效果之后再根据应用场景自由取舍。我个人刚接触这一套时最喜欢的效果是“山体阴影给地形以体重感、等高线给地形以精确感、注记给地形以可读性”三样综合到一起数据本身的美感就出来了。希望这篇总结能帮你少走一些弯路把手里的DEM用得更像一个真正的制图师。
返回列表