fme desktop培训教程 第三章 数据转换操作(三).docx 下载本文

内容发布更新时间 : 2024/6/16 2:19:53星期一 下面是文章的全部内容请认真阅读。

基于组和基于要素的转换

FME函数使用下面两种基本方法中一种对数据进行转换—基于要素或基于组。

基于要素的转换

在这种转换方法中,一个函数在要素的基础上转换数据。一次只处理一个单一的要素,并且转换结果不会影响到其它要素的转换结果。

一般来说,相同数目的要素来自输入的函数。 下面是有关基于要素的转换例子…

? Measurements ——一次只计算一个要素的长度和面积,并且,不会影响到其它要素的长度和面积。 ? Line Generalization ——依次缩编每个线性要素,并且不必参考周围的要素。

? Centre of Gravity Calculations ——FME计算一个面积要素的“重心”(地理中心),并且,每个计算计算都是唯一的,不依赖于其他的要素。

上图:重心的计算

对于传统的计算法,一些缩编功能在对一个要素进行处理时,会影响到其它的要素,但是,FME则只会减少点的数目。

基于组的转换

对于这种转换方法,函数会处理一组要素。在进行转换之前,所有的要素就会被合并为一组,并且每个要素都会直接影响到其它要素的转换结果。

使用这种转换方法,转换后函数的要素数目很有可能不同于输入的要素数目。 下面是有关基于组的转换的一些例子…

? Polygon Creation – 当一组点组成一个封闭的形状时,FEM就会创建一个多边形要素。线类要素就会合并,产生一个单一的面类要素。

? Statistics Calculation –StatisticsCalculator为一组要素计算属性的平均值,最大以及最小值。 ? Intersections – 计算一条线上的插入点一定要使用这种方法,这是因为每个输入要素都会影响到输出要素。

上图:插入点的处理

将要素概念/基于组的转换和几何/属性转换结合起来,就能创建一个矩形,来表示每种类型的转换

例如,AreaBuilder就是一个有关基于组,几何转换的函数。 浏览Workbench Transformer Gallery ,就可以找到其他的例子。

进行成组操作

默认地,一个基于组的函数会将所有经过它的要素编成一组,但是,许多情况下,要求有选择地将要素编成组。为了满足这一要求,许多函数都有一个选项—Group-By。

Group-By选项允许对数据的属性进行选择。在开始转换之前,首先将相同属性值得要素归为一组。

上图:使用 LineOnLineOverlayer函数,将大量线性要素进行交叉。选择“name”作为Group-By属性。结果就是,每组中含有相同值“name”的要素被其他组所取代。有用的输出就是,只有同名的线类要素才会相交形成交叉线。

例4:进行成组操作

例1,2,3中已经计算了城市Interopolis中公园的平均面积。使用函数AreaCalculator,平均面积为1,507,766平方尺。

但是,一些人指出,数据中的许多多边形都属于同一个公园—Big Walnut Creek,这些多边形应该被当做一个公园,而不是很多个,现在让我们来解决这个问题… 1) 启动Workbench.

打开例3中的工作空间,或者重新创建一个。 2) 放置一个函数 – Aggregator 将函数Aggregator放置到工作空间中。

点击Aggregator函数,拖动它,直到记号位于源数据和AreaCalculator之间的连线上,这是,连线就会变成粉红色(如下图):

放开鼠标,这时,就将函数插入到工作流中了。 下图:工作空间看上去就是这样的。

3) 检查函数的参数

打开Aggregator 设置对话框,将group-by 属性名改为“name”(如下图)…