FME Desktop培训教程 第三章 数据转换操作二.docx

上传人:b****8 文档编号:9910107 上传时间:2023-02-07 格式:DOCX 页数:17 大小:690.99KB
下载 相关 举报
FME Desktop培训教程 第三章 数据转换操作二.docx_第1页
第1页 / 共17页
FME Desktop培训教程 第三章 数据转换操作二.docx_第2页
第2页 / 共17页
FME Desktop培训教程 第三章 数据转换操作二.docx_第3页
第3页 / 共17页
FME Desktop培训教程 第三章 数据转换操作二.docx_第4页
第4页 / 共17页
FME Desktop培训教程 第三章 数据转换操作二.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

FME Desktop培训教程 第三章 数据转换操作二.docx

《FME Desktop培训教程 第三章 数据转换操作二.docx》由会员分享,可在线阅读,更多相关《FME Desktop培训教程 第三章 数据转换操作二.docx(17页珍藏版)》请在冰豆网上搜索。

FME Desktop培训教程 第三章 数据转换操作二.docx

FMEDesktop培训教程第三章数据转换操作二

连续地使用函数

和电流中的组件非常相似,我们可以将连续的函数结合起来使用,这样一系列函数就可以对数据产生。

虽然可以在FME中获取大量的函数,但是通常用户会发现,单一的函数并不能满足要求。

这种情况下,你就需要将多个函数结合起来使用。

FME的一个重要概念就是,将一连串函数图形化地显示整个工作流。

 上图:

这个例子中,DuplicateRemover函数用来删除多余的多边形要素。

在一个共有边界内,Dissolver函数将每个唯一的多边形与它的相邻多边形融合起来。

最后,每一个整合的区域就会从Counter函数中获取一个ID名。

例2:

基本的函数使用

在例1中已经使用了一些基本函数,来为公园测量创建转换工作空间,现在,我们会使用FME函数来测量那个公园的面积,并且计算平均值。

1)启动Workbench.

打开例1中的工作空间,或则会重新创建一个工作看空间。

2)添加AreaCalculator函数

在函数一栏,放置函数AreaCalculator,双击它,将它放入到工作空间。

点击源要素类别的输出箭头,然后拖动鼠标,将它连接到AreaCalculator函数的INPUT端口。

这时候的工作空间如右图所示:

3)添加StatisticsCalculator函数

与放置AreaCalculator,函数的方法相同,找到并且添加一个StatisticsCalculator函数。

将AreaCalculator的OUTPUT端口连接到StatisticsCalculator.的INPUT端口。

将StatisticsCalculator的输出端口连接到目标GML要素类别。

因为不再需要之前的连接,所有你可以点击连线,同时按键盘上的DELETE键,这样就可以删除它了。

这时你的工作空间如下。

注意,之前的属性映射已经丢失了,但是不要担心,下面我们会进行详细讲解。

 4)检查函数设置

打开AreaCalculator函数的参数对话框,默认设置会将计算值放如到一个叫做_area.的属性中,但是,目标模式显示的是,要创建一个叫做ParkArea的属性,所以就需要改变这个设置,然后创建正确的属性,亦即将_Area更改为parkarea。

打开StatisticsCalculator函数的对话框,对包含面积的属性进行分析,也就是已经重新命名的ParkArea属性,一定要将“PassThroughFeatures?

”设置成YES。

我们需要检查哪些默认设置是用来计算公园的平均面积的。

这个检查有必要吗?

按照要求更改设置,使它符合目标模式。

最保险的操作就是,不要对不需要的StatisticsCalculator属性进行任何设置。

5)重新映射模式

为了完成设置,我们需要恢复最开始的属性模式映射。

注意,我们在函数设置中使用的是正确的属性名,所以只需要映射ParkName和ParkNameAlt;而ParkArea和AverageParkArea应该已经建立了连接。

按照要求,增加StatisticsCalculator的属性列表,进行属性连接

这时你的工作空间经过简单清理后,应如有右图所示。

不要忘记了保存工作空间,因为之后会用到!

6)开始进行转换

按照提示,你会被要求输入输出数据集。

检查转换结果。

查询一个要素就会在属性列表中找到公园的平均面积。

下图:

UniversalViewer中的输出结果。

FeatureCountDisplay–SerialTransformers

现在,我们来看之前数据转换的例子,你注意到了吗?

在完成转换后,每个连接都标记了转换数据的数目。

下图:

之前的例子FeatureCount显示22个要素通过了这两个函数,然后又被输出。

日志窗口会核查编写的要素数目。

FeatureCount显示有多少个要素通过了每个函数。

如果目标数据与要求的数据不一样,这个功能就能帮助分析工作空间,并且提供调试意见参考。

之前的例子显示所有连接上的要素数目相同,但是,但是当你使用一些函数,就可能会影响到要素的数目,例如,DuplicateRemover或2DPointReplacer函数。

下面的例子会详细说明这个问题。

下图:

