宇宙最激烈的矢量化战争!以地理国情调查任务为基础的地图矢量化流程研究

  • 前言
  • 一、任务流程
    • 1.1 把握任务大致流程
    • 1.2 研读文档
    • 1.3 地图矢量化
    • 1.4 数据检查
    • 1.5 数据提交审核
  • 二、标准与规则
    • 2.1 规则提炼
    • 2.2 矢量化标准
  • 三、实验过程
    • 3.1 数据处理阶段
    • 3.2 单工具介绍
      • 3.2.1 【Straight Segment】
      • 3.2.2 【Cut Polygons Tools】
      • 3.2.3【Trace】
    • 3.3 矢量化
  • 后序

前言

这是一场旷日持久的战争
硝烟弥漫的战场传来饥饿的怒吼(gu✔gu-)
在黑暗中前行的少年连续Crtl s
终将版图上的怪物封印于电路之中

直到今天
英雄的旗帜又被高举
沸腾的血液即将被引爆
但是
谁也没有想到
那次目视解译的背后
竟是依靠风油精续命的奇迹之旅

一、任务流程

1.1 把握任务大致流程

即以栅格数据为基础,利用目视解译和Arcgis工具将遥感影像上的地物按指标规则进行分类分级,形成分类分级后的面要素矢量数据。

1.2 研读文档

研读文档《地理国情监测内容与指标》、提炼规则。

1.3 地图矢量化

根据分类规则并利用Arcgis工具对全图进行矢量化。

1.4 数据检查

按相应规则对数据进行逻辑检查、查漏补缺。再进行拓扑检测。

1.5 数据提交审核

二、标准与规则

2.1 规则提炼

明确任务。文档中涉及三个任务的解决方案即地表覆盖、地理国情、地表形态,而我们的任务则是从地表覆盖的角度对影像进行矢量化。分类表中有用信息为前四列,规定了指标代码和上图最小精度并指出道路、水域的下属分类归为0601(路面,铁路除外)、1001(水面)。在arcgis中建立指定要素字段名称、别名、约束关系,类型、长度,最后对其进行矢量化。

Tips:
建立代码、名称、上图标准的对照表格(excel文件)和Arcgis字段计算器的python代码(此代码利用if语句将面要素代码转为名称并对不符合上图标准的矢量面进行筛选,考虑到指标较多则利用python对excel进行处理得到可在字段处理器使用的标准python代码,为属性录入和上图标准检查做准备。)

这一步的作用或许没那么大,但是必须要酷炫。

下面为示例代码

利用Pycharm在Terminal中输入以下命令进入虚拟环境,下载xlrd包处理excel文件。

PS C:\Users\EDY\Desktop\GDAL> cd venv/Scripts
PS C:\Users\EDY\Desktop\GDAL\venv\Scripts> activate
(venv) PS C:\Users\EDY\Desktop\GDAL\venv\Scripts> pip install xlrd

将打印出来的代码复制进字段计算器即可使用

import xlrd
import winreg
get_xlrd = xlrd.open_workbook("connect.xls")
sheet1 = get_xlrd.sheet_by_index(0)
s_rows = sheet1.nrows
col_1_value = sheet1.col_values(1)
col_2_value = sheet1.col_values(2)
col_3_value = sheet1.col_values(3)print("def f(x):")
#针对上图精度的逻辑检查
####  print("def f(x,y):")
for i in range(1, s_rows):print(' if x =='+"'"+col_2_value[i]+"'"+":"+'\n  return '+"'"+col_1_value[i]+"'")# print(' if x =='+"'"+col_2_value[i]+"'"+":"+'\n  if y <'+str(col_3_value[i])+":"+'\n   return '+"'"+'错误'+"'")

Python跑出来的字段计算器代码:

2.2 矢量化标准

在对影像矢量化过程中按“所见即所得”原则,保证目视判读的准确性,对上图要素按标准“应上尽上”。矢量化过程中应保障局部要素和整体图层的美观性,避免出现狭长条带和大量的零碎小图斑。对于矢量面应避免出现代码填写错误和相邻图斑属性一致问题。

三、实验过程

3.1 数据处理阶段

数据介绍:基准影像位于重庆,采取WGS_1984为地理坐标系,其空间分辨率、图像位深、影像波段数分别为0.8m、16bit、3,采用真彩色方案(R(band1)、G(band2)、B(band3))进行影像颜色合成。

数据处理:建立文件连接,加载基准影像(Connect To Folder)。

