1、FME Desktop培训教程 第三章 数据转换操作二连续地使用函数和电流中的组件非常相似,我们可以将连续的函数结合起来使用,这样一系列函数就可以对数据产生。虽然可以在FME中获取大量的函数,但是通常用户会发现,单一的函数并不能满足要求。这种情况下,你就需要将多个函数结合起来使用。FME的一个重要概念就是,将一连串函数图形化地显示整个工作流。上图:这个例子中,DuplicateRemover函数用来删除多余的多边形要素。在一个共有边界内,Dissolver函数将每个唯一的多边形与它的相邻多边形融合起来。最后,每一个整合的区域就会从Counter函数中获取一个ID名。例2:基本的函数使用在例1中
2、已经使用了一些基本函数,来为公园测量创建转换工作空间,现在,我们会使用FME函数来测量那个公园的面积,并且计算平均值。1) 启动Workbench.打开例1中的工作空间,或则会重新创建一个工作看空间。2) 添加AreaCalculator 函数在函数一栏,放置函数AreaCalculator,双击它,将它放入到工作空间。点击源要素类别的输出箭头,然后拖动鼠标,将它连接到AreaCalculator函数的INPUT端口。这时候的工作空间如右图所示:3) 添加StatisticsCalculator 函数与放置AreaCalculator,函数的方法相同,找到并且添加一个StatisticsCal
3、culator函数。将AreaCalculator的OUTPUT端口连接到StatisticsCalculator.的INPUT端口。将StatisticsCalculator的输出端口连接到目标GML要素类别。因为不再需要之前的连接,所有你可以点击连线,同时按键盘上的DELETE键,这样就可以删除它了。这时你的工作空间如下。注意,之前的属性映射已经丢失了,但是不要担心,下面我们会进行详细讲解。4) 检查函数设置打开AreaCalculator 函数的参数对话框,默认设置会将计算值放如到一个叫做_area.的属性中,但是,目标模式显示的是,要创建一个叫做ParkArea的属性,所以就需要改变这
4、个设置,然后创建正确的属性,亦即将_Area更改为 parkarea。打开StatisticsCalculator 函数的对话框,对包含面积的属性进行分析,也就是已经重新命名的ParkArea属性,一定要将“Pass Through Features?”设置成YES。我们需要检查哪些默认设置是用来计算公园的平均面积的。这个检查有必要吗?按照要求更改设置,使它符合目标模式。最保险的操作就是,不要对不需要的StatisticsCalculator属性进行任何设置。5) 重新映射模式为了完成设置,我们需要恢复最开始的属性模式映射。注意,我们在函数设置中使用的是正确的属性名,所以只需要映射ParkNa
5、me和ParkNameAlt;而ParkArea和AverageParkArea应该已经建立了连接。按照要求,增加StatisticsCalculator的属性列表,进行属性连接这时你的工作空间经过简单清理后,应如有右图所示。不要忘记了保存工作空间,因为之后会用到!6) 开始进行转换按照提示,你会被要求输入输出数据集。检查转换结果。查询一个要素就会在属性列表中找到公园的平均面积。下图:Universal Viewer中的输出结果。Feature Count Display Serial Transformers现在,我们来看之前数据转换的例子,你注意到了吗?在完成转换后,每个连接都标记了转换数
6、据的数目。下图:之前的例子Feature Count显示22个要素通过了这两个函数,然后又被输出。日志窗口会核查编写的要素数目。Feature Count显示有多少个要素通过了每个函数。如果目标数据与要求的数据不一样,这个功能就能帮助分析工作空间,并且提供调试意见参考。之前的例子显示所有连接上的要素数目相同,但是,但是当你使用一些函数,就可能会影响到要素的数目,例如,DuplicateRemover或2DPointReplacer函数。下面的例子会详细说明这个问题。下图:Feature Count显示有22个要素进入到了函数DuplicateRemover,但是最终只有18个有唯一的属性值的要
7、素被输出。提示:使用工具条中的打开,关闭按键就能够执行Feature Count Display功能。右图: FME 工具条中的Display Feature Counts按键保存模式映射一些函数并不是用来进行数据转换,但是却可以帮助在工作空间中,通过模式映射来设置输出数据。Schema Mapping with Transformers虽然这个话题看起来有点偏题,但是它能够解决前面例子中出现的问题,所以值得关注,但是并不推荐使用手动属性映射。在例2中,出现了一个问题,我们必须要尽力解决:当你添加一个新的函数到发送的数据流中时,就会丢失掉最开始的属性映射。当属性列表最小化时,手动属性映射就会成
8、为出现弊端,因为你不能看到丢失掉的连接。上图:当你扩展属性列表时,就能很轻易地查看是否属性映射进行了连接,而一个完整的列表是不能告诉你这些的。进行属性映射的方法,并不是手动进行连接,而是对属性进行命名或重命名,使之能能符合目标模式。这项功能能够保准,属性能够自动地发送到目标模式中,例如,你会注意到, ParkArea和AverageParkArea并不需要进行模式映射,这是因为在函数设置中已经自动地设置了与之符合的属性。当你需要对源属性进行配对时,使用AttributeRenamer(或AttributeCopier)函数来进行转换,这样的话,添加其它函数就不会影响到对属性的映射了。下图:用A
9、ttributeCopier来取代手动属性映射。 使用FME Workbench来检查数据除此“Route to Visualizer”之外,FME workbench能够从单个的函数发送数据到FME Viewer。Connect VisualizerVisualizer 是一个Workbench函数,拥有它自己独特的形状和格式,输入其中的数据能够直接发送到FME Universal Viewer中。Visualizer 不同于Redirect to Visualizer设置,它适用于转换过程的任何一个阶段,并且不会阻止输出数据到写入模块。而且,你促使用户更加细心地选择要查看哪些要素。下图:这
10、里,在选择数据后,就直接被发送到Visualizer中。备注:甚至,你可以将Visualizer连接到源要素类别,在用FME读取数据后,就可以直接查看它们了。放置一个Visualizer我们有许多方法来放置一个Visualizer函数。From the Transformer GalleryVisualizer 和其它函数一样,会出现在函数列中(如下图左),用相同的方法就能将它放置,连接到工作空间。 From the Menubar使用Workbench菜单条(如上图右)的Insert Visualizer ,也能够放置Visualizer。From the Toolbar因为这个函数要经常使
11、用到,所以在Workbench菜单条中可以找到一个特殊的图标(如右图)。In the Canvas可能使用Visualizer的最简单方法就是,右击输出端口,然后选择Connect Visualizer设置左图:和之前的例子相同,用户需要将Scaler中的数据输出到FME Universal Viewer。右击“SCALED”,然后选择Connect Visualizer。下图:FME添加Visualizer,来连接Scaler函数。现在,被剪辑的数据就能直接发送到FME Universal Viewer中来进行检查。注意是FME是怎样使用函数和输出端口名来自动命名Visualizer的。上图
12、:查看器中的 Display Control Window 。观察,要素类别是怎样命名的,这与工作空间中的Visualizer方式一样。当使用多个Visualizers时,这个方式能帮助用户区分数据。Mr E. Dict, (Attorney of FME Law) 曾说过“按照培训课程的4a-(27)安排,你需要重新打开例2中的工作空间,然后添加Visualizer函数到每一个函数对象上,来练习使用这项功能。”快速连接它是将不同的工作空间中的对象连接在一起的新方法。什么是快速连接?它指的用一种方法,将函数和要素类别连接起来,但是不需要在它们之间划线,你要做的就是点击正确的输入和输出端口。下图
13、:点击输出端口,将它变为蓝色:下图:点击这个端口,变成粉色,光标也会改变形状:下图:点击一个输入端口,这个端口就会变成蓝色:下图:点击端口,连接就完成了:什么时候使用快速连接当你需要对一个很大的工作空间中相隔很远的两个实物进行连接时,快速连接就是最好的选择。如果不使用快速连接,你就必须将这两个实物放大到能看到的尺寸,这样的话,进行连接就会比较困难。而使用快速连接,这两个实物就不需要同时显示在屏幕中,你可以点击第一个端口,然后使用窗口打包工具移到下一个窗口。平行地使用函数FME Workbench 允许多重数据流,而每个数据流都会各自流经自己的函数。FME的另一个重要功能就是,在工作流过程中将数
14、据分拆为单独的数据流,或者是将不同的数据流整合为一个单一的数据流。下图:这个例子中,使用GeometryFilter函数将数据分拆为两种类别的数据流点类和线类。这样,就能够分别地对它们进行处理。然后,再将这两种数据流合并为一个。一定要记住,用这种方法分拆数据流会产生两份数据,其中一个副本会经过每个数据流。例3:并行使用基本函数Example 2 使用AreaCalculator函数来测量公园面积,现在,按照要求我们要添加公园名称,对面积要素进行标记。使用 LabelPointReplacer函数,FME就能进行这项操作。1) 启动 Workbench.打开例2中的工作空间,或者再重新创建一个。
15、2) 放置一个LabelPointReplacer 函数放置一个LabelPointReplacer 函数。使用快速连接,将源要素类别和LabelPointReplacer INPUT端口进行连接(如下图)3) 创建新的目标要素类别右击目标要素类别,选择“Duplicate”,就能够在输出数据集中创建一个新的要素类别(层)使用快速连接,将LabelPointReplacer连接到这个新的要素类别,你可以放心,不需要对这个新的连接进行任何属性映射。4) 检查函数设置打开 LabelPointReplacer 函数的设置对话框选择“name”属性为Label属性名,将Label Height设置为
16、500(尺)Label Height既可以是一个属性,也可以是一个常用值其实可以输入字符/数据作为常用值,如果你不明白这点的话,就可能对Label Height感到很困惑。工作空间如下图所示。同样的,不要忘记了保存工作空间,因为之后要用到它。5) 开始转换检查输出,如下图所示。总结在例3中,你从同一个输出端口(或源数据集)中,将数据分拆为两个数据流,一组完整的要素就会流经这两个数据流,也就是说,你同时处理了源数据和它的副本。Feature Count Display 平行的函数前面例子中,在处理过程的最后,你是否注意到了feature counts函数?记住,Feature Count Dis
17、play显示的是流经了多少个要素。Above: 前面例子中,Feature Count显示的是,当我们将数据分拆为两个单独的数据流时,就会额外产生一个数据副本,也就是说,22格要素流经了数据流,而不是11个要素虽然前面的例子展示了,用户怎样自己分拆数据,但是也可以使用一些函数来分拆数据,并且,并非所以函数都会产生一个要素副本下图:22个要素流入DuplicateRemover,22个要素流出这个函数,但是,输出要素被分为两流,一个是4格要素,一个是18个要素Feature Count显示了在工作空间中分拆要素会产生的结果,同样的,它也可以显示合并要素流所产生的结果。下图:尝试将一组空间要素和相
18、关的数据库记录结合起来。这个例子中,feature counts表示,两个数据流的合流并不会产生合并。1同一个源数据流中的10个要素只是简单地合并为10个要素流,也就是说,产生20个输出要素,10个空间和10个非空间要素。下图:使用FeatureMerger函数能更好地将空间和非空间数据结合起来。在这个例子中,将每个数据流中的10个要素融合,然后输出10个要素。函数Drag-and-Insert用户有必要了解怎样手工地连接不同的函数,同样地,也需要了解快捷方式,来更快地使用。Doctor Workbench 说过“如果你看到了一些粉红色的点,不要担心!这并不表示出现了问题,而是FME的拖拽和插
19、入功能,以便更快地放置函数!”下图:在这里,用户将函数AttributeCopier插入到管道中。当你开始拖动一个函数时,这项功能就会自动开始运行,并且会在函数的左手边出现一个粉红色的小点。下图:现在用户开始拖动函数,然后就出现了粉红色的小点。当将函数拖动到一个位置,粉红色的点就会覆盖已有的连线,这样就会突出这条连线,这表示,你准备将函数插入这条线上的任何一个位置。下图:用户在已有连线上拖动粉红色的点,这条线就会自己变粗。松开鼠标,函数就被插入了这个位置,并且自动进行连接下图:用户将函数插入到了管道中。插入多个端口的函数当你打算拖动和插入的函数只有一个单一的输入和输出端口时,FME就会自动地将
20、它们进行连接。但是,许多函数不止有一个单一的输入或输出端口,所以就不能进行自动连接,这种情况下,按照提示,就需要用户在对话框中进行连接设置。右图:在这里,要插入的函数是Clipper。它有两个输入端口和四个输出端口。下图:将Clipper函数拖到一个位置,FME就会打开一个对话框,提示用户选择要连接的输入和输出端口。下图:用户点击OK键,就会对选择的端口进行连接。对要素类别进行拖动和连接FME 2009 有一个新的功能,就是拖动,连接要素类别。通过这个功能,你就可以直接将要素类别附在函数上,而不是将函数附在要素类之上。这样做并不是在大多数情况下都有特别的好处,但是许多用户已经习惯了使用Drag-and-Insert函数,同样地,他们也自动对要素类别尝试拖动和连接!现在,你就能使用它了!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1