自定义转换器2

原文发布时间:2014-09-19

作者:一辉
相关文档:自定义转换器1

本文主要介绍FME中自定义转换器内部属性与外部工作空间属性的关联。

1. 自动发布

自定义转换器获取外部属性是很方便的,在新建自定义转换器的时候,参数“Attribute References”设置为“Handle With Published Parameters”时会将自定义转换器中用到的属性自动发布成参数,作为自定义转换器的参数供用户配置。

比如我们做这样一个自定义转换器,检查同要素代码面的压盖:1)读取shp数据,很多个图层2)计算图斑面积3)面面叠加分析,过滤出_overlaps>1且_area<5 的重叠要素。

做好流程之后,选中AreaOnAreaOverlayer、AreaCalculator、Tester三个转换器,右键Create Customer Transformer,就生成了我们想要的自定义转换器。

自定义转换器目前有一个YSDM的参数,因为他是在自定义转化器中使用的属性,所以被自动发布出来,以供配置。

如果我们还想要将过滤的条件面积小于5发布出来也是可以的:在自定义转换器的界面打开Tester,选择如下图:

这时候在自定义转换器的参数里,就能看到这个参数:

2. 手动添加

用手动添加的方式,可能会更加灵活一些,也更容易控制,因为更加清洁,所以我也更喜欢这种方式。

仍然以上面的例子为例:这里我们打开一个空白的工作空间,选择File->Insert Customer Transformer,“Attribute References”属性参考设置随便哪个都没有区别,因为现在是一个空白的自定义转换器。

在这我们点击Input的设置按钮,然后在弹出的对话框里点击,Add这儿可以手动填添加我们想要的属性,当然属性名称可以随便。

如图我们添加了两个属性,“_MJ”和“_YSDM”,然后在左边的导航栏里编辑发布参数的提示:

然后在空白的自定义转换器中,添加转换器,实现我们想要的功能,注意我们所使用的属性是我们上面添加的属性,这个属性名称,不依赖数据,这样自定义转换器有更强的通用性。

功能实现之后,在自定义转换器的参数里便可以配置:

同样的也可以直接在左边导航栏的参数里直接添加参数,效果是一样的:

èªå®ä¹è½¬æ¢å¨2 - FME - FMEâä¸ä¸åç空é´æ°æ®æå¡å®è·µè

至此自定义转换器获取外部属性的方式就这么多,当然这是需要配置的,如果我们想在自定义转换器里用外面的属性,且不需要用户配置(比如说格式属性,名称是固定的),那我们可以直接在自定义转换期里面用AttributeExposer,将我们需要的属性暴漏。

很明显,在自定义转换器里其实本身就是有外部工作空间的属性的只是被隐藏了像数据的格式属性一样需要暴漏。上面的例子如果我们进行面面叠加分析的时候不光要根据“YSDM”来分组还要根据图层名“fme_feature_type”来分组这时候我们就可以在前面添加个属性暴漏转换器,将fme_feature_tyep报漏出来。

èªå®ä¹è½¬æ¢å¨2 - FME - FMEâä¸ä¸åç空é´æ°æ®æå¡å®è·µè

3.  总结

自定义转换器在制作过程中,应当尽量提高通用性,不依赖外部属性,当然手动添加属性也好,自动发布也好,属性暴漏也好,在真正使用的过程中,通常是相互结合的,三种情况都会同时用到。

接下来可能还有一篇对于自定义转换器的一些高级的应用如循环和扩展

猜你喜欢

转载自blog.csdn.net/fmechina/article/details/81084145
今日推荐