创建File Geodatabase 命名为“地表覆盖”,再建立Feature Database 和Feature Class(图1)。以
“V_LCAR”命名创建Feature Class。

地理坐标选取WGS 1984


建立字段: 一般地,创建Feature Class时字段名称以中文首字母命名而对于别名(Alias)则用中文描述。对于此次任务我们选用了CC(地理国情信息分类码)、MC(地理国情信息分类码名称)、TBMJ(图斑面积)三个字段对矢量要素进行描述。

最后的结果如下

接下来我们将基准影像加载到图层(Layer)里,这里注意我们要添加数据框的投影坐标系统(数据框的坐标系统会将你添加的第一个图层的坐标系统作为自身的坐标系统)即WGS_1984_48N,更改投影坐标后我们才能进行图斑面积的计算。


我们应该知道这种任务必是一场持续重复的流水线工作,为了保证不被Boss踢走,恨不得手脚并用。

现在我们需要来设置快捷键,在【Customise】的下拉菜单中选择【Customise Mode】,然后选择【Command】页面下的【keyboard】工具,这时就来设置快捷键吧。

一般地,矢量化过程中多用到【Cut Polygons Tool】、【Trace】、【straight segment】、【merge】关于快捷键的设置唯一要求就是在提高效率下保证你的手指不会打架抽筋。

3.2 单工具介绍

矢量化过程的路线是利用【Straight Segment】工具建立第一个矢量面,再利用【Cut polygons tool】与【Trace】相结合的方式对面进行裁剪、创建从而达到扩展矢量面数量的目的。根据绘制情况,我们需要使用多个工具混合进行。
这里也产生了几个问题,为什么不能只使用创建面工具进行矢量面的添加,不用来回的切换工具不是更方便嘛?
对于即将创建的矢量面与另一个面共边怎么办?
如果基准影像道路极其复杂又该怎么处理?
现在我们从独立工具的视角下对这几个问题进行回答

3.2.1 【Straight Segment】

该功能是以跟随鼠标左键点击的方式用两条及以上数量的直线构成面边(双击鼠标左键会将首末两个端点自动闭合)。现在让我们来构建第一个面(L)此面简化为由三条线段(L1、L2、L3)构成,然后构建第二个面(H)同样可表示为(H1、H2、H3)。

在视图中我们看见两个面是包含关系,但他们真实的关系是重叠这也导致了这两个面的拓扑关系错误(同一个位置存在了两个要素)。

这时我们需要选中面(H)利用【Clip】对该面进行裁剪,缓冲(buffer)设置为0。

现在的面(L)表示为(L1、L2、L3、H1、H2、H3),很明显他与面(H)共用边线,建立了正确的拓扑关系。想一下如果要是这个大面内部有许多的小面呢,这种方法还是影响了矢量化效率。

3.2.2 【Cut Polygons Tools】

为了解决上面的问题,我们使用裁剪多边形工具对面内部的物体进行矢量化。
按裁剪线是否闭合为条件有两种裁剪方法:1、不闭合。裁剪线起点A在面要素外部,引线穿过面内部并将终点落在面外由此实现了面的拆分。 2、闭合。在面内部引出裁剪线,使其自相交形成一个封闭的面双击完成即可。

3.2.3【Trace】

此工具用来追踪线段。当你想绘制一个面要素时发现他与另一个他要素共边,你会怎么办?放大到1:1,沿着那条共边一个点一个点的手工描绘?先不说准确率如何,就这工作量足以让你换掉三个鼠标。这时将你的捕捉【Snapping】开启,选择公共边的起点,你只需要让鼠标跟随共边的走势移动从而把他送到该去的地方即可。这里有个小细节,当你完成公共边的追踪再绘制其他边时你不用去选择终点A,只需再点一下他就会将A与B点进行连接(这会为你省去0.75s的时间)

3.3 矢量化

讲了这么多废话,现在我们进入实操。
加载基准影像,我们从菜单栏【Customize】–【Toollbars】中勾选【Editor】,启动编辑。在编辑条最右侧选择【Creat Features】将V_LCRA激活,

将图斑的内部填充色改为NoColor ,边框改为0.6、红色。

左上角开始对基准影像进行绘制,保留道路(基准影像的最外围都是道路且较为复杂,我们将此进行保留当其他要素绘制完毕后留下的就必然是道路了)。选择【straight segment】绘制第一个图斑,对于转折处可编辑更多的点使转线更为自然,在编辑弧段时应让折线与XY水平坐标轴的夹角依次增加或减少。