FeatureCount显示有22个要素进入到了函数DuplicateRemover,但是最终只有18个有唯一的属性值的要素被输出。

提示:

使用工具条中的打开,关闭按键就能够执行FeatureCountDisplay功能。

右图:

FME工具条中的‘DisplayFeatureCounts’按键

 

保存模式映射

一些函数并不是用来进行数据转换,但是却可以帮助在工作空间中,通过模式映射来设置输出数据。

SchemaMappingwithTransformers

虽然这个话题看起来有点偏题,但是它能够解决前面例子中出现的问题,所以值得关注,但是并不推荐使用手动属性映射。

在例2中,出现了一个问题,我们必须要尽力解决:

当你添加一个新的函数到发送的数据流中时,就会丢失掉最开始的属性映射。

当属性列表最小化时,手动属性映射就会成为出现弊端,因为你不能看到丢失掉的连接。

 上图:

当你扩展属性列表时,就能很轻易地查看是否属性映射进行了连接,而一个完整的列表是不能告诉你这些的。

进行属性映射的方法,并不是手动进行连接,而是对属性进行命名或重命名,使之能能符合目标模式。

这项功能能够保准,属性能够自动地发送到目标模式中,例如,你会注意到,ParkArea和AverageParkArea并不需要进行模式映射,这是因为在函数设置中已经自动地设置了与之符合的属性。

当你需要对源属性进行配对时,使用AttributeRenamer(或AttributeCopier)函数来进行转换,这样的话,添加其它函数就不会影响到对属性的映射了。

下图:

用AttributeCopier来取代手动属性映射。

 

使用FMEWorkbench来检查数据

除此“RoutetoVisualizer”之外,FMEworkbench能够从单个的函数发送数据到FMEViewer。

ConnectVisualizer

Visualizer是一个Workbench函数,拥有它自己独特的形状和格式,输入其中的数据能够直接发送到FMEUniversalViewer中。

Visualizer不同于RedirecttoVisualizer设置,它适用于转换过程的任何一个阶段,并且不会阻止输出数据到写入模块。

而且,你促使用户更加细心地选择要查看哪些要素。

下图:

这里,在选择数据后,,就直接被发送到Visualizer中。

 

备注:

甚至,你可以将Visualizer连接到源要素类别,在用FME读取数据后,就可以直接查看它们了。

放置一个Visualizer

我们有许多方法来放置一个Visualizer函数。

FromtheTransformerGallery

Visualizer–和其它函数一样,会出现在函数列中(如下图左),用相同的方法就能将它放置,连接到工作空间。

 

                            

FromtheMenubar

使用Workbench菜单条(如上图右)的Insert>Visualizer,也能够放置Visualizer。

FromtheToolbar

因为这个函数要经常使用到,所以在Workbench菜单条中可以找到一个特殊的图标(如右图)。

IntheCanvas

可能使用Visualizer的最简单方法就是,右击输出端口,然后选择‘ConnectVisualizer’设置

左图:

和之前的例子相同,用户需要将Scaler中的数据输出到FMEUniversalViewer。

右击“SCALED”,然后选择‘ConnectVisualizer’。

下图:

FME添加Visualizer,来连接Scaler函数。

现在,被剪辑的数据就能直接发送到FMEUniversalViewer中来进行检查。

注意是FME是怎样使用函数和输出端口名来自动命名Visualizer的。

 上图:

查看器中的DisplayControlWindow。

观察,要素类别是怎样命名的,这与工作空间中的Visualizer方式一样。

当使用多个Visualizers时,这个方式能帮助用户区分数据。

MrE.Dict,(AttorneyofFMELaw)曾说过…

“按照培训课程的4a-(27)安排,你需要重新打开例2中的工作空间,然后添加Visualizer函数到每一个函数对象上,来练习使用这项功能。

 

 快速连接

它是将不同的工作空间中的对象连接在一起的新方法。

什么是快速连接?

它指的用一种方法,将函数和要素类别连接起来,但是不需要在它们之间划线,你要做的就是点击正确的输入和输出端口。

下图:

点击输出端口,将它变为蓝色:

下图:

点击这个端口,变成粉色,光标也会改变形状:

下图:

点击一个输入端口,这个端口就会变成蓝色:

 下图:

点击端口,连接就完成了:

什么时候使用快速连接

当你需要对一个很大的工作空间中相隔很远的两个实物进行连接时,快速连接就是最好的选择。

如果不使用快速连接,你就必须将这两个实物放大到能看到的尺寸,这样的话,进行连接就会比较困难。

而使用快速连接,这两个实物就不需要同时显示在屏幕中,你可以点击第一个端口,然后使用窗口打包工具移到下一个窗口。

 

平行地使用函数

FMEWorkbench允许多重数据流,而每个数据流都会各自流经自己的函数。

FME的另一个重要功能就是,在工作流过程中将数据分拆为单独的数据流,或者是将不同的数据流整合为一个单一的数据流。

下图:

