前言
本篇知识点
通过本文,你将学到怎么使用GIS软件快速的把数据补全!
具体的包括:在ArcGIS的字段计算器中使用脚本、多要素支持【FME的AttributeCreator转换器】、全局变量【Python】
背景
最近有小伙伴在交流群里问到这样一个问题:
如上图所示,如何将name的值补充到后面的要素中?
也就是说,怎样才能将上图中的两个区域补充上对应的name值?
解决问题
要解决这个问题,我想到了两种方式:一种是FME,另一种是ArcGIS。
但后来考虑到对方可能没装FME,没有这个环境,就用ArcGIS写了一个脚本给他用了。那么现在我再回过头看下这个问题,再复现一下解决的过程。
ArcGIS方式
实现之前,先来介绍一下这种方式的优点: 1、直接再原始数据基础上操作,无需写出; 2、有问题可以直接改,苗头不对可以直接回撤!
实现方式也很简单,我们可以给所有的要素都补上name信息:
也可以只给特定的要素补上name信息:
tips:进行字段计算的时候最好打开编辑,这样才可以回撤
案例中用到的代码:
代码语言:javascript复制import re
ptn = re.compile('[^s]')
def func(att):
#需要注意的就是这个全局变量
global value
if ptn.match(att):
value = att
else:
pass
return value
案例中的代码很简单,如果对案例中使用到的全局变量感兴趣,可以自行搜索相关知识。有一点需要指出:全局变量不仅可以用于数据补全,也可以用于遍顺序号等数据处理场景。
FME方式
同样的,做之前,也先来介绍一下优点: 1:零代码,用FME可以不写代码就完成数据补全; 2、支持的格式多,用FME不仅可以处理空间数据,非空间数据也可以。
实现方式同样很简单:
在这里使用AttributeCreator转换器的多要素支持,就可以很方便的完成数据补全。只需要读取数据 一个转换器就可以了,非常方便。如果需要写出的话,只需要再添加一个写模块,只要是FME支持的数据格式,都可以!
总结
本文介绍了两种不全数据的方式,当然,还有很多种数据处理的方式可以完成类似的数据补全。比如:可以把属性表导出成Excel,在Excel补全后再链接回去;比如,可以直接写代码来处理(Python就行);再比如,在FME中写Python代码来处理…… 总之,数据处理有多种方式,并不止是我介绍的这两种,各位读者朋友可以选择适合自己的技术方案。
以本文为例,本文使用的技术都不是什么新技术。就其中ArcGIS方式来说,用了全局变量;就其中的FME方式来说,用了临近要素的支持。技术都不新,关键在于灵活运用!