FME 2012专有的新增转换器—第一讲

原文发布时间:2012-05-07

翻译:小新

翻译文章链接:https://blog.safe.com/2012/04/fmeevangelist102/

FME用户,你们好!

每当我们发布一个新版本FME时,通常会包含一堆新的转换器。很多时候,只要您了解了这些转换器,就会彻底改变您使用FME的方法、习惯。 

因此,我下面的两个邮件将确保你没有这样的借口!

我将介绍6个新的转换器,按字母顺序进行。因此我们以AttributeExpressionRenamer,RasterToPolygonCoercer以及SliverRemover开始,然后集中于2012中新增的三个一体的XML转换器(XMLFlattener, XMLSampleGenerator, XMLUpdater),以此来结束今天的介绍。

顺便说一下,该邮件恰逢FME2012世界之旅在北美的第一天。在那边我们有两个小组分别与用户和博主们交流有关2012中新增的内容。如果你有机会加入他们,将是非常值得做的事情。

在未来的几周还有大量来自全球的事情。


AttributeExpressionRenamer

已经有一个叫做AttributeExpressionRemover的转换器,可以根据查找的字符串删除属性。但是,更多用户需要的是对属性重命名而不是删除。这个新转换器不只是通过一个表达式重命名属性!它具有很多方式。

首先,你不用输入一个表达式。如果您想选择所有属性,有一个简单的选项就可以完成这个事情:


其次,内置了很多标准的重命名方法:

    

也许最有用的选项是列表最后的—Change Case,我们来看一下:

当你从一个支持字母小写的格式读取数据,然后写入到只支持字母大写的格式中时,多属性的大小写改变功能是非常有用的,反之亦然。

在那样的情况下,这个转换器将为你节约大量有关映射和属性大小写转换的工作,像这样:


Case Change(大小写变换)选项允许你转换为大写(UPPERCASE),小写(lowercase),Title case或Full Title Case。另外重要的是不要将这个转换器与CaseChanger混淆。CaseChanger是改变属性值的大小写,而不是属性名称。


其他关键的重命名选项是prefixes(前缀) 和 suffixes(后缀),来看看这种情况:


这里我读取一个来自FME 培训教程中的XML数据集。由于它嵌套在一个叫做Course的要素路径中,因此读取进来的数据有一个字符串为“Course”的前缀。实际上我并不需要这个前缀,因此使用AttributeExpressionRenamer将它移除


就像可以移除一个前缀(prefix)一样,理所当然的,可以根据需要增加一个新的前缀(prefix),或者增加/移除后缀(suffixes)。我能想到很多需要做这些操作的情况。


除了这些,通常还有关于转换器命名建议的选项:根据一个正则表达式重命名属性:


这里,我使用了上面的大小写变换的例子,并使用了另一个AttributeExpressionRenamer,用于删除属性名称中的所有下划线字符。

记住:这个转换器的关键在于不用手动设置需要重命名的属性—而是通过“动态”的方式将它应用到每个属性。


RasterToPolygonCoercer

如果你记忆比较好,你应该会记得之前有一篇关于使用RasterCellCoercer 转换器获得较好效果的博客文章 和 FMEpedia 例子 :


该想法是使用一个栅格DEM并将它转为一系列矢量多边形,每个级别的高程生成一个多边形。RasterCellCoercer 为每个单元格子生成一个正方形,然后在工作空间中使用一个Dissolver 转换器,并使用group-by,将高程相同的单元格子合并在一起。

 新的RasterToPolygonCoercer 不仅仅能进行良好的合并操作,它还是一种更快的方式方法。 如果你点击FMEpedia上的链接,你会发现如果没有将栅格重采样到较大分辨率的情况,完成转换需要6个多小时。

使用RasterToPolygonCoercer 进行替换,只需94秒就能得到同样的结果,相比之前的速度提高了200倍。


感谢我们的栅格开发小组将速度提高了这么多。

该转换器的另一个类似应用是从这样的栅格专题地图中提取要素:



最直接的任务是将这个公园要素转为多边形,像这样:


我想你还可以使用同样的方法,根据栅格单元的值,提取道路网,或游泳池,植被区域,建筑物等。 


SliverRemover

SliverRemover 是专门为那些棘手的情况设计的,即你发现在本应该连续的多边形图层中存在缝隙,如:


在这种情况下,捕捉不会起作用,它不仅无法正常工作,还会在输出中留下小块的格式错误的几何对象;因此SliverRemover 是一个很好的解决办法。它不是一个将两者混为一谈的工具,但是它使我们更加接近想要的目标。

如果你从www.safe.com/fmedata中下载FMEData数据集,并打开Parks(公园)数据集:


…你会看到在公园应该接边的地方存在难看的缝隙和重叠:



…但是SliverRemover可以在任何时候使它们变得正确:


上面的应该是多边形,在这里,为了看起来清晰明了,我关闭了面填充。

这个转换器有四种方法修复缝隙(并不是文档中说的六种)。真正的问题在于如何为多边形分配这些裂缝,我觉得应该采用平面分区的方法。

Longest Boundary 方法产生的结果最好,因为它是一个平滑的处理过程。但是如果你需要确保一个要素保存在另一个要素上,你需要设置一个优先值。 

还有一个随机模式,虽然我不确定一个GIS数据管理员是否会使用叫做“random(随机)”的工具,但它可能会工作!不过如果你需要修复裂缝,然后并不关心是如何修复的,那这个方法和其他任何方法一样都非常好。 

这个转换器的缺点是不会处理一个多边形的边缘开口:


…但是有其他的方法来处理这种情况(例如,Snapper是一个很好的选择)。

另外顺便说下,要素尺寸和3D部分都可以通过该转换器,因为我们非常努力的确保我们没有丢失这些信息。


好了,这就是我要强调的6个转换器中的3个。在我的下一个邮件中,我将做一个小型的XML专刊,主要介绍XMLFlattener,XMLSampleCreator和 XMLUpdater三个转换器。

别忘记了,只有在FME2012或其他更新的版本中才能使用它们。 你可以通过www.safe.com/downloads这里对软件升级(目前可以更新到2012-sp2)。

再见!






















猜你喜欢

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