FME2016先睹为快:FeatureWriter转换器

原文发布时间:2016/1/7  16:05:38

翻译:小新

原文地址:

http://blog.safe.com/2016/01/fmeevangelist143/?utm_source=twitter&utm_medium=social&utm_campaign=featurewriter-blog

亲爱的FME用户,

         如果在6600万年前,你是一只恐龙正在进行日常的活动,有一天有一个巨大的燃烧着的流星落到附近的时候,你一定会感到很惊讶!

         同样,再过几天,FME2016的发布以及FeatureWriter转换器必定震撼许多FME用户!

         所以我们来看看它到底是什么!

FME历史简介

         1993年(我们也可以说,大约在12万分钟前),FME诞生了。它是一个格式转换工具,有很少数量的读模块和写模块(读写模块的数量一直在增长)。下面的这个图是最早的化石证据!

        当它发展到在读模块和写模块之间加入数据变换时,我们创造了“空间ETL”(提取——变换—加载)这个词来对它进行描述。

         但是,由于读模块和写模块是相对于转换器的独立对象,转换的基因被限制为E-T-L的结构。你不可以使用诸如T-E-T-L-T这样的结构,因为转换器不能使用在读模块之前或者写模块之后。

         所以,FME2011开始包含了一个FeatureReader转换器,这样可以在转换过程中读取数据。而现在,FME2016为我们带来了更重要的转换器:FeatureWriter,它允许在转换过程中写出数据。

什么是FeatureWriter

         你可能也会猜到,FeatureWriter是一个包含写模块所有参数并且可以写出数据的转换器:

 这样最大的好处(如上图)是你可以在写出数据后再执行更多其他的转换器操作。之前你可能需要使用shutdown脚本,或者把多个工作空间链接到一起,现在提供了一个更优的解决办法。

         FeatureWriter转换器的参数对话框如下:

        对话框最上面的部分与添加写模块对话框类似—在这里输入数据格式和输出数据集,同时还可以设置任一具体的参数。在上面的例子中,我们往目录C:\FMEData2016\Output中写出Shapefiles(顺便提一下,你是否注意到我们把“Esri Shape”格式重命名为“EsriShapefile”,与大多数民间GIS的称呼相同)

         对话框中间被分为左右两个部分。左边列出了我们定义的所有要素类列表,我们选择一个进行处理。注意:列表中显示的名称与转换器的输入端口名称相同。这意味着,你可以简单的通过为转换器增加新的连接来添加新的要素类:

     右边则与要素类对话框类似。它具有相同的标签(General,User Attributes,Format Attributes,以及Format Parameters)。这里基本与写模块要素类对话框相同,意味着你可以设置动态参数以及要素类“扇出”。例如这里是user attributes(用户属性)标签:

          动态属性定义在这里特别有用,因为它会动态更新,由此反映它连接了些什么信息。

          对话框的底部处理转换器的输出,关于写出过程的信息:

 这里定义的属性包含写出数据集的名称、写出要素类、以及写出的要素数量。由于我们在写出数据后要做进一步的转换操作,这意味着我们需要了解这些信息。例如,我们可以把要素类列表传递到另一个转换器中进行处理,例如FTPCaller:

          注意上面如何把要素类炸开,然后使用FTPCaller来定义要上传的文件。

                                  

FeatureWriter和FME Server

         FME Server的重点在于自动化,所以解决由于写数据导致中断而无法自动化完成任务时,常用的解决办法是将多个工作空间嵌套在一起(或者使用Python)。基于此,FeatureWriter在Server环境中使用显得比Desktop环境下更加重要。

         另一个自动化的方式是通知(notifications),你也许也能使用到一些。例如,当你发布工作空间到FME Server时,你可以选择把它注册为notification服务,并且设置一个写模块提供发布主题的内容:

 这样的对话框不会让你选择使用FeatureWriter的数据。这是个问题吗?不是!使用FeatureWriter你不需要再这样设置,你只需要在FeatureWriter后加上FMEServerNotifier转换器即可:

 这是一个很好的例子说明我们的工作空间设计将因为FeatureWriter而改变。谢谢De Wet对我提到这点。            

