ARTICLE DETAIL

资讯详情

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

ArcMap地图数字化全流程:从影像配准到图斑编辑与入库

ArcMap地图数字化全流程:从影像配准到图斑编辑与入库 先聊个实在话。很多人把ArcMap拿上手第一件事是加数据、配符号、出图觉得这才是GIS的正事。可真到了实际项目里最先卡住你的往往是地图数字化——就是把影像上那些房子、道路、地块边界一笔一笔描成矢量数据。这活看起来笨却是所有空间分析的起点数据画不准后面用什么高级工具都是白搭。这篇是ArcMap学习笔记系列的第三篇专门把地图数字化这件事从头到尾捋一遍加载遥感影像做底图、创建地类图斑矢量图层、用编辑器工具逐点勾绘再到把Excel里的经纬度坐标转成点图层最后聊聊数字化成果怎么自查、怎么入库、怎么出图。无论你是GIS专业的学生还是刚转行进自然资源、测绘、规划、林业、农业做数据处理的同行这篇都适合当一份拿来就用的操作手册。1. 数字化在忙什么一座把现实世界搬进电脑的手工桥1.1 栅格与矢量两种截然不同的地图语言先说清楚数字化的本质。遥感影像、航拍片、扫描的纸质地形图本质是栅格数据也就是一张由无数像素组成的照片。每个像素只有颜色和灰度计算机并不知道这一团深色是一栋房子那一条线是一条路。而ArcMap里真正能用来做分析、查询面积、叠加统计的是矢量数据——由点、线、面构成每个要素都带着属性。比如一块地类图斑它不仅有个多边形形状还带着地类编码耕地权属某某村这类属性。地图数字化就是充当这两者之间的翻译官和搬运工。你做的是人肉识别眼睛看影像上的纹理、颜色、阴影判断哪里是地物边界然后手动用鼠标/数位板把边界描出来。机器不能自动干吗能但自动矢量化出来的结果通常碎得像摔碎的盘子对地类边界、房屋轮廓这类需要语义理解的活儿误差大到没法验收。所以到今天人工数字化依然是生产单位最常见的作业方式。1.2 为什么说数字化是第一道坎很多人觉得勾两笔谁不会但实际动起来就发现完全不是那么回事边界到底画在哪块砖上两栋挨着的房子是合并一个面还是拆成两个农田和田埂以哪儿为界这些判断直接影响面积统计和后续管理决策。一张图几千个图斑前面手一抖后面全歪可以说是整个ArcMap学习曲线里最吃耐心、最考眼力的环节。而且数字化的质量问题往往不会当场暴露等做到拓扑检查、面积汇总、叠加分析的时候才集中爆发返工成本高到让人想摔鼠标。所以我的建议是别急着动手先把底层工作做扎实——底图清不清晰、坐标系对不对、图层结构合不合理这三件事没弄好后面所有功夫都白费。这也是本篇文章把准备工作放在最前面讲的原因。1.3 动手之前要备齐的三样东西做一次正规的数字化需要先确认三样东西一份清晰的底图。高分影像、航拍片或扫描地形图都行原则上分辨率越高、时相越新越好最好是你实际项目期内拍摄的影像。一套清晰的图层结构。先想清楚要画哪些内容是只画地类图斑还是连同道路、水系、居民地一起分层建库。图层分得越清楚后面管理和出图越省事。一个明确的坐标系方案。是统一到国家2000坐标系CGCS2000还是西安80、WGS84原始数据是什么坐标成图要求是什么坐标必须一开始就搞清楚。这个问题不解决后面叠任何数据都是错位的。2. 底图准备加载遥感影像之前坐标系这关必须过2.1 在ArcMap里加影像其实不只有拖进去这一种方式很多人加载遥感影像的习惯就是打开ArcMap直接把tif文件拖进图层框简单粗暴。这在多数情况下没问题但如果影像没有内置坐标系信息不带tfw等坐标文件ArcMap会顺手把它当成未知坐标系放进去。图层本身能显示影像也不至于错位到哪儿去因为整张图是以图像的左上角为原点摆放的。麻烦的是后面一旦你往图上叠有真实坐标的矢量数据两者就对不上了。正确的打开方式是点击标准工具栏上的添加数据按钮那个黄色小方块。在弹出窗口里找到影像文件选中后直接添加。添加完成后右键图层打开属性切到源选项卡看一眼范围和空间参考信息。如果显示未定义坐标系或者范围不是经纬度/投影数值而是一串像素行号列号说明这张影像缺坐标。可以用ArcToolbox里的定义投影工具给它指定坐标系。这里的要点是定义投影只是告诉软件这张图该用什么坐标系并不会真正把像素校正到正确位置。真正让影像落到正确地理位置上的是地理配准也就是通过控制点把影像拉伸匹配到已知坐标上。两者千万别混淆。2.2 坐标系不统一会是什么下场我见过最典型的翻车现场有人拿一张未做配准的影像做底图辛辛苦苦描了整整两天的图斑第三天导入其他部门的边界数据做叠加发现所有图斑整体平移了一公里多全在河里漂着。原因就是底图坐标系和矢量数据坐标系不一致数字化全程在错误的底图上进行等于白干。所以每次拿到新数据养成一个习惯先看右下角状态栏的坐标显示。鼠标在图上移动时状态栏如果显示的是经纬度单位是度这张图挂在某个地理坐标系下如果显示的是七八位的大数字单位是米则是投影坐标系。后续所有叠加数据最好统一到同一个坐标系。我一般喜欢在数字化项目里把数据框坐标系先设成目标投影再往里加数据ArcMap会自动做实时投影省去很多麻烦。2.3 选地理坐标系还是投影坐标系这个选择题很多人问。我的判断标准很简单-如果项目要算面积、量距离比如统计地块面积、计算线状地物长度必须用投影坐标系。因为地理坐标系是球面坐标单位是度直接算出来的是球面距离不是现实中的米。如果只是做全球尺度的数据展示、发布在线地图或者数据来自WGS84/GPS采集保留地理坐标系也行。国内项目基本绕不开CGCS2000和它对应的投影分带高斯-克吕格投影坐标值看起来是非常大的平面米制数。ArcMap的数据框坐标系设在哪个投影下不影响底层数据本身的坐标系只影响显示和分析时的坐标参考。底图数据的坐标系可以在属性里查也可以用ArcToolbox里的投影工具把数据转换到目标坐标系。2.4 影像加载后的显示优化高分影像动辄几个GB加载后拖一下就卡成PPT。这里有个特别容易被忽略的功能金字塔。ArcMap在第一次加载大幅栅格时会弹窗问是否构建金字塔很多人嫌慢直接选了否后面就一路卡到底。金字塔的原理类似于给书提前编好目录软件显示缩小时直接调用低分辨率的概览图不需要把原始全体像素全搬出来。建议无论如何都选是构建一次花几分钟后面每次都受益。影像显示灰蒙蒙看不清时可以在图层属性的符号系统里把拉伸类型从标准偏差改成最值或者手动调整亮度和对比度。更懒但好用的办法右键图层用增强工具条上的亮度/对比度滑块缓慢微调。对需要长时间盯着屏幕描图的人来说把底图调成看得舒适的状态能明显降低眼睛疲劳也能减少判断误差。3. 创建地类图斑图层新图层到底应该建在哪、建成什么样3.1 Shapefile、文件地理数据库要素类该怎么选数字化之前要先建一个能装数据的容器。ArcMap里有几种常见选择很多人第一次会懵Shapefile最经典的老格式一个图层对应一组文件shp、shx、dbf等。优点是通用性强几乎所有GIS软件都认缺点也明显字段名限制10个字符、不支持拓扑规则、一个属性表结构稳定后很难改字段类型。文件地理数据库要素类File Geodatabase Feature Class推荐。数据全部装在一个.gdb文件夹结构里字段名可以用中文虽然我不推荐、支持拓扑、子类型、属性域性能也比shp好。企业级地理数据库要素类数据存在PostgreSQL、SQL Server等数据库里适合多人协同和大量数据管理后文单独说。对个人学习或单机小项目直接建一个文件地理数据库就够了。步骤是在目录窗口中展开你要存放数据的文件夹右键新建一个文件地理数据库命名后右键这个库新建要素类。3.2 要素类对话框里那些选项逐个说清楚在新建要素类窗口里你会看到几个关键设置名称和别名。名称是物理字段名不能有空格和特殊符号我强烈建议用拼音或英文比如DLTB地类图斑、DLBM地类编码、QSXZ权属性质。别问我为什么等你哪一天要写Python脚本批量处理或者把数据导进PostgreSQL的时候就知道纯英文无空格的名字有多省心。别名可以填中文显示的时候用别名两头兼顾。要素类型选面要素。地类图斑实际上就是一系列封闭多边形。如果你同时要画道路中心线就再新建一个线要素类要标水井、采样点就建点要素类。不要把点线面混在一个图层里。坐标系设置。这里直接点击坐标系按钮搜索并选择你项目要求的坐标系。常用的是CGCS2000 3 Degree GK Zone 40之类具体选哪个分带要看你所在区域。字段设计。默认会有一个OBJECTID和一个SHAPE字段这是系统字段不用管。你需要手动添加的是业务字段常见的地类图斑字段我列了个参考表字段名字段类型长度/精度说明DLBM文本10地类编码如0101表示水田DLMC文本50地类名称如水田QSXZ文本20权属性质如集体国有MJ双精度15,2面积平方米可后续计算BZ文本200备注实际项目里还常有坐落单位代码图斑编号等字段按需要加即可。注意字段类型里没有布尔型需要的时候用短整型0和1代替。3.3 加载到ArcMap、定义要素模板新要素类建好后从目录窗口把它拖进地图。这时候图层面板上只有一层空白数据。接下来要设置要素模板也就是告诉ArcMap你要用哪一层开始画默认情况下直接在工具栏上选择图层也能画但设好模板后效率高得多。在编辑工具条上点击编辑器下拉按钮选择开始编辑会弹出创建要素窗口如果没有在编辑器工具栏上右键勾选创建要素窗口。里面会列出当前正在编辑的所有图层。点击某图层下方会列出它的构造工具面、自动完成面、圆形、矩形等等。双击或单击选中鼠标回到视图里就可以开始画了。4. 实操篇从急得冒汗到行云流水数字化就这么上手4.1 一次完整的数字化会话长什么样开始数字化之前建议把编辑器工具栏Editor Toolbar和捕捉工具栏Snapping Toolbar都调出来。右键任意工具栏空白处勾选这两项即可。编辑器工具栏长这样左边是一个大编辑器下拉菜单里面是开始编辑、保存编辑、停止编辑等操作中间一排画点、画线、画面的快捷工具右边是捕捉相关功能。一次完整的操作流程是点击编辑器下拉选择开始编辑。在创建要素窗口选中目标图层。确认构造工具选的是面。鼠标移到影像上沿着目标地物边界逐个点击拐点。双击结束当前要素绘制或者在最后一个点上按F2。继续画下一个图斑。画完一批赶紧按CtrlS保存编辑。ArcMap的编辑操作是直接在数据上改动没有自动保存一旦软件崩溃没保存的部分全丢这个习惯一定一开始就养成。4.2 鼠标配合键盘效率翻倍的快捷键数字化纯靠鼠标点速度慢还容易抖。配合键盘操作会顺手得多。列几个我天天用的快捷键作用F2完成当前草图等同于双击结束F3结束并新建一个要素非常实用连着画的时候不用反复切工具C切换捕捉模式弹出式菜单CtrlZ撤销上一步操作CtrlY重做CtrlDelete删除选中要素E切换到选择工具N下一个捕捉点画面的图斑在最后一个拐点处别急着双击先保证首尾闭合。如果你发现差一点闭合可以右键选择完成草图ArcMap会自动从最后一点连回起点闭合多边形。如果边界的最后一段想画的是一条弧线可以在绘制过程中右键选择曲线工具再左键拖动调整弧度。4.3 捕捉为什么总感觉线条不受控制很多新手画线的时候发现鼠标像长了吸铁石自动往某些点上跳觉得烦人。其实这就是捕捉在起作用。没有捕捉你后画的每个图斑边界跟前一个图斑边界之间必然留缝或者重叠后期做拓扑改错改到崩溃。捕捉的本质是让新点精确落在已有要素的顶点、边或端点上保证几何位置严丝合缝。捕捉工具栏上有几个按钮对应不同捕捉类型点捕捉、端点捕捉、顶点捕捉、边捕捉。我实际工作时的建议是画地类图斑时只开顶点捕捉和边捕捉端点捕捉开不开看情况。全部打开有时候反而乱跳鼠标挪到哪都要被吸。捕捉容差不要设太大一般设置在5到10个像素容差太大在小比例尺下容易吸到莫名其妙的地方太小又捕捉不上具体可以根据屏幕比例尺微调。对着影像描边界时真正的技巧是不要一个点一个点慢慢点而是先用较稀疏的点位把大轮廓定下来再在弯曲明显的地方加密点。点位太密线上全是锯齿后期抽稀麻烦点位太疏边界误差大面积算不准。什么程度合适我一般以轮廓贴合边界、直线处两点即可、弯曲处利用弧线而非密集点为准。4.4 面要素高级构造工具自动完成面画相邻图斑是最容易出错的场景。常见做法是画完A图斑后再画B图斑时沿公共边重新点一遍A的边界这样不仅浪费时间而且公共边很难完全重合。其实ArcMap有一个非常好用的工具自动完成面。这个工具在构造工具列表里图标是一个小方块从左下角跳到右上角名字叫自动完成面。用法是选中图层激活自动完成面工具然后从已有面边界上的某一点开始沿着新图斑的外边界画一圈终点落回已有面边界上双击结束ArcMap会自动完成闭合并沿公共边切割两个面的共用部分。实际操作体验是关键你画完新图斑后它会把公共边自动捕捉到已有面的边上两个面之间没有缝隙也不会重叠。这个工具是图斑数字化的效率核心会了就相当于是从手工时代跨入工业时代。另一个常用的是裁剪面工具用来把一个已经画好的面从中间切一刀变成两个面。选择该面选择裁剪面工具画一条切割线确定后就分成两个图斑了。适合处理那种一开始画错的合并地块。4.5 画图白干一夜的三大元凶我在实际作业中见过太多人包括当年的我自己都栽在这几个坑里没开捕捉硬画导致图斑间反复出现细长缝隙和微量重叠。后期拓扑查出来几百上千个错误改到怀疑人生。开始编辑后忘记选对图层画了半天发现全画到另一个图层上去了。判断当前画到哪个图层看创建要素窗口里的高亮图层比看图面靠谱。缩放比例严重不一致即在很小的比例尺下画大范围图屏幕上看着精准实际点位的误差已经有几十米。数字化时尽量在1:1000到1:2000的显示比例尺下操作关键点处放大确认。5. 把Excel里的经纬度坐标变成图上的点一线工作流里的高频需求5.1 哪种场景会用到从Excel导入点做外业调查、点位采样的数据通常是一张Excel表每行是一个点包含编号、X坐标、Y坐标、属性信息。如果你接触过自然资源调查一定有过这种经历外业人员拿着GPS记录仪导出一堆经纬度发给你一张Excel让你把这些点放到图上去看看分布在哪里。在ArcMap里做这件事有非常成熟的路径不需要一条条手输。5.2 添加XY数据的完整操作在Excel里整理数据时有一点要注意坐标放两列常用表头是X和Y或者经度和纬度。有多列属性没关系ArcMap只会识别选定的坐标列。另外Excel表里别合并单元格别用特殊符号做表头第一行就是字段名数据从第二行开始。稍微清理一下另存为xls或xlsx均可。在ArcMap中操作点击文件菜单选择添加数据再选添加XY数据。在弹出的窗口里选择你的Excel表。如果列表里找不到点文件夹图标浏览到文件位置。X字段选经度列对于经纬度数据X对应经度/LonY对应纬度/LatY字段选纬度列。下面有个坐标系按钮必须点开设置坐标系。如果经纬度是从GPS采集的通常选WGS84地理坐标系如果Excel里的坐标是米制的投影坐标就选对应的投影坐标系。确定后图上会生成一个临时事件图层名字类似你的表名_Layer。这个临时图层看起来已经是点了但它只是一个事件表随时可能失效而且不能直接编辑属性。需要右键这个图层选择数据→导出数据把它另存为shp或要素类才能作为真正的空间数据使用。导出时同样要确认坐标系导出后记得加载到地图里看看点位分布是否合理。5.3 坐标系里的经典翻车案例Excel导点最常见的坑有两个。第一个是坐标系选错。有人拿到了WGS84经纬度的Excel却在导入时手滑选成了CGCS2000投影坐标系结果所有点全都飞到了一个看起来坐标值巨大的地方。判断点位对不对最简单的办法是看它是否落在你预期的区域里——把底图数据和点图层一起叠加点应该恰好就和已有的地物对上了。第二个是度分秒格式没有转换。Excel里如果存的是112°1234这样的文本ArcMap不会自动当成十进制度数它只会把整列当成一个字符串坐标导入就会报错或者全部变成同一个点。处理方式是先把度分秒转成十进制度十进制度度分/60秒/3600。在Excel里用公式算好之后另存为新列注意新列要是数字格式不是文本。如果你接入的是度分秒格式的GPS数据还有一个更省事的办法用ArcToolbox里的转换坐标记法工具它能一次性把格式规范的文本坐标批量转成十进制度数。6. 数据多得画不动时考虑给空间数据搬个库房6.1 Shapefile的局限什么情况下必须换单人单机、图幅不大shapefile或文件地理数据库都够用。可当你数据量上了几十万条、多人同时编辑、设备分散在不同办公室shp就会非常痛苦dbf格式的表结构老旧、属性表打开速度慢、大文件容易损坏、不支持多用户并发写入。这就要考虑上一套空间数据库了这也是ArcMap工作流里被不少人忽略但实际很常见的一环。6.2 PostgreSQL安装与空间扩展的部署思路前面热搜词里提到了PostgreSQL的安装部署我猜不少同行是在配置ArcMap与空间数据库连接时卡住了。PostgreSQL是一个开源关系型数据库配合空间扩展PostGIS后能存储和查询GIS数据被称为开源GIS领域最常用的空间数据底座。ArcMap可以通过空间数据库连接直接读写PostgreSQL里的数据这样就可以用数据库方式管理庞大的数字化成果。部署步骤大致是下载PostgreSQL安装包老版本常见9.x现在新项目直接上15/16了一路安装。安装过程中会让你设置超级管理员postgres的密码记好。打开Stack Builder或者手动安装PostGIS扩展。PostGIS安装包会附带一个空间参考表的初始化脚本一般安装器会提醒你选择目标数据库选中你的数据库后执行。在数据库客户端如pgAdmin里新建一个数据库比如命名gisdb。使用psql命令行或者pgAdmin的查询工具对gisdb执行CREATE EXTENSION postgis;把PostGIS空间扩展激活。这一步前置条件就绪后ArcMap就能去连它了。6.3 ArcMap连接PostgreSQL创建企业级地理数据库在ArcMap目录窗口里展开数据库连接双击添加数据库连接在下拉框里选择PostgreSQL填写主机地址、端口默认5432、数据库名和账号密码点确定即可。连接成功后你可能会发现它显示的只是一个数据库连接还不是企业级地理数据库。所谓企业级地理数据库就是PostgreSQL里已经初始化了ArcGIS的元数据表结构sde schema那套。要做这一步需要使用ArcToolbox里的创建企业级地理数据库工具填好数据库连接信息和许可信息一次性把schema建好。这里有个重点ArcMap连接PostgreSQL传统上要安装对应的数据库客户端库并配置正确的环境变量。如果连不上先别急着怀疑数据库装错了检查客户端库的位数是否和ArcGIS一致32位和64位不能混然后看环境变量PATH里是否包含PostgreSQL的lib目录。很多连不上的问题本质上是这个原因而不是账号密码错误。当然如果你只是个人学习或小团队协作并不需要每次都用企业级地理数据库。直接在PostgreSQL上启用PostGIS在ArcMap里右键数据库连接新建要素类数据也能存进去只是少了版本化、拓扑、复制等ArcGIS企业级功能。具体取舍看你项目需要。6.4 数字化成果入库之后查询效率的直观提升我个人体会最深的是大批量图斑的查询统计。shp属性表打开几十万条记录得转半天圈而数据进了PostgreSQL之后ArcMap用属性查询或空间查询的速度明显快一个档次。另外一个非常实用的小技巧是可以直接用SQL在pgAdmin里对图斑数据做批量计算和修改比如统一把某个字段赋值、按乡镇代码批量更新名称在数据库里写UPDATE语句执行比在ArcMap图层属性表里一条条改快得多。这也反向说明了我前面为什么反复强调字段命名尽量用英文无空格——写SQL的时候你会感谢当年的自己。7. 数字化不等于画完就结束检查、拓扑、出图收尾7.1 图斑画完之后先别急着交差画完的成果不能直接拿去用至少要做三类检查几何检查、拓扑检查、属性检查。几何检查最简单在图形上肉眼看看有没有碎裂的、拉伸变形的极端要素。可以用ArcToolbox里的检查几何工具跑一遍能找出诸如线段自相交、空几何之类的基础问题。拓扑检查是数字化的重头戏。在文件地理数据库里可以创建拓扑右键地理数据库新建拓扑把要素类加进去然后指定拓扑规则。对地类图斑来说核心规则是不能有缝隙和不能有重叠。新建拓扑后把它加进ArcMap打开拓扑工具条点开始编辑再用错误检查器逐条查看错误。你可以看到每个错误在图上标红右键能缩放定位、选择修复方式。常见的修改思路是重叠就裁剪/合并缝隙就补一个面或者拉伸相邻图斑边界闭合。这个过程在数据量大的时候极其枯燥所以前面才反复强调要开捕捉、用自动完成面从源头上减少错误。7.2 属性字段的批量补全几何没问题了属性表不能空着。地类编码、名称、权属这些字段要一一填上。逐条手填几千条显然不现实常用的两种方式使用字段计算器。对DLBM这类比较规整的字段选中若干要素后在字段上右键选择字段计算器写点Python表达式批量赋值。按位置选择关联。如果你的图斑范围恰好落在某个行政区划内可以用按位置选择把图斑选中再把行政区名称字段的值赋给图斑的归属字段。面积字段不要用字段计算器手工算直接在几何计算里右键面积字段选择计算几何勾选面积单位即可。前提是数据框坐标系是真投影坐标系算出来的面积单位才是平方米或公顷。7.3 出图前的最后排布数字化成果最终往往要变成一张正式图件。切到布局视图插入数据框还没有的话就先插好然后通过插入菜单添加图例、比例尺、指北针和标题。这几个元素加好之后别忽略一个细节图例里的内容默认是图层的所有类别如果你的地类编码字段有很多值图例会很长可以在图例属性里去掉不需要显示的分类。比例尺选交替单位可以同时显示米和公里方便阅读。导出出图时用文件→导出地图输出格式选PDF或TIFF分辨率一般300dpi。导的时候看一个东西——右下角的样式是否选择了高质量。默认有时候是最佳速度图面文字会发虚改成最佳质量再导出来的图打印效果完全是两个档次。这里顺便一提ArcMap里的坐标系和投影设置会影响出图时的图形总貌。在地图属性里设置好数据框坐标系后布局里显示的地图就已经完成投影了。如果发现出图时投影方向不对或范围偏了优先在数据框属性里调整范围而不是挪动数据本身。7.4 制图出图的学习建议初学者容易把精力全放在图面美观上符不符合制图规范反而注意得少。实际交付时图名、比例尺、坐标系说明、制图日期、制图人这些要素一个都不能少。图名建议用名词性短语比如某某村土地利用现状图不要写示意图这种含糊词。指北针一般放在图幅右上角比例尺放在图名下方或图框内空白处。图廓线宽度、花边样式这些细节按项目单位的模板走不同单位风格有差异拿到模板后尽量对齐模板。我个人交成果前还会做一个眼见为实的抽样随机挑20个图斑放大到1:500贴影像逐块看边界是否画平稳有没有明显穿过房子、把池塘切掉一角之类的问题。发现两个以上明显误差就说明整体画图精度不达标宁可返工也不要提交。数字化这份活归根到底拼的是两件事一是有没有在一开始把坐标系、图层结构、捕捉环境这些基础条件布置好二是操作过程中够不够细致和规范。ArcMap的命令不难学难的是养成一套不会给自己埋雷的工作流。如果你刚把前两篇笔记看完正在电脑前对着影像无从下手按这篇文章的顺序把准备工作做一遍然后先从一小块区域、一张图斑开始试画画完立刻检查闭合和相交情况慢慢就有手感了。等到捕捉和快捷键形成肌肉记忆再回头看第一天描的那些歪歪扭扭的边界你会知道进步已经发生了。
返回列表