绘制完第一个图斑后就要选择【Attributes】录入编号代码,其他信息可以等矢量完成后再进行。

接下来绘制第二个图斑,这时绘制的图斑就有公共边了。我们选择追踪公共边,再勾画轮廓完成绘制。这个操作循环百次也就ok了(如果不想吐血300升的话记得在编辑器内部间接性保存),针对此基准影像,图斑代码多为0360、03A2、0541、0719。

… … …

讲个鬼故事:
如此生活30小时,小明终于完成除道路外的所有矢量化操作了。但最后剩下的烂摊子又要咋整呢?前面的工作太枯燥了,总得给生活找点乐子呗。这时小明突然奇想、灵光乍现,要不利用跟踪工具将道路描一遍。说干就干,几十秒后他发现了一点乐趣,这就是个走迷宫的游戏(只要将所有相通的道路跟踪完,保证他们是一个矢量面不就行了),于是小明紧握鼠标的手逐渐松开,他终于可以鼓足勇气的哼道:“小瞧谁呢,工作不会难道玩游戏还不行吗?”。 最后他终于薅光了自己的头发,把它们贴在电脑屏幕上,然后拉来老板指着屏幕说到:“瞧瞧,咱们这道路可还行”。

面对斗折蛇行、百折千回的道路,曲径通幽的立意荡然无存,而一句卧槽行天下的方法也断然走不通这道路。这时我们就需要为自己开辟道路了:

对于道路的处理我们需要新建一个面要素(作业范围)将整个基准影像概括进去。

利用擦除工具【Analysis tools】–【Overlay】–【Erase】将作业范围与V_LCRA叠加分析用大面擦除小面得到道路图层,再选中道路将其复制进入V_LCRA图层中进行粘贴,至此矢量化完成。

接下来我们进行属性的挂接。有两种方式:1 字段计算器。打开属性表,选中MC列,鼠标右键【Field Calculator】选择python,打开代码块将之前python处理后的代码复制进去运行即可。


2 属性挂接。将CC字段作为属性表与之前整理的代码对照表之间的连接字段,右键图层选择【joins and relats】把字段名称对应起来实现挂接,选中MC字段利用【Field Calculator】将名称赋予MC。

再新建面积字段,通过计算几何工具完成。(数据框投影坐标一定要是WGS84的48N分带,不然会显示disabled)

对小于上图指标的要素进行筛选,就近合并。新建字段选中,打开【Filed Caculator】将判断代码复制运行,不合格的图斑以“错误”返回。

合并后你要打开图层的label将CC代码显示在图形上,然后检查是否有代码错误的情况,比如从基准影像上可以看出此处为绿化林地而填写的代码为低矮建筑(在数据上报时如果你提交的数据出现了这种问题,那就准备跑路吧。)

再绘制过程中难免出现邻接面CC一致的情况,面对相邻要素属性一致问题我们选择【Geoprocessing】–【Dissolve】工具,选择你要融合的字段,注意将底部的创建多要素去掉(这是为了只将相邻的要素进行合并,如果不勾选就会发现他将CC码一致的图斑都合并为一个面了)。

融合后的面与源面V_LCRA做一个按位置选择(注意模式选则与源图层要素相同),打开V_LCRA的属性表进行反选,这时就会出现相同属性的相邻面了,最后手工合并(编辑器的merge)。

最后的最后,我们需要对完成的矢量面进行拓扑检查(在矢量化的过程中可能出现矢量面的重叠和空隙问题)。
拓扑检查请具体参照博文 ArcGIS空间数据的拓扑处理

至此整个矢量化流程已完成。

后序

亲测:矢量化过程中吃蓝莓比抹风油精有效。
第一次写博文,觉得有用的朋友可以收藏点赞,欢迎指正。
数据下载:
如果你想白嫖点这 提取码:jbqf
如果你想请我吃雪糕点这 强力推荐!!!

下篇文章聊一下 正射影像(Digital Orthophoto Map)的流程生产。