其他的方面

         这个转换器其他一些方面的功能你可能还没有发现。它们是:

Open Folder(打开文件夹)

         数据集参数有一个与写模块中“Open Containing Folder”(打开所在文件夹)相同的选项:

我们将这个功能添加到转换器本身的下拉菜单中,也许会很有用。

Help(帮助)

         在转换器中按F1将打开转换器本身的帮助。如果你想打开格式帮助文档,则在Writer选择栏处点击“i”图标:

 添加要素类

         手动添加新的要素类,使用Feature Types(要素类)窗口中的“New”选项。它等同于菜单中的 Writer(写模块)> Add Feature Typs(添加要素类)。Import(导入)选项在这里等同于Import Feature Types(导入要素类)。我们不需要“copy from Reader”(从读模块复制)的选项,因为你通过画布中连接到读模块要素类来完成。

 Dataset Fanout(要素类扇出)

         要素类扇出与2015的机制相同。数据集扇出现在改变了。例如,如果你想扇出数据集,你可以把数据集路径设置为一个属性值,或者打开文本编辑框根据你的需要创建数据集路径:

 顺便说一句,如果你查看正常写模块中的数据集扇出,你会注意到与上述类似。你不需要设置前缀或后缀、或者文件夹名称—你只需要选择一个属性或者使用文本编辑器进行编辑。

限制

         这个转换器击中了FME工作的核心。这个变化是巨大的,我希望你可以将它用在我们没有考虑到的其他方面。我想说的是这是第一次面世,会有很多使用场景没有考虑到。我能想到的一些受限方面如下:

画布中没有属性列表

FeatureWriter没有方式展开输入端口显示属性列表,因此你不能通过连接线做手动属性映射。开发人员说他们会查看一下这个,具体我也不知道。你可能需要使用新的转换器AttributeManager来做这个操作。顺便说一句,AttributeManager将使用FeatureWriter的输出属性名称。

大小写匹配功能

这可能是最大的问题。一些格式的写模块会自动把属性名称转换为全大写或全小写的模式。FeatureWriter不支持这点。例如,如果我将属性ParkName写入到Oracle中,原本期望的名称是PARKNAME,写模块会自动调整,而FeatureWriter则不会。PARKNAME最终将是空值。

你可以在FeatureWriter之前使用BulkAttributeRenamer转换器对你的属性名称进行处理,但是我的开发团队的建议是:现在,你最好避免在FeatureWriter中使用这些格式。主要的格式有:PostGIS、Oracle、SDE30。如果你使用了这些格式,仔细检查确认你是否得到你所需要的。

写模块重定向

写模块重定向对FeatureWriter不起作用。虽然日志中提示数据被重定向了,但是FeatureWriter还是会写出!

      基本上这个转换器现在还有一些缺点。最开始使用时,我认为它可能存在很多问题,实际上只是我的想法。它可能完全改变我们如何使用FME 。如果将来我发现了更多它的使用限制,我将更新到这篇文章中。

         同时也记住你不是一定要使用它!你也可以继续使用正常的写模块写数据。

         最后我认为所有的用户迟早都会接受这个转换器因为……

影响及展望……

         就像消灭恐龙的流星,这个转换器将会有巨大的影响力!

         首先,你可以封装整个转换(提取、变换、加载)到转换器中。事实上,在以后的FME版本中,我们删除所有的读模块和写模块,而只保留FeatureReader和FeatureWriter转换器的情况是不太可能的!

         生活需要简单。看看菜单栏中的写模块菜单,想象下在单一的FeatureWriter对话框中,它是多么简单。

         当然,读模块和写模块的灭绝对我来说是一个恐怖的想法!但是,恐龙的死亡—就像维基百科说的——“同样也带来了进化的机会”。在这里也会发生同样的事情。你的工作空间很有可能适应新的功能,并能以你从未想过的方式发展。

         例如,你会用一个包含FeatureWriter的自定义转换器中来做什么呢?我们认为它可能是一个“自定义写模块”的基础,以及自定义格式(.fds文件)。它将为处理web格式带来很大的帮助,所以让我们在不久的将来创造这个能力。

猜你喜欢

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