FME对图斑接边融合的处理

原文发布时间:2010-10-14 23:04:58

作者:毛毛虫

前段时间客户想要使用FME做个图斑的接边问题,具体要求是:有两个相邻的图层,想要对边界上相邻的同类图斑(如河流水面)融合为一个图层,这也是常遇到的问题。下面是对这一问题的一种解决方法。

显然,这个问题需要解决两个问题:

1、找出边界上的图斑;

2、合并同类图斑。

下面看一下如何解决,首先看一下源数据,由于找不到相关和数据,用地类图斑图层来说明这个问题,部分图层如下:

现在首先找出位于两个图层边界上的图斑,因为测量方面的误差问题,可能边界两侧相邻的图斑公共边界不完全相同(这个问题会在融合时详细说明),所以对需要首先对边界做个小缓冲(如0.01,根据你数据的精度来确定),然后使用空间关系转换器求与边界缓冲后相交的图斑,即为要找的位于边界上的图斑。用到的转换器是:Bufferer、SpatialRelator、Tester,模板如下:

这里两个源分别为两个图斑层,由于我没有边界线,首先使用Dissolver、BoundsExtractor和GeometryCoercer转换器把其中的一个图层中的所有图斑融合为一个图斑,然后提取边界线,执行完成后的效果如下:

 现在解决第二个问题,对找出的图斑,进行同类图斑的合并。直接使用Dissolver转换器合并,会出现一个问题,如下图所示:

融合后的图斑

融合后的图斑

这就是由于我们上面提到的由于测量误差等原因造成坐标不同而产生的问题(小数点最后几位可能不同)。

这时候,我们使用转换器chopper把面转换为点,对每个点进行捕捉(容差根据数据决定),注意的问题是对于洞,重构面时可能会有问题,因此需要先把洞提取出来,只对外层图形进行转点操作,捕捉后重新构面生成洞,然后使用FeatureMerger转换器对图形重赋属性,最后进行融合操作,整个的过程为:

使用counter转换器是为了后面线连接构面时作为分组依据。

这样就完成了对相邻两个图层的同类图斑的拼接融合工作。

猜你喜欢

转载自blog.csdn.net/fmechina/article/details/81234966