FME的SHP写模块拒绝输出要素

时间:2024-04-08 13:09:03

原文发布时间:2014-06-13

作者:Tenniwdy

    在FME中常常处理分析SHP数据,再通过SHP的写模块将成果输出,这可能会遇到只输出小部分数据或是完全没有输出输出的情况,在模板的数据流中也没发现数据丢失,模板提示运行成功。这样的问题对于接触FME不久的朋友来说就很难找到原因,因为这不是某个错误操作或是某个转换器使用不当导致。

在对一个SHP的面数据进行处理后,添加写模块输出,在输出完成后,模板没报错,没有输出结果,模板运行日志提示:Error - Expected an aggregate or area geometry;拒绝32输出要素。使用转换器Deaggregator处理后任然没有解决此问题。

        FME的SHP写模块拒绝输出要素

        写模块是输出的面,看提示可能是输出时有非面的几何体,在写模块前添加FME Universal Viewer预览。如下图:

        FME的SHP写模块拒绝输出要素

        预览没发现任何问题,但却没有输出成果。对写模块重定向,成预览如下图:

        FME的SHP写模块拒绝输出要素

        

查看到的所有数据fme_geometry=fme_line,在写模块前添加的FME Universal Viewer预览fme_geometry=fme_polygon。看到这样的情况很凌乱了,第一次遇到的这样的情况。

将写模块改为MDB写模块,正常输出需要结果,或将数据的属性改为fme_geometry=fme_polygonfme_type=fme_area也可以输出SHP数据,但这并不是最好的解决方法。

经过资深技术专家指导,发现问题出在Clipper转换器,准确的说也不是Clipper转换器的错,是不正确使用ClipperLineOnAreaOverlayer两个转换器导致的问题。使用Clipper转换器后常常会出现聚合体,在存在聚合体的时候使用LineOnAreaOverlayer转换器就会有以上问题的出现。

        FME的SHP写模块拒绝输出要素

    在Clipper参数设置中-矢量处理-创建聚合改为No,就能解决问题了。

    FME的SHP写模块拒绝输出要素

    这样的实例提醒我们在学习和使用FME各个转换器的过程中不要仅以某个转换器的方式来学习,而要以某些或某类转换器的学习方式来学习,使用时要考虑转换器与转换器之间可能存在的问题。