FME2014的特点:排列前10的更新转换器(一)

原文发布时间:2014-02-13|

翻译:小新

原文地址:http://blog.safe.com/2014/01/fmeevangelist122/


1月除了是新的一年的开始,通常伴随它到来的还有一系列FME的更新。与往常一样,我们将所有的更新整理为一个“What’s Great”的列表,这次不同的是我们将在博客中发表“What’s Great”的文章,而不再用FMEpedia中的页面来展示,敬请留意。

新的一年通常还伴随新年愿望——在即将到来的一年中,你将如何改变让你的生活变得更好。这里是FME2014排列前10的更新转换器,你一定要使用它们。



    GeometryFilter转换器根据组成数据的几何类型过滤数据。例如,我想从数据流中过滤出点要素,将剩余的线要素输入到AreaBuilder中。目前看起来没有什么问题。

    这个转换器存在的问题(也是该转换器更新的原因)是由于最近的这些FME版本中,FME支持的几何类型数量增加到非常多。一个更好的几何模型当然很好,但是这将导致该转换器具备多个输出端口,这样它自己可能就会占据整个Workbench画布的范围。

    因此在FME2014中,我们更新了这个转换器,默认情况下不会暴露所有的端口。现在你可以通过参数对话框选择你想自动过滤的几何类型。

    例如这里,用户仅仅选择暴露过滤点、线和空几何对象的端口:


提示:你是否注意这里的“collection”端口?我发现它并不等同于聚合(aggregate)。一个集合(collection)是聚合(aggregate),但是集合中的要素具有不同的几何类型(不同类型的,如线和点)。如果一个聚合中只有一种几何类型(同类型的,例如所有都是线),那么它将从Line(线)端口输出。现在明白了吧!


    数据库是存储数据很好的方式,但是往数据库写数据的时候比较复杂。当你只是对数据库表做一些简单的更新操作时,推荐使用FME2014中两个新的转换器:DatabaseUpdaterDatabaseDeleter


     DatabaseUpdater根据匹配列(match column)或WHERE语句的值对整行记录进行更新。DatabaseDeleter使用类型的查找方法删除行。这里使用的语法很简单。使用其他写模块处理复杂的情况,使用这两个转换器处理基本的更新/删除操作。


    除了该版本中处理3D要素的性能得到了极大提高外,我注意到此处重要的更新是多了一个选项,该选项用于修复与多边形边界相接的岛洞,如下:

        

    如果对这样的要素使用GeometryValidator(判断条件为Self Intersection in 2D),这个岛洞将修复为简单的多边形要素,该多边形外边界围绕岛洞构成。众所周知这样的数据仍然存在问题:这里有一个很明显的重复点,但是这种情况会比原始数据好一点。为什么呢?空间数据库允许的几何类型存在差异,重复点可能被认为有效,而相接的岛洞则可能被认为无效。

    提示:进一步的了解请访问这篇博客,它描述了哪些系统中会认为这样的多边形是有效的,哪些系统认为它无效。


    

    这个转换器的改变不大,但是我比较开心,这个改动是我的主意。你应该记得GeometryReplacer是一个可以把描述几何信息的文本或属性转变为真实要素的转换器。例如,如果我通过HTTPFetcher转换器从一个网页上读取数据,该数据中的一个字段存储了用GeoJSON编码的几何信息,然后我可以通过GeometryReplacer提取几何对象。

    比较模糊的说法是:一些用户使用GeometryExtractor提取要素几何信息为FME二进制的形式,这样有了数据备份,之后可以通过GeometryReplacer恢复数据。

    FME2014中该转换器的更新很简单:增加一个删除包含几何信息的原始属性的选项:

        

     这个选项用来移除几何属性非常方便,同时也提醒你非常有必要删除属性。为什么这样说呢?当你使用完该属性后,如果不删除它,FME则会在整个工作空间中都附带这个属性。这样会增加处理时间并消耗大量内存(包含几何信息的属性通常比普通值的属性大很多)。

    总而言之,除非你需要这个属性,否则从FME的性能上来说,建议你不必保留该属性。这个更新会提醒并帮助你删除这样的属性数据。


    从FME 2012开始,FME具备通过字符和计算组合构建参数值的能力,这个能力用法语叫做“Paramétrage de Shelley (设置雪莱)”,是根据Safe公司第一个想到这个主意的开发者命名的。我们估计并不是所有的转换器都需要这个功能——但显然我们这样想错了。在FME2014中我们为其他一系列转换器增加了这个功能:

·         StringSearcher

·         Labeller

·         LabelPointReplacer

·         SectorGenerator

    StringSearcher中可以搜索一个构建字符串值,而不再局限于属性值。例如用户要在要素的坐标系中搜索值“UTM”(使用集成的文本编辑器功能)。当然你还可以搜索一系列串联的属性,或者对一个属性使用字符串功能,例如@UpperCase(@Value(AttributeToSearch))

    

 LabelPointReplacer中增加该功能后,你可以通过文本/算术编辑器设置标注内容和标注高度:

    

 如果你觉得还有其他转换器的参数适合具备这个功能,请通过这里告诉我们。






    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值