以地理国情调查任务为基础的地图矢量化流程研究相关推荐

  1. 栅格地图矢量化的一个思路

    输入的数据是一些地理区域图片,只能够进行展示,不能进行分析,于是想到把栅格地图进行栅格化,实用Opencv实现,具体效果还需要进一步观察,步骤如下: 1.生成灰度图 2.阀值分隔 3.噪点过滤 4.查 ...

  2. 地理国情监测类毕业论文文献都有哪些?

    本文是为大家整理的地理国情监测主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为地理国情监测选题相关人员撰写毕业论文提供参考. 1.[期刊论文]浅谈地理国情监测数据变化信息自动识别方法研 ...

  3. 2019FME博客大赛——基于FME的地理国情监测 变化信息通用属性项检查

    参赛单元:传统GIS数据处理 作者:陈兴波 单位:宁夏回族自治区基础测绘院 1 绪论 1.1 背景 基础性地理国情监测引入的变化信息通用属性项,通过人机交互检查容易出现错漏,且速度慢,因此需要设计对应 ...

  4. 关于产业生态与区域经济综合服务平台 (浙江产业地图、广东产业生态地理信息系统、地理国情监测的碎碎念)...

    有感于浙江产业地图和广东产业生态地理信息系统的推出,感到了一种强大的压力,值得注意的是,这两个也都是纯粹的由政府主导由企业来实施的,好处在于前期有资金和政策保证,数据也权威,但后期可能会在于这种纯政府 ...

  5. 关于地理国情监测(国家测绘局、地理信息系统协会改名及国家级地理信息产业园奠基的风生水起)...

    在测绘行业的"十二五"规划中提到的"构建数字中国.监测地理国情,发展壮大产业.建设测绘强国"24字总体战略中勾画出了未来测绘行业发展的蓝图,从这里看出了国家测绘 ...

  6. 江苏省地理国情质检处理系统使用说明

    江苏省地理国情质检处理系统 使用说明 0.概述 该系统是基于江苏省地理国情质检检查与验收工作流程,为提高江苏省地理国情质检工作效率而研发.基于ArcGIS10.1和.NET 4.0开发,采用ArcGI ...

  7. 2020FME博客大赛——基于FME的地理国情监测 全集水网检查与入库

    作者:陈兴波 单位:宁夏回族自治区测绘地理信息院 摘要 本文针对2019年基础性地理国情监测全集水网数据更新工作,利用FME软件设计了关于数据质量检查及入库的方法,实现了全集水网数据快速检查和水体实体 ...

  8. arcgis 属性表 汇总_Arcgis中遥感影像地理配准、矢量化与地图制作

    目的: 将遥感图像进行地理配准.矢量化,并且制作地图. 要求: 对的遥感图像进行地理配准: 矢量化建筑物.绿地.道路.水体等主要地物要素: 对各类地物要素进行符号化设置并对其名称进行标注: 添加指北针 ...

  9. 北京世纪安图在汉参加地理国情监测技术与应用研讨会

    原文发布时间:2013/12/3  14:08:03 FME报道员:糖糖 2013年11月28.29日,由武汉大学和浙江省测绘与地理信息局主办的"地理国情监测技术与应用研讨会"在武 ...

最新文章

  1. Hololens2-OpenXR开发(二)-实现通讯
  2. 简述mysql半同步复制—semisync
  3. 微服务限流Sentinel讲解(五)
  4. 就是这么流弊!三行Python代码,让数据处理速度提高2到6倍
  5. java中int转成String位数不足前面补零
  6. 按钮右对齐_Python Tkinter Button按钮
  7. 【CSS3】 理解CSS3 transform中的Matrix(矩阵)
  8. note_maven的概念,作用
  9. 使用Python开发SQLite代理服务器
  10. 阿里云数据森林人才计划起航
  11. 手机点餐系统概述_餐馆点菜系统概要设计说明书.doc
  12. HP 打印机系列打印出来有折痕,断断续续,解决方法如下:
  13. 远程桌面连接 mac to linux,3种远程连接到你的mac桌面的方法
  14. 技术人员的职业发展规划思考书单推荐
  15. 3.BootLoader引导启动程序
  16. [附源码]java毕业设计旅游网站
  17. UOS系统修改分辨率
  18. WEB简介:HTTP方法
  19. Python基础知识点梳理
  20. Android 应用的动画实践--View Animation篇

热门文章

  1. VBScript的中ByRef和ByVal的不同
  2. pyecharts全国地图和省级地图和水滴图
  3. 符号三角形问题(回溯)
  4. 基于LSTM + keras 的古诗生成器
  5. excel表格被锁定不知道密码
  6. Android Drawable设计圆角
  7. 知行EDI系统如何通过中间数据库表方式集成金蝶ERP
  8. Python版本极简打飞机
  9. latex 中手写l的输入方法
  10. ECharts 实现世界地图