基于组和基于要素的转换FME函数使用下面两种基本方法中一种对数据进行转换—基于要素或基于组。基于要素的转换在这种转换方法中,一个函数在要素的基础上转换数据。一次只处理一个单一的要素,并且转换结果不会影响到其它要素的转换结果。一般来说,相同数目的要素来自输入的函数。下面是有关基于要素的转换例子…?Measurements——一次只计算一个要素的长度和面积,并且,不会影响到其它要素的长度和面积。?LineGeneralization——依次缩编每个线性要素,并且不必参考周围的要素。?CentreofGravityCalculations——FME计算一个面积要素的“重心”(地理中心),并且,每个计算计算都是唯一的,不依赖于其他的要素。上图:重心的计算对于传统的计算法,一些缩编功能在对一个要素进行处理时,会影响到其它的要素,但是,FME则只会减少点的数目。基于组的转换对于这种转换方法,函数会处理一组要素。在进行转换之前,所有的要素就会被合并为一组,并且每个要素都会直接影响到其它要素的转换结果。使用这种转换方法,转换后函数的要素数目很有可能不同于输入的要素数目。下面是有关基于组的转换的一些例子…?PolygonCreation–当一组点组成一个封闭的形状时,FEM就会创建一个多边形要素。线类要素就会合并,产生一个单一的面类要素。?StatisticsCalculation–StatisticsCalculator为一组要素计算属性的平均值,最大以及最小值。?Intersections–计算一条线上的插入点一定要使用这种方法,这是因为每个输入要素都会影响到输出要素。上图:插入点的处理将要素概念/基于组的转换和几何/属性转换结合起来,就能创建一个矩形,来表示每种类型的转换例如,AreaBuilder就是一个有关基于组,几何转换的函数。浏览WorkbenchTransformerGallery,就可以找到其他的例子。进行成组操作默认地,一个基于组的函数会将所有经过它的要素编成一组,但是,许多情况下,要求有选择地将要素编成组。为了满足这一要求,许多函数都有一个选项—Group-By。Group-By选项允许对数据的属性进行选择。在开始转换之前,首先将相同属性值得要素归为一组。上图:使用LineOnLineOverlayer函数,将大量线性要素进行交叉。选择“name”作为Group-By属性。结果就是,每组中含有相同值“name”的要素被其他组所取代。有用的输出就是,只有同名的线类要素才会相交形成交叉线。例4:进行成组操作例1,2,3中已经计算了城市Interopolis中公园的平均面积。使用函数AreaCalculator,平均面积为1,507,766平方尺。但是,一些人指出,数据中的许多多边形都属于同一个公园—BigWalnutCreek,这些多边形应该被当做一个公园,而不是很多个,现在让我们来解决这个问题…1)启动Workbench.打开例3中的工作空间,或者重新创建一个。2)放置一个函数–Aggregator将函数Aggregator放置到工作空间中。点击Aggregator函数,拖动它,直到记号位于源数据和AreaCalculator之间的连线上,这是,连线就会变成粉红色(如下图):放开鼠标,这时,就将函数插入到工作流中了。下图:工作空间看上去就是这样的。3)检查函数的参数打开Aggregator设置对话框,将group-by属性名改为“name”(如下图)…4)运行工作空间保存,并且运行工作空间。如果公园的数量更少,但是总面积相同,平均值(_mean)就应该更大。之前的值为1507766平方英尺,那么现在呢?5)测试问题OK–现在是时候来检查你学到了什么!为什么我们使用Aggregator函数,而不是StatisticsCalculat中的成组选项呢?InteropGeek68说过…“一些基于组的函数能够改善性能,而函数Aggregator就是其中的一个。如果你已经知道数据是被归为一组的,那么就可以将“InputisOrderedbyGroup”设置为”YES”,来查看其表现。Clipper和NeighborFinder函数也有相同的设置!”坐标系转换为了在地球表面将空间数据定位,大多数的空间数据都和特定的坐标系相关。坐标系基础FME处理的每个要素,实际上都有坐标系,例如,FME就能随时知道要素是属于哪个坐标系的。当我们读取属于不同坐标系的多个数据集时,就不会感到困惑了。注意:一些用户将数据的这种位置叫做“投影”,事实上,它只是坐标系的一部分。一个准确的坐标系定义包括投影,大地水准面,参考椭球体,单位,有时候还包括象限。坐标系设置FME中的每个源读模块和写模块都有设有一个坐标系,这个坐标系被设置在Workbench的导航方框中下图:这里,源坐标系和目标坐标系分别被定义为TX83-CF,UTM8313F.当进行转换时,以不同的方式处理源坐标系和目标坐标系,在转换过程的结尾,FME会对数据进行结构重构,这样就能将输出结果放入正确的位置坐标系的自动检测一些数据本身包含它的坐标系的相关信息,形状格式就是一个例子。可以对FME进行设置,这样就能自动地检测任何相关的信息了。下图:因为源坐标系设置成notset,所以FME会试着从源数据集中寻找坐标系因为目标坐标系设置成notset,所以FME不会重新投影这些数据,但是会使用与源数据相同的坐标系对它进行编写。例5:进行今本的重新投影例1,2,3,4已经计算了公园的平均面积,但是,现在策划组要求将输出数据重新投影到一个不同的坐标系—UTM83-14F(UniversalTransverseMercator,Zone14),而不是TX83-CF。1)启动Workbench.打开例4中的工作空间,或是重新创建一个。2)编辑源坐标系在Workbench的导航方框中找到源公园读模块,然后点击[+],展开设置列表。找到标有“CoordinateSystem”.的设置,最开始的值必须设为“notset”(如下图)…双击源坐标系设置,就会产生一个编辑参数对话框输入坐标系名TX83-CF,或者使用*…+按键从坐标系列表中选择它.3)编辑目标坐标系现在找到目标数据集的坐标系设置,同样地,将它的值设为“notset”。双击它,输入坐标系名UTM83-14F,或者使用*…+按键从坐标系列表中选择它。4)开始转换在日志文件中,你就能找到它,然后开始转换…FMEConfiguration:Sourcecoordinatesystem………setto`TX83-CF'FMEConfiguration:Destinationcoordinatesystemsetto`UTM83-14F'5)检查数据输出检查输出数据,查询一个要素,就应该显示出新的坐标系(如下图)。备注:坐标系名应该是NAD83.BLM-14N,这是因为它与UTM83-14F具有相同的含义。单元复习这单元向你简单的介绍了数据转换的含义,以及教你如何使用FMEWorkbench,而不仅仅是用它来进行快速转换。从这单元中你应该学到什么?以下就是你应该学到的内容:理论模式指的就是一个数据集的结构,包括,它的要素类别,属性,以及几何特征。将源数据与目标数据进行连接,就叫做模式映射。数据转换指的是在转换过程中对数据进行结构重构。在FMEWorkbench中,使用函数就能进行转换,我们可以在函数列表中找到这些函数。我们可以讲转换过程分为两类:基于要素或基于组。使用函数设置对话框中的group-by选项就能进行分组。将数据分拆为多个数据流,会产生多个数据副本,但是不会改变数据。而将多个数据流进行整合是连接数据,而不是合并数据。FME功能通过调整模式映射,能够对数据进行结构重构,通过手动设置或者函数都能完成。能够在Workbench中找到函数,然后将它们放入工作流中(使用各种方法),然后转换数据内容。使用组选项,定义组要素。使用Workbench来重新投影数据。回答问题MrFlibble’s面临的问题:最常见得FME转换就是将ESRIShape转换为。。。也就是说,用户使用FME来进行转换,而不是那个转换器!MissVector说过…“下面是问题的答案,最好一个都不要错!”“ETL”中的“T”代表:一个模式的源和目标部分表示的是:将源模式连接到目标模式,这个过程叫做:下面的哪一种颜色,不表示FME模式正在已经建立了连接?将要素概念/基于组的转换和几何/属性转换结合起来,就能创建一个矩形,来表示每种类型的转换。例如,AreaBuilder就是一个有关基于组,几何转换的函数。浏览WorkbenchTransformerGallery,就可以找到其他的例子。回答—有许多连接函数,可以添加到你的表格中。如果你对一些特殊的函数不确定,就问下你的指导员。记住,不是所有的函数都用来对数据进行结构重构的。