一、背景
最近在处理一份数据,其中涉及到空间数据矢量化,瞬间回到大学时代,纸图扫描,配准,矢量化,拼接,满满的回忆杀。
数据分两块,一块是线路数据,就是今天要处理的数据;另一块是面数据(线路用地);需求就是用面数据来校正线路数据。话不多说,时代在进步,软件在发展,分享一下数据矢量化中的一个小技巧:局部更新。
使用的软件:iDesktopX 10..2.1版本
二、实现
要让所有的线都落在面内,而且属性和分段规则不能丢失,怎么实现?先后经历四个版本
版本①
节点编辑:选中线,打开节点编辑,把所有错误的点拖拽到对应的面内,具体步骤看截图。
看了看要编辑的n多条线路数据,看了看每条线路的节点数量,果断放弃。
版本②
节点编辑(优化改良版):选中线,打开节点编辑,选中所有错误的节点(ctrl/shift+点选头尾节点),点击delete进行选中节点删除,打开节点添加,线上点击的同时拖拽至目标位置(可以少点几个点,保证线路落在面内就行)
比之前快了不少,因为节点数量少了,折腾了一上午,尝试了几条线,还是崩溃放弃。
版本③
局部更新:开启局部更新,在原有线中间绘制一段线(沿着面矢量化,起点终点必须落在原有线上),实现起止点中间节点的局部更新。
相比前两个版本有质的飞越,有刷刷刷矢量化的节奏了,这活终于像能做的样子了。剩下就是描到手、眼、心都酸的人力劳动了。
版本④
基于上述工作的枯燥乏味,关键还是一两周干不完,逼迫着我们再寻找其他更优的方案。三个臭皮匠顶个诸葛亮,你的瓶颈或许被别人轻易打破,还真能另辟蹊径:
①基于线路数据制作缓冲区面数据(平头缓冲,左右各200米,保证和用地面数据相交)
②线路缓冲区数据与用地面数据做相交分析,获得待修改线型区域
③相交结果做融合处理,形成连续面数据(提取中心线有点小问题,此步骤为了降低处理工作量)
④融合结果提取主干线中心线
⑤线路缓冲区数据与中心线做相交分析(完成对中心线分段和线路属性赋值)
⑥人工处理:将中心线数据接头部分进行处理,实现与原线路数据融合(替换与用地面数据不一致区段数据)
初步测试看效果不错,后面写成模型自动执行看看效果,这才像个码农干的活,拒绝重复的人力劳动。
流程中用到如下功能:
缓冲区分析
叠加分析(相交)
融合
面主干中心线
三、总结
矢量化的工作是枯燥乏味的,是机械辛苦的,是不合理的,努力探索思路,终会找到更优的解决方案,以此纪念曾经的大学生活。