FME中由于容差导致的问题及解决方法

原文发布时间:2012-06-25

作者:毛毛虫

最近在使用FME处理数据的时候,遇到一个问题。下面是这个问题的示例:

1、使用FME做面面叠加AreaOnAreaOverlayer

其中一个图层是由一个蓝色的大面和一些红色的小碎面组成,另一个图层是由一个绿色的大面构成。

     

对这两个图层做面面叠加后的效果如下:

     

多边形叠加时,相交处被分割而产生很多小碎面(称为破碎多边形或伪多边形),第一个图层中的碎多边形就是因为之前进行了多边形的叠置造成的。这样再次进行多边形的叠加时,可能就会出现上图中所示的问题。通常在GIS软件的操作中设置模糊容差值,以去除破碎多边形。在FME中我们可以尝试使用CoordinateRounder 或SliverRemover来解决问题。

示例2:使用Generalizer做抽稀

抽稀前的图层入下图所示:

      

将'Preserve Shared Boundaries'设置为'Yes',采用Douglas、Wang等算法的时候,执行后的结果如下图所示:

     

造成这个问题的原因同样是由于容差问题。在这个转换器的帮助中,对于'Preserve Shared Boundaries'设置为'Yes'的说明中有这么一句话:在做面边界的抽稀时,覆盖范围内的拓扑会被保持。整个覆盖范围内的面要素不能覆盖。如果面要素有覆盖,要么选择’No’,要么首先使用AreaOnAreaOverlayer进行处理,或者使用Snapper,并将模式设置为VERTEX。

由于容差问题,可能有些数据会发生覆盖,造成了上面的问题。

除了上面说明的处理方法外,对于上面两个问题,比较好的方法是先对数据创建拓扑。

猜你喜欢

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