日常矢量数据采集过程中,难免会出现相邻面之间存在缝隙或重叠的现象,大家都习惯用Arcgis去查这种错误,但是当数据有几百份时,这种常规方式就显得有些麻烦了,在这个背景下,FME就派上了用场。
首先,需要了解到三个主要的转换器和经常会用到的参数:Dissolver,DonutHoleExtractor,AreaOnAreaOverlayer。
Dissolver转换器:通过删除公共边界来融合面要素,从而创建更大的区域。
- 分组:对输入的多边形要素分组,并用分组参数进行融合。如果参数不指定,那么所有的输入要素一起被融合。分组参数能够用一个转换器来融合多组有可能重叠的多边形。
- 容差:在二维平面上,几何对象之间的最小距离是相等的,以地面单位。如果容差为 None,那么几何对象必须完全相同,才能被认为是相等的。如果容差是自动,就会根据输入几何对象的位置自动计算出容差。此外,还可以使用自定义容差。
- 融合计数属性:该参数指定的属性将存储融合到输出多边形的输入多边形的个数。
DonutHoleExtractor转换器:将一个有洞的多边形分离为洞和环这两个组成部分。
AreaOnAreaOverlayer转换器:进行面与面的叠加(多边形的交点)操作,因此所有输入的面彼此相交,生成的面要素被创建和输出。产生的面具有原始的所有属性和任何重叠的多边形。
- 容差:在二维平面上,几何对象之间的最小距离是相等的,以地面单位。如果容差为 None,那么几何对象必须完全相同,才能被认为是相等的。如果容差是自动,就会根据输入几何对象的位置自动计算出容差。此外,还可以使用自定义容差。
- 压盖计数属性:压盖计数属性参数保存结果要素为被压盖的数量,此参数至少为1 。
在了解完这三个转换器的效果后,面拓扑检查功能怎么实现就很显而易见了。基本思路为:通过Dissolver和DonutHoleExtractor找出所有的空洞区域,通过AreaOnAreaOverlayer找出所有的重叠区域。
这里需要再跟大家分享一个小技巧,在FME模板写好后,可以利用此方式直接运行,不用打开FME和重新读数据。
1、在读数据后,将路径设置为相对路径的方式,后续需要检查的数据只需放入此位置即可,拷贝到其他电脑也同样不用修改路径。
2、新建一个bat文件,里面填入以下参数
注意需要在环境变量Path中添加fme.exe所在的路径,不然这里就需要添加全路径
后续只需将需要处理的数据放入指定的相对路径中,双击bat运行即可,多次使用时很方便,对不会用FME的同事也非常友好。
欢迎大家关注我的微信公众号:宇宙测绘师,里面会有相应的演示视频分享。