这个例子中,使用GeometryFilter函数将数据分拆为两种类别的数据流—点类和线类。

 这样,就能够分别地对它们进行处理。

然后,再将这两种数据流合并为一个。

一定要记住,用这种方法分拆数据流会产生两份数据,其中一个副本会经过每个数据流。

 

例3:

并行使用基本函数

Example2使用AreaCalculator函数来测量公园面积,现在,按照要求我们要添加公园名称,对面积要素进行标记。

使用LabelPointReplacer函数,FME就能进行这项操作。

1)启动Workbench.

打开例2中的工作空间,或者再重新创建一个。

2)放置一个LabelPointReplacer函数

放置一个LabelPointReplacer函数。

使用快速连接,将源要素类别和LabelPointReplacerINPUT端口进行连接(如下图)

3)创建新的目标要素类别

右击目标要素类别,选择“Duplicate”,就能够在输出数据集中创建一个新的要素类别(层)

使用快速连接,将LabelPointReplacer连接到这个新的要素类别,你可以放心,不需要对这个新的连接进行任何属性映射。

4)检查函数设置

打开LabelPointReplacer函数的设置对话框

选择“name”属性为Label属性名,将LabelHeight设置为500(尺)

LabelHeight既可以是一个属性,也可以是一个常用值—其实可以输入字符/数据作为常用值,如果你不明白这点的话,就可能对LabelHeight感到很困惑。

工作空间如下图所示。

同样的,不要忘记了保存工作空间,因为之后要用到它。

5)开始转换

检查输出,如下图所示。

总结

在例3中,你从同一个输出端口(或源数据集)中,将数据分拆为两个数据流,一组完整的要素就会流经这两个数据流,也就是说,你同时处理了源数据和它的副本。

FeatureCountDisplay–平行的函数

前面例子中,在处理过程的最后,你是否注意到了featurecounts函数?

记住,FeatureCountDisplay显示的是流经了多少个要素。

 Above:

前面例子中,FeatureCount显示的是,当我们将数据分拆为两个单独的数据流时,就会额外产生一个数据副本,也就是说,22格要素流经了数据流,而不是11个要素

虽然前面的例子展示了,用户怎样自己分拆数据,但是也可以使用一些函数来分拆数据,并且,并非所以函数都会产生一个要素副本

下图:

22个要素流入DuplicateRemover,22个要素流出这个函数,但是,输出要素被分为两流,一个是4格要素,一个是18个要素

FeatureCount显示了在工作空间中分拆要素会产生的结果,同样的,它也可以显示合并要素流所产生的结果。

下图:

尝试将一组空间要素和相关的数据库记录结合起来。

 这个例子中,featurecounts表示,两个数据流的合流并不会产生合并。

1同一个源数据流中的10个要素只是简单地合并为10个要素流,也就是说,产生20个输出要素,10个空间和10个非空间要素。

下图:

使用FeatureMerger函数能更好地将空间和非空间数据结合起来。

在这个例子中,将每个数据流中的10个要素融合,然后输出10个要素。

 

函数Drag-and-Insert

用户有必要了解怎样手工地连接不同的函数,同样地,也需要了解快捷方式,来更快地使用。

DoctorWorkbench说过…

“如果你看到了一些粉红色的点,不要担心!

这并不表示出现了问题,而是FME的拖拽和插入功能,以便更快地放置函数!

 下图:

在这里,用户将函数AttributeCopier插入到管道中。

 当你开始拖动一个函数时,这项功能就会自动开始运行,并且会在函数的左手边出现一个粉红色的小点。

下图:

现在用户开始拖动函数,然后就出现了粉红色的小点。

 当将函数拖动到一个位置,粉红色的点就会覆盖已有的连线,这样就会突出这条连线,这表示,你准备将函数插入这条线上的任何一个位置。

下图:

用户在已有连线上拖动粉红色的点,这条线就会自己变粗。

 松开鼠标,函数就被插入了这个位置,并且自动进行连接

下图:

用户将函数插入到了管道中。

 插入多个端口的函数

当你打算拖动和插入的函数只有一个单一的输入和输出端口时,FME就会自动地将它们进行连接。

但是,许多函数不止有一个单一的输入或输出端口,所以就不能进行自动连接,这种情况下,按照提示,就需要用户在对话框中进行连接设置。

右图:

在这里,要插入的函数是Clipper。

 它有两个输入端口和四个输出端口。

下图:

将Clipper函数拖到一个位置,FME就会打开一个对话框,提示用户选择要连接的输入和输出端口。

 下图:

用户点击OK键,就会对选择的端口进行连接。

 对要素类别进行拖动和连接

FME2009有一个新的功能,就是拖动,连接要素类别。

通过这个功能,你就可以直接将要素类别附在函数上,而不是将函数附在要素类之上。

这样做并不是在大多数情况下都有特别的好处,但是许多用户已经习惯了使用Drag-and-Insert函数,同样地,他们也自动对要素类别尝试拖动和连接!

现在,你就能使用它了!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1