ARTICLE DETAIL

资讯详情

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

ArcMap地图数字化全流程:从栅格到矢量的实操指南

ArcMap地图数字化全流程:从栅格到矢量的实操指南 ArcMap学习笔记做到第三篇我打算把“地图数字化”这部分单独拿出来好好聊一聊。之所以单独成篇是因为很多GIS初学者在装好软件、认识了几个常用工具之后会突然卡在一个非常具体的环节手里有一张影像底图或者一沓纸质地形图但不知道该如何把它们变成能编辑、能分析、能出图的矢量数据。这个从“看图”到“建库”的过程就是地图数字化。这篇文章会围绕ArcMap环境下的数字化工流程展开从原理到实操、从思路到细节把完整的工作流拆开来讲。主要内容包括数字化的核心思路、前期数据准备与坐标系问题、图层规划规范、ArcMap中具体操作步骤以及我这些年踩过的坑和对应的排查方法。无论你是刚开始学GIS的学生还是工作中需要手工处理图斑、矢量化地物的从业者这篇笔记应该都能帮上忙。1. 地图数字化的核心思路拆解1.1 数字化到底在干什么很多人第一次接触“数字化”这个概念觉得很高深其实说穿了就是把栅格数据变成矢量数据。栅格数据是什么影像图、扫描出来的纸质图本质上都是一格一格的像素。人眼很厉害能从高分辨率遥感影像上看出哪块是农田、哪块是房屋、哪条是道路但计算机不行计算机只看到一堆灰度值或RGB值。如果你问它“这块农田面积多大”它没法直接回答因为没有边界、没有属性。矢量数据就不一样了。点有坐标线有节点和长度面有闭合边界和面积。道路中心线、行政边界、宗地范围、地类图斑这些在GIS里都是以点线面形式存储的。矢量数据可以查询、可以计算、可以叠加分析比如“这条路的长度是多少”“这个地块的面积多大”“哪些房屋在洪水淹没范围内”。但矢量数据不会凭空出现它最初的一笔一画通常就是靠人来勾的这个过程就是数字化。所以从本质上看地图数字化干的是“翻译”的活把影像上肉眼可见的、人对地物的判读结果翻译成计算机能算的坐标点串再配上相应的属性编码。理解了这一点你就能明白为什么数字化不能闭着眼睛瞎画——你画出来的每一个字节点、每一条边界后面都会直接影响面积统计、空间分析甚至决策。1.2 两条主流数字化路线根据原始数据的不同数字化通常分两条路线。第一种是屏幕数字化底图是带地理坐标的影像比如卫星遥感影像、航拍正射影像。工作方式是直接在ArcMap里加载影像然后用编辑器工具在影像上“描”出地物轮廓。这是目前最主流的方式因为影像定位准确、操作直观第三次全国国土调查以及很多自然资源管理工作里基于影像的图斑勾绘底层逻辑就是屏幕数字化。第二种是扫描矢量化底图是没有地理坐标的纸质图扫描件比如老的地形图、地籍图、规划图扫描成图片。工作时要先用地理配准工具给图片赋予正确的坐标位置再在上面勾画。这种场景在历史图件整理、老数据抢救等工作中仍然很常见。这两条路线的核心思路是一致的区别只在于第一步屏幕数字化省去了配准环节扫描矢量化必须先解决“图上每个像素对应什么地理坐标”的问题。我最早做数字化的时候拿到的是上世纪的地形图扫描件不懂配准直接就把图拽进软件里画结果画的线和真实位置偏了十万八千里。后来才明白对于无坐标的扫描图配准是数字化之前绕不开的前置步骤。1.3 数字化方式的选型手工优于偷懒如果你去搜索“自动矢量化”会发现有很多工具声称能一键把栅格图转成矢量。早期ArcScan模块就有基于二值影像的半自动矢量化功能现在还有基于深度学习的遥感解译方法。那还有必要手工数字化吗我的经验是分场景。如果底图干净、地物单一、对比度很高比如一张黑白二值化的等高线图用ArcScan半自动追踪确实能省不少劲如果底图是复杂的遥感影像里面有阴影、有遮挡、有混合像元自动提取出来的结果通常支离破碎边界都带着锯齿人工整理的时间可能比重画一遍还多。所以在大多数实战场景里屏幕上手工描边依然是效率最高、质量最可控的方案。这里说的“手工”不是指拿鼠标僵硬地一个点一个点戳而是结合捕捉、追踪、自动完成面这些工具来画。ArcMap的编辑器里其实藏了不少提效功能很多人只是没摸清楚后面我会专门讲。一句话总结选型逻辑能用矢量的地方不做栅格能用半自动的地方不全手工但最终的质检和修编一定得人来把控。2. 实操前的准备数据、坐标与图层规范2.1 原始数据的质量与坐标确认数字化之前我通常先花五分钟检查两件事一个是底图像素够不够清晰另一个是坐标系统是否明确。底图清晰度直接决定描边的精度。影像分辨率太低地物边界肉眼看都模糊画出来的图斑边界自然也就是“大概齐”。这种情况不是靠操作技巧能解决的要么换更高分辨率影像要么调整数字化的最小上图标准——也就是说只画够规模的图斑细碎的东西干脆放弃保证成果的合理性和一致性。坐标系统是更隐蔽的问题。ArcMap加载数据时如果图层的坐标系一致数据会自动套合如果坐标系不一致甚至缺失数据可能跑到莫名其妙的位置。比如影像用的是CGCS2000平面坐标你的shp却忘了选坐标系ArcMap会弹出“未知坐标系”的警告。这时候哪怕你画得再认真导出的数据在别人那里打开也可能错位到海里。建议的做法是整理数据前先右键图层属性在“源”选项卡里确认坐标系信息拿不准的时候用已知坐标的参考点做一次叠对比对。坐标系统里常见的几类WGS84GPS原始坐标常用、CGCS2000我国现行大地基准、西安80、北京54以及各地的地方独立坐标系。数字化的成果坐标系最好和底图保持一致后面再做投影转换也来得及。2.2 图层规划宁分勿合这个理念是我在实际工作中吃了亏才总结出来的。一开始做数字化觉得省事把所有地物都画进一个图层点线面混杂、房屋和道路搅在一起。结果后面要做一张专题图想单独显示房屋边界发现根本没有单独的房屋图层只能重新筛选、导出折腾了大半天。图层规划一定要在动手之前想清楚。最基本的原则是“要素类型分离”点、线、面分别存放不要混在一个图层里。同一个要素类型但语义不同也尽量分开。比如地类图斑和房屋边界都是面但一个用于土地分类统计、一个用于建筑登记混在一起会非常混乱。实际操作中我会在开始数字化之前先建好整个工作空间的图层骨架。比如做某县域的地类图斑数字化我至少会先建如下几个要素类图层名要素类型用途地类图斑面存储地块分类边界道路中心线线存储道路骨架线河流水系线/面存储河流、沟渠零星地物点点存储零星地类、标志物图层命名建议用英文或拼音避免中文。这不是歧视中文而是很多GIS工具链对中文路径和字段名支持不好发布服务、跨软件交换数据时容易出问题。2.3 创建Shapefile的标准流程在ArcMap中创建工作空间常用两个入口一个是在ArcCatalog里右键新建一个是在ArcMap的Catalog窗口里直接新建。标准流程如下在磁盘上建一个专门的文件夹命名用英文不要用中文和特殊符号。打开ArcCatalog导航到该文件夹右键选择New再选Shapefile。设置要素类型Point点、Polyline线、Polygon面按规划选择。点击“Edit”按钮设置坐标系尽量与底图坐标系保持一致。确定后再右键该shp选择Properties在Fields选项卡里添加需要的属性字段。这里有几个坑要提醒Shapefile的字段名有长度限制。DBF格式只支持10个字符超过会被截断比如“LandUseType”会被截成“LandUseTyp”容易造成后续脚本引用出错。字段类型要提前想清楚。地类编码用Text面积、长度这类数值用Double面积不建议用Integer不然小数全没了。给字段加“别名”是可以的但底层字段名不变写脚本时还是用底层字段名。如果你后续数据量大、拓扑要求高我更推荐用Geodatabase文件地理数据库而不是Shapefile。文件地理数据库的要素类没有10字符字段名限制支持拓扑规则、子类型、属性域性能也更好。工作流程类似在文件夹上新建File Geodatabase然后在库内新建Feature Class。3. ArcMap实操从开启编辑到完成图斑的完整流程3.1 编辑前的三个关键设置数字化最核心的那条工具条在ArcMap里叫“Editor”中文版叫“编辑器”。很多人一上来就找“画图工具”结果发现工具栏里根本没有因为没有启动编辑会话或者没有显示编辑器工具条。正确的步骤是在菜单栏空白处右键勾选“Editor”工具条让它显示出来。加载底图后在Editor工具条上点击“Editor”下拉菜单选择“开始编辑”。在“创建要素”窗口里选择目标图层注意选择是Polygon类型还是其他确保工具匹配。编辑会话启动后再做三个关键设置能直接影响后续效率和图纸质量。第一个是捕捉设置。点击Editor工具栏上的“Snapping”下拉菜单打开“Snapping工具条”。建议打开端点、顶点、边这三种捕捉尤其是边捕捉——后面画相邻面时没有边捕捉两个面的公共边必然对不齐。捕捉容差一般保持默认即可但如果在密集区画图可以适当调小避免捕捉到错误的点。第二个是属性窗口。在Editor工具条上点击“属性”按钮打开要素属性面板。画完一个要素后属性面板会让你直接录入属性这样就不用每次画完再去开属性表找记录效率会高很多。第三个是“选项”中的“编辑”设置。在Editor下拉菜单里选“选项”可以把绘制完成后“保存修改”的提示策略改成手动保存防止画的过程中频繁弹出保存对话框打断思路。我一般画完一小片区域后手动保存一次养成好习惯。3.2 点、线、面三类要素的基础操作数字化的时候点线面的画法各有讲究。画点最简单但要注意点位判读的规范性。比如画一棵零星树木的点到底点是落在树冠中心还是树干根部要统一标准。我见过同一批数据里有人落在树干、有人落在树冠边缘最后分析时点位漂移误差很大。规范的做法是在作业说明里写明点位定义。画线时节点密度要适中。有人怕线画得不准一个转弯处加上七八个节点结果线型带着毛刺既不美观也影响长度量算。还有个常见问题是“多画玄线”——线明明该在中心线结果画到路边去了。在ArcMap里画线一般沿着地物中线布点转弯处加点直线段尽量少加点。双击鼠标或按F2键结束草图。画面比画线多一步闭合。画完边界后双击或按F2自动闭合。这里有个非常实用的技巧如果面边界恰好贴着一道路而道路中心线已经画好了可以用“追踪”工具沿线画边界不必再重新描一遍边。操作方法是在构造工具里选择“追踪”沿着已有线要素滑动鼠标系统会自动沿线生成节点省时又精准。3.3 面状地物批量数字化自动完成面如果数字化的对象是地类图斑、宗地、房屋这类彼此相邻、边界共享的面状地物那一定要学会用“自动完成面”工具。这个工具是我认为ArcMap编辑器中最能提升效率的一个没有之一。它的逻辑是这样的你画新面时只要沿着已有面的公共边描一段系统会自动把公共边作为新面的边界并保证新旧面之间不重叠、不留缝。比如有一片农田要分成三块画完第一块后画第二块时只需描摹第一块的部分边界再加一块新扩边界第三块则自动继承前两块围出的区域几下就能完成。在“创建要素”窗口选择面图层然后在构造工具里选择“自动完成面”单击画线双击结束。这个工具还支持沿已有边追踪结合边捕捉画出来的公共边严丝合缝。刚开始用不熟练的人一画就出问题常见原因是捕捉没开或者目标图层选错。记住自动完成面只适用于面要素而且画的时候ArcMap会自动判断“哪个区域是新增的”如果你的线没有围成封闭区域工具会不响应。这时候退回去继续补全边界就行。3.4 属性录入与编码规范几何画完之后属性录入就成了大头。如果要素数量多一个一个在属性表里手敲既慢又容易出错。我的经验是三步走第一步画要素时顺手在属性面板里录入关键字段。比如地类编码这种核心字段画完一个就在属性面板填掉避免后面还要根据位置回忆。第二步批量赋值。有些字段的值是全区统一的比如“调查年份”“数据来源”可以在属性表里选中所有要素右键字段名选择“字段计算器”输入统一值一键搞定。第三步用代码批量修正。如果属性有明显规律比如根据面积范围分类可以写个简单的Python脚本在字段计算器里跑。举个简单的例子假设要根据面积字段给图斑分大中小三类可以这样写def size_class(area): if area 1000: return 小 elif area 10000: return 中 else: return 大然后在字段计算器里调用size_class(!Shape_Area!)就能给整表要素批量赋值。这个思路可以套用到很多场景比如按距离分级、按坐标批量计算到某个点的距离等。编码规范这块尽量使用行业通用的编码体系。比如地类编码就按《土地利用现状分类》标准执行不要自己想一套编码。一个图斑的属性里编码正确比几何画得漂亮更重要——因为后续的面积统计、分类汇总都依赖编码。4. 数字化高频翻车现场问题与排查技巧4.1 面重叠与缝隙问题数字化最常见的质量问题是相邻面之间的重叠和缝隙。重叠会导致面积重复计算缝隙会导致面积遗漏在做地类图斑汇总时都可能造成数据结果对不上。出现这个问题的根源基本都是因为画相邻面时没有使用边捕捉也没用自动完成面全靠肉眼对齐结果边界或交叉或分离。排查方法很直接在ArcMap中加载拓扑检查或者用一个简单的小技巧——把面图层设置成半透明填充把浅色的晕线打开再叠加回去看。一旦有重叠半透明的地方颜色会明显加深一眼就能看出来。缝隙的排查相对麻烦可以通过“要素折叠”转一线检查有没有自相交、悬挂边等逻辑错误。最彻底的方案是给数字化成果建拓扑规则。虽然Shapefile本身不支持复杂的拓扑但如果你用File Geodatabase建要素类就可以在要素数据集下新建拓扑添加“不能重叠”和“不能有缝隙”两条规则把错误直接标注出来再逐个修改。4.2 手抖与折点过多电脑前坐久了手一抖线就歪了。歪了的线自然要加点修正点加多了图就变得毛毛糙糙。这个问题有两个解法。第一个解法是预防。画线的时候尽量把视图缩放到合适比例再开始画。如果视图拉到很大画面里只有指甲盖大小的范围画长线时很容易偏离方向如果视图太广10米宽的线看着像1毫米定位精度也差。我画图斑边界习惯把视图比例尺固定在1:1000到1:2000之间根据影像清晰度微调。第二个解法是事后清理。ArcMap的“概化”工具Generalize可以按容差减少折点数量把节点过于密集的线变平滑。使用时要小心容差设置太大容易把地物的棱角也抹平了。我一般从0.5米开始试看效果再微调尽量不要一上来就设5米。还有一个更细节的坑画线过程中按了Esc键草图被撤销很多人不知道。某次我帮学生改作业发现一个图层里有两百多条空要素全是画到一半被误按Esc、画了个“幽灵线”属性表里看得见、地图上找不着。清理起来倒也不难按属性筛选Shape_Length等于0的记录删除即可。4.3 图层无法编辑或坐标系不一致数字化正画得起劲突然发现某个图层无法开始编辑这个问题的常见原因是该图层的坐标系和数据框坐标系不一致或者该图层是只读状态。排查思路是先确认该图层是否在数据框的“按属性选择要素”等工具中被锁定再检查图层的访问权限最后查看坐标系情况。ArcMap中只要坐标系不完全匹配编辑器会拒绝启动编辑会话提示“没有可编辑的图层”。解决办法把数据框坐标系设置成和图层一致或者在图层属性里给图层设置一个明确的坐标系然后重启编辑。注意如果你用的是wgs84经纬度数据画局部范围务必投影到平面坐标系再操作因为经纬度的长度单位是度在画面积、算长度时会出现严重错误。4.4 Excel表格中的经纬度点怎么转成Shp除了在底图上描边地图数字化还经常涉及一批“数据录入”任务——比如手头有一张Excel表格里面有几十个点位的经纬度需要转成shp文件。这个操作不复杂但有不少细节打开Excel确保有“经度X”和“纬度Y”两列并且是十进制度格式比如116.40339.915而不是“116度24分10秒”那种度分秒格式。如果是度分秒先转换。在ArcMap中直接点击ArcToolbox里的“XY表转点”工具或者菜单栏“文件-添加数据-添加XY数据”。选择Excel工作表、X字段、Y字段设置好坐标系注意经纬度数据通常对应GCS_WGS_1984点击确定。生成的临时事件图层右键导出为shp完成。这里的坑在于Excel文件的路径不能有中文表头字段名不能含特殊字符如果Excel里不只有坐标还有其他属性在转点之前最好先把属性列处理好。我印象很深的一次同事导出来的点全部在非洲就是因为坐标系没选默认值不是我们项目的坐标系。导出之前一定要在图层属性里确认坐标数据是不是落在目标区域。5. 数字化完成后的收尾与质量检查5.1 拓扑检查不能跳过数字化成果交付之前我一般会留出专门的时间做质量检查。不是说画完了就是结束更不是看着差不多就算完成。对于需要入库、需要参与空间分析的矢量数据最好做一次拓扑规则检查。在File Geodatabase里新建拓扑的步骤大致如下先把面图层导入一个要素数据集。右键要素数据集选择“新建-拓扑”。添加需要检查的要素类选择规则比如面之间“不能重叠”“不能有缝隙”。在ArcMap中加载拓扑图层系统会把错误用红色符号标出来。打开错误检查器逐个审查并修改。拓扑检查真正麻烦的不是操作而是如何判断一个“错误”是不是真实错误。比如两个图斑共享同一条边边界本身就应一致这类就是硬错误但两个图斑之间隔着一条道路它们之间“有缝隙”是正常的这类就不是错误。所以拓扑检查不能迷信工具最终还是需要人来做判读。5.2 成果整理与导出检查通过之后成果整理也有一套标准动作。第一件事是把属性表里多余的临时字段删掉只保留交付需要的核心字段。文件瘦身后传输和处理速度都会更快。第二件事是建立一个完整的数据说明文档写明坐标系、字段含义、生产日期、作业人员。这份说明文档在数据交换、入库时经常需要别省。导出成果时尽量统一格式。如果要交给使用ArcGIS平台的人File Geodatabase是最佳选择如果对方可能用其他GIS软件导出一份Shapefile作为通用交换格式更稳妥。另外一个容易被忽略的点不要直接把编辑状态下的数据拿去拷贝、压缩、发邮件。编辑会话里的数据可能有未提交的事务别人打开时可能弹出“需要修复”的提示。正确做法是先停止编辑、保存所有修改再执行一次“压缩文件地理数据库”操作如果数据在GDB里最后再导出或复制。6. 一点个人经验关于个性化的建议我觉得最具价值的可能就是养成“分层存储 检查先行”的习惯。很多刚开始做数字化的朋友恨不得一个图层画到底画完就交差。这样做不是不行只是当数据量变大、精度要求变高时返工成本会非常惊人。我自己做数字化的体会是真正拉开效率差距的往往不是手速而是动手前的规划。图层分得好后面的制图、分析、入库都顺捕捉和自动完成面用得好图斑质量一下就上来了属性编码规范统一统计结果才经得起推敲。数字化这件事确实有点枯燥但它是GIS数据生产中最基础也最关键的一环。你在屏幕上落下的每一个点后面都可能成为某张决策图的依据。希望这篇笔记能帮你少走一些弯路把时间花在真正需要思考的地方。
返回列表