[农林牧渔]Fmedesktop.doc
FME Desktop培训教程 第一章 数据转换基础数据互操作传统的数据格式转换通常是由一些功能有限的软件执行的。什么是数据互操作?它指的是,通过分享和分发数据,来交换信息,它具有直接处理数据的功能。在这个定义中,出现了以下三个关键词:交流: 信息间的交换数据分享/分发: 提供数据,或是直接对源数据进行访问透明地: 不需要对数据结构有背景认识有时候,互操作性也被称为数据融合或数据模式转换。互操作性的障碍但是,互操作性并非总是显得那么简单。对于空间数据,存在两个最主要的障碍。数据类别对于空间数据来说,有许多类型的数据,例如,CAD, GIS, BIM(建筑信息),导航等。 因为不同类型的数据根据不同目的设计的,所有它们并不是总是能够兼容的。我们可以说他们之间有着不同的含义。下面我们举个例子:例如,一个导航系统,例如,车载GPS,和针对土木工程项目的CAD数据集,两者可能都是处理有关“道路”的数据,但是它们对于数据的看法是完全不同的。有关导航的数据是一个经过制图综合,具有拓扑特征的,带有交通属性的数据网络系统。但是,CAD数据包括精确的几何定位,以及有关路况的属性。这两种具有不同应用目的的数据是很难兼容的。数据格式空间数据领域的独特之处,空间数据拥有不同的数据格式,例如,地理数据库,DWG,MIF/MID, KML等。 因为不同的数据集有不同的格式,即使这些数据集是同一种类型的,它们也并非总是能够与计算机的应用程序兼容例如,一个用来读取GeoDatabase的系统,可能就不能够输入TAB格式的数据,尽管它们都是GIS类型的数据集。“细管道”转换通常来说,用来将地理数据转化为其它格式数据的软件都有局限性。大多数数据在转化的过程中,要被迫经过一个十分局限的数据模型,可能会导致相关信息的丢失。在Safe Software中,我们将它叫做“细管道”转换。 上图:观察怎样丢失了属性B,C。可能,格式2的数据部支持格式1的类型,或者是,转换软件在传输过程中直接地丢掉了属性。同时,你会注意到进行数据转换的过程是单向的。另一个问题就是,大多数转换器都不是多目的的,也就是说,它们仅仅针对于某一种特殊的格式。将数据转换为另一种格式时需要一个转换器,但将它再转换为原来的格式,可能就会需要另一个转换器了。互操作性标准有两种解决方法,可以帮助用户分享空间数据。数据标准最常见的一种解决缺乏互操作性问题的办法,就是数据标准。如果每个人都使用同一类型和格式的数据,就不存在分享数据的问题了。标准可以被分为格式或数据模型,有些标准两者都包括!一些标准是用来储存数据的,而一些标准仅仅是用来转换数据集的。常用标准许多重要的空间数据标准是由Open Geospatial Consortium创建或维护的(OCG是一个非盈利性质的全球公认的标准机构)虽然它创建的所有标准都是基于一个叫做Abstract Specification的标准体系结构,但是OCG自身也推广大量的不同标准。ISO(国际标准机构)也创建了一些标准,例如,S-57。但是,也存在着许多其他的标准,有些是特定的,有些是针对某些国家的数据,而有些则是对OGC或ISO标准进行了扩展或缩减。以下是一些常用标准:OGC: GML, KML, WKT, WKBNational: MasterMap(英国-一种基于OGC GML的数据模型)TIGER/Line(美国-既是一种数据格式又是一种数据模型)KF85(瑞典)和NAS(德国)其它: S-57(既是一种数据格式又是一种数据模型)GeoJson、GeoRSS、LandXML、CIM(公用信息模型)VPF(格式)和VPF产品(DNC、VMAP、世界向量海岸线)标准的缺点总的来说,这些标准可能能够很好的处理一些简单的数据集,但是当遇到一些复杂的问题时,它自身要么更加复杂化,要么会分成一些新的标准。在前面的例子中,CAD和导航数据集以不同的方式来处理“道路”,我们就很难找到某一种标准来同时适应这两种数据集。同样地,政府的各个部门也并非总是能够很好的协作,这样就需要大量的国家标准。另外,许多标准开始是非空间性的,但之后又具有了空间性能(例如,GeoJson, GeoRSS)总的来说,一些软件制作商,他们不愿意舍弃支持标准结构的专有数据,也就是说,公认的格式只会越来越多,而不会越来越少。 FME是什么?当我们不大可能或者实际地去使用一个常用数据标准时,IT解决方案就显得非常有必要了。空间ETL,以FME为例,就是这样的一个IT解决方法。FME被设计用来解决与传统数据转换方法相关的影响互操作性的障碍问题。空间ETL是什么?FME(Feature Manipulation Engine, 要素处理引擎)被设计成一个空间ETL应用程序,这是第一个实现空间ETL的工具。ETL指的是提取、转换和加载。我们将ETL描述成数据仓库工具,它能从源数据库中提取数据,将数据转化以满足用户需要,将数据加载到目标数据库。空间ETL工具也能够读取,编写,处理空间数据。一方面ETL工具要能够处理非空间数据库或系统中的不同类型数据,另一方面必须要具有空间处理功能,亦即能够改变数据的结构和表达,这些要求正是一个空间数据库或GIS中的数据转移到其它的数据库时所需要的。FME是怎样工作的?FME拥有许多重要的特性核心性FME是大量支持格式中的核心引擎(如下图)。可以读取任何格式的数据,并且编写成其它的格式。要支持新的格式,就如将这种新格式插入到FME引擎中一样简单。FME可以在相同的核心模式下,同时支持栅格和矢量格式。语义FME自身拥有的丰富数据模式,可以用来处理所有可能出现的几何性和属性类别。当目标格式导致出现兼容问题时,FME会自动修复以保证进行无缝的数据转换。粗管道ETL中的T指的是传统格式转换的不足之处。FME提供大量的转换功能,输出格式比输入的格式类别要大得多,并且允许数据从一种类别(如GIS)转化为其它类型(如CAD)。FME 版本和许可证根据用户需求的不同,FME有许多不同的版本FME Desktop 的版本FME拥有许多不同的版本,每个版本都具有不同的功能和格式,下面图表中,每个版本都包含所有的要素。 版本信息如下:FME Base版针对初学者的一个版本,它支持40种格式和一系列基本的转换工具。FME Professional版这个版本拥有更广泛的功能,支持更多格式的数据,和完整的转换工具。Database Specific版它包括DB2,Microsoft SQL Server,Oracle和Smallworld,这些版本增加了对一些特殊数据库的写操作支持。Application Specific版这些版本支持与特殊应用程序相关的格式,例如,ESRI版本支持GeoDatabase,而Intergraph版本就支持编写GeoMedia。FME 的授权通过多种方式,我们可以获取FME的许可证固定版License它仅仅适用于特定的电脑。许可证不能转给另一台电脑,除非是向Safe Software做特殊的要求浮动版License不固定的许可证指的是,服务器拥有它,然后在联机用户启动FME时,就会获取许可证。当有许多可能的FME用户,但他们又不会同时使用FME时,这种获取许可证方法是非常有用的。硬盘版License它与硬件匙紧密相关。可以在任何一台电脑上安装FME,但是只有插入了硬件匙后,电脑能运行FME。例如,当用户既需要在办公室电脑,也需要在手提电脑上工作时,这种方法就非常有用。我们常犯的错误是,认为每个版本都是一个特别的安装程序,事实上,这种想法是错的。我们安装的是同一种FME Desktop,如果拥有了不同的许可证,便可以来来访问不同的功能。 FME Desktop 组成FME是由许多空间数据处理组件构成的软件套装。每个版本的FME都包含这里列出来的所有应用程序。FME WorkbenchFME Workbench 拥有的直观的图形操作界面,允许转换过程以图形的数据流方式表现出来。FME Workbench是FME中最基本的数据转换平台。FME Universal Viewer它让用户能够迅速地查看FME支持的任何一种格式的数据。通过在转换之前查看数据,或是转换之后检查数据,就能够验证数据,并确保它的准确性。FME Universal Translator它是FME开发的第一个应用程序。为了更好地使用它,我们需要用到脚本语言而不是图形界面,所以现在它已经多数被FME Workbench所取代。 FME Command Line Engine它允许将数据转换要求作为命令行来提交。FME其它组件在FME Desktop中也包括了其它的组件,并作为它的一部分。FME Objects它是软件库文件,用来处理空间数据。程序开发人员使用它,扩展他们自己的应用程序功能,使之能支持空间数据的读写。FME Application Extenders它是嵌入到其它GIS应用程序里的FME组件,它允许GIS软件程序来查看不属于这个程序的数据集。FME Plug-In SDK它允许开发人员在FME转换核心中添加他们自己的格式。 FME其它产品FME这个品牌包括大量其它的产品,而不仅仅是基本的Desktop产品。FME Server采用与FME Desktop相同的技术,FME Server是一种可扩展的空间ETL应用程序,既可以进行数据转换,也可以让用户无论何时,何地,以它们需要的方式来对空间数据进行访问。我们也将它描述为MDA(Model-Driven Architecture,模型驱动架构),也就是说,它使用预定义工作流来处理数据。而这些工作流,就如你所猜想的那样,和你使用FME Desktop产品中的Workbench所创建的工作流是一样的。FME Data Servers它提供以网络基础的应用程序,用来直接访问FME支持的任何一种格式的数据。 它支持的程序为. MapGuide 和 GeoMedia WebMap。FME的其它相关产品,FME Provider for MapGuide 和 FME Data Server for WebMap,这些程序在不需要提前进行数据转化的情况下,直接对不同格式的数据进行访问。FME Plugins除了FME的这些基本功能,我们还可以购买许多其他的插件。这些插件要么用来扩展功能,FME基本产品所支持的格式。这些插件包括:MRFCleaner插件,用来清理几何对象; CurveFitter插件,用来平滑线型;GDF插件 支持读取/编写GDF格式; VPF插件 支持编写VPF格式。 FME Workbench 的简介 Workbench 是FME用来进行数据转换的最主要工具。它自身的点击图形界面能够让转换过程以图示的方式表现出来,就是我们所说的数据流。什么是FME Workbench?它指的是一种解决数据转换以及处理数据过程中所出现问题的应用程序。通过它,用户可以通过直观的图形界面来访问FME的基本功能,用户则可以通过图形界面的方式来定义数据流,从源数据到目标数据的转换过程。它有一些工具,用来定义源/目标数据集的结构(或图示),同时用来处理空间数据的几何特征和属性。我们将workbench进行集成,用来与其它的FME应用程序一起使用,例如,Universal Viewer以及其它相关产品,FME Server,以及FME Server的授权工具。打开FME Workbench在Windows的开始菜单中,打开FME的子菜单,找到FME Workbench。点击它,打开工作空间如下图:FME Workbench 的主要组成部分FME Workbench 的用户界面包含许多组成部分 Workspace 工作区(Workspace Canvas)当用户用图示方式来定义工作流时,就会出现这个界面。一般情况下,从左到右读取工作流:源数据在左边,转换工具在中间,目标数据则在右边。中间的连接则代表数据流,并且可能向不同的方向扩展,有需要时可以终止转换。转换日志(Translation Log)它显示转换结果,所显示的信息包括错误,警告,转换状态,转换时间,以及已处理要素的数目。导航栏(Navigator)它是浏览器类型的工具,它会显示源数据集和目标数据集的文本定义,以及素有相关的设置。转换通道(Transformer Gallery )它是用来定位以及选择FME转换工具。菜单栏和工具栏(Menubar+Toolbar)它们包括许多工具,例如,在工作空间中进行导航,控制操作任务,以及添加或删除源数据集。浏览窗口(Overview Window)它显示整个工作空间状况,并且突出现在正在运行的Canvas窗口。Window 控制面板所有Workbench中的窗口都可以从固定位置中分离出来,然后通过点击窗口,将它拖拽到另一个新的自定义位置。甚至,分离出的窗口可以再主窗口外浮动。 InteropGeek68 说“Dude, 使用多个显示器。然后,你就可以讲Workbench菜单移到一个新的显示器上,在主要的显示器上保留Workspace Canvas窗口。”通过将窗口拖到Workbench的主窗口,就能够对窗口进行停靠,窗口可以被停靠到Workbench框架范围内的左边,右边,上面或下面。下图: 这个用户选择将navigation pane和 transformer gallery分别停靠到Workbench的左边和右边。而日志窗口则被停靠到通常要求的位置,显示的下方。 将两个或多个窗口停靠到同一个位置时,就需要对它们进行安排,要么选择并列,要么制表符。上面: transformer gallery, overview window 和workspace navigator 并列(左图)制表符 (右图-突出了 窗口名称)每个窗口上方的按键,决定是进行并列或是制表符(下图)开始数据转换Workbench直观的图形界面使不同格式数据间的转换变得很简单。对话框或向导它们是创建一个新的转换过程的两种基本方法,分别是 “Translation Workspace Wizard”和“New Workspace Dialog”。从菜单条中选择File > New,进行转换。这两种方法都允许你选择源格式,源数据集,目标格式以及任何适用源数据集或目标数据集的设置。转换模板向导它提供一系列选项,通过它来对转换过程进行设定。如下图: 工作空间向导的最开始的界面,对话框会提醒用户选择要转换的源数据集的格式,红色表示必须要填写。FME的格式选择工具有重要的特性,既有一个下拉菜单,又有文本框。下拉的菜单列出了最近使用的十种格式,这样就能迅速地获取常用的格式。而文本框允许你直接输入格式名,它有一个“智能匹配”功能,当你进行输入时,会替你找出最贴近的正确格式名,这比使用浏览按钮来寻找格式名要迅速的多。新建Workspace 对话框新建Workspace 对话框将所有的有关转换工作空间的选项概述为一个单一的对话框。对于有经验的用户,会更倾向于使用创建工作空间的工具:上图: 新建 Workspace对话框这个对话框需要填入源格式,数据集以及目标格式。它们拥有相同的下拉菜单和'Intelli-complete功能,就和Workspace wizard一样也有按键,来检查或是改变每个数据集的设置,并且还有一个按键来预览FME Viewer中的数据。提示:Workbench 工具条中的New Workspace按键实际上是New Workspace dialog的快捷方式。 注意:这个时候对设置进行检查是非常必要的。虽然在Workbench navigation的方框中会显示大多数的设置,但是一些设置可能会影响到数据转换工作空间的创建,所以你在进行下一步之前,需要检查这些设置。要素类型对话框无论你用何种方式创建工作空间,无论源数据集包含多少不同的要素层,按照提示,你都需要选择要转换的要素层。使用Select Feature就能对要素层进行选择。FME中的feature layer是“layer”的另外一种说法。只有被选择了的要素层才会显示在工作空间中。下图: 就是 Select Feature Types dialog. 在这里,用户选择了工作空间中所含有的所有要素层。 提问:在New Workspace dialog对话框中,为什么在浏览源数据之前,对数据格式进行设置是非常有用的呢?回答:在设置格式类型之前,试着浏览整个数据集,看是否能够检测到不同之处。 新建工作空间我们从左到右,通过数据流从源数据到目标数据,来读取一个新的工作空间。你也可以将这个读取过程理解为一个空间ETL过程,即“提取转换-加载”。下图: 一个新的工作空间和这个例子很像FME设置注记,用来强调 E-T-L (Source > Flow > Destination) 结构 箭头表示数据流的方向,从源数据到目标数据。 运行数据转换 保存转换过程可以将工作空间保存到一个文件内,这样就可以在晚些时候再次使用。简单地使用 File > Save (shortcut = Ctrl+S) or File > Save As 就能保存转换过程。转换结果 日志框在数据转换之后,就可以在Workbench日志框中找到有关转换结果和输出数据的统计。转换日志会显示数据转换成功与否,从源要素中读取了多少要素,编写了多少要素到目标数据,完成数据转换花了多少时间。下图: 在这个例子中,日志文件显示从 MicroStation dgn文件中读取了2319个要素,这些要素被编写到一个GML输出文件。这个转换过程是成功的(有一个警告),转换花费了4.6秒。 提示:不需要其它设置的情况下,在Workbench或Universal Translator中迅速快捷地进行数据转换,我们将它称作“快速转换”因为FME是“语义”上的转换器,凭借它自身丰富的数据模型,通过快速转换过程得到的输出数据会在结构和意义上尽可能地与源数据接近。 FME Universal Translator的介绍FME Universal Translator是进行数据转换的最早的FME工具。什么是FME Universal Translator?在前面的例子中,我们使用FME Workbench来进行所谓的“快速转换”FME Universal Translator指的是最早FME转换程序。虽然大多数已经被更新的Workbench应用程序所取代,但是仍然有许多人用它来进行快速转换,或者运行已有的不需要进行再编辑的工作空间。启动 FME Universal Translator.在Windows的开始菜单中找到FME子菜单,就可以看到它了。点击这个子菜单,就可以启动FME Universal Translator了上图: Universal Translator位于FME得子菜单。开始数据转换在菜单条中,选择 File > Translate (如下图)Translation 对话框在Universal Translator菜单条中选择File > Translate,就会出现Translation Parameters对话框。在填写完整这个对话框后,点击OK键,就可以进行数据转换了。下图: Universal Translator translation parameters 对话框如下图所示: 在这里,用户将 MapInfo MIF/MID 数据集转换为Google Earth KML.相比FME Workbench的 "Create workspace" 对话框而言,这个对话框也包括一个处理目标数据集的设置。转换数据前面已经提到了,FME的一个最主要的优点就是,当需要进行数据转换时,它能够进行我们所知道的“粗管”转换(相对“细管道”或“快速转换”而言)FME Workbench 使用图形界面来转换称之为工作空间,而FME Universal Translator则使用文本脚本映射文件。观察上图的对话框,用户是如何选择要执行的特定映射文件的,使用默认的“automated” mapping file,实际上与快速转化类似。为了进行其他操作,而不仅仅是快速转换,用户可能需要创建,使用一个自定义mapping file,所以,对于进行复杂的转换,FME Workbench就是首选工具。运行已有的转换过程无论转换过程是一个工作空间或是一个映射文件,我们可能也会使用FME Universal Translator来进行数据转换当用户已经有了一个映射文件,或一个不需要再进行任何编辑的工作空间时(可能进行了加密,这样就能避免作出变动),运行已有的转换过程就非常有用了。下图: 从菜单条中选择 File > Run ,运行已有的转换过程. 单元复习这单元主要是向你介绍FME,并且对FME数据转换进行一些基本的考察 从这单元中你学到了什么?下面这些就是从这单元中应该学到的主要内容:理论知识FME是提取,转换,加载空间数据的工具Quick Translation 指的是在需要最少用户干预的情况下,进行数据转换的技巧。FME的语义属性就是它能实现的基础。FME Workbench 是一种应用程序,用来动态地定义转换过程,和数据流。这个定义也被称作工作空间,可以被保存,已备下次使用。FME Universal Translator 是一种应用程序,用来进行快速转换,或者执行预定义转换。 Workspace dialog 和 Workspace wizard 指的是两种方法,使用它们就能在FME Workbench中进行快速转换FME 操作 启动FME Workbench,能够创建并运行快速转换工作空间; 能够在 FME Universal Translator中进行相同的快速转换 使用FME Universal Translator运行已有的转换过程(例如工作空间)。CAD的数据分析及FME对CAD数据的转换(一) 做数据不会编写程序,虽说不至于瞎忙活,却也会缺少更快捷的处理方式,而导致工作效率不高.不会编程,我们还可以通过合并使用多种软件来处理,只要能做出符合要求的数据,又何必在意使用哪种方式处理的呢. 由于接触FME不久,FME的大部分功能却不懂得使用。而做内业数据整理最为头疼的,就是因为常用的各种数据格式不能通用。博杂不如专精,如果FME能解决通用格式转换,并保留扩展输出完美的结果,其他功能暂时先放一边了。一般来说,现在测绘内业数据要整理的,最常接触的数据格式有几种,分别是ARCGIS的SHP格式,CAD的DWG格式,MAPINFO的TAB格式。虽然说MAPGIS也是很常见,但FME识别不了这个格式,我也不会使用这个软件。因此不在这次学习笔记中记录。南方CASS的数据格式属于CAD的一种,因此归类于CAD。 作为内业数据整理人员,首先从外业测量工程队拿到的数据都是CAD格式.首先分析一下CAD的数据格式,用list这个命令查询的并不完全,这里用到另一个工具XLIST,有需要的朋友可以到CSDN下载,我已传到CSND的网盘中.下载连接放到文章最后.1.先看一下CAD的特性栏截图:在特性栏中,显示的都是CAD的扩展属性,比如最基本有色彩,所在图层线形及坐标位置等.不同的要素也有不同的特性.如文字有文字内容,大小,字体等.块有参照名.封闭线有面积,等高线有标高等.如果都要把这些扩展属性输出并转成SHP格式,数据量小的还可以通过AUTODESK MAP的地图功能分图层分要素输出,即使这样,工作量也很大.AUTODESK MAP的输出界面如下图:虽然如此,但这个扩展的输出还只能是CAD的默认属性.而内业数据整理最多的却是南方CASS的扩展属性.通过AUTODESK MAP输出南方CASS的代码比较麻烦.如果是宗地,或土地调查这类属性更复杂.CAD的默认输出显示是不能识别.2.对于图形简单的CASS扩展属性地形图,AUTODESK MAP也可以处理很好.这个简单指的是CASS的属性编码比较少的存在.AUTODESK MAP可以自建字段表,合并在CAD的扩展属性中输出标准的SHP数据.但是数据量大的,虽然也能用上面的方法,花费的时间很多.建字段表,编码筛选赋值.按点线面字体输出,只这些就要忙得乱七八糟.如图1,是等高线输出CAD扩展属性的SHP格式数据:从这里可以看到CASS的扩展编码没有输出再看图2,这是输出有CASS扩展编码的输出界面及输出后的SHP数据对比看图中红线部分,已通过automap的自建表输出等高线的编码及名称.FME格式转换学习笔记之一:CAD的数据分析及FME对CAD数据的转换(二)FME的性能优化(一)一、理解日志文件在优化工作空间之前,理解FME的日志文件是非常重要的。没有这个常识,用户经常直接跳到转换错误结论的地方,在错误的地方查找性能问题。1、有用的日志文件提示当试图加速转换的时候,检查日志来正确的确定转换时间主要花费在哪个地方是非常有用的。提示1:点击Tool菜单,在下列菜单中找到FME选项(FME Options)菜单,点击后在打开的对话框中,选中左侧的第二个图标(Runtime),如下图: 选中Log File Defaults选项卡中的Log timestamp information选项,确保在日志中启动了计时设置。 2、日志文件中的处理时间在日志中首先要注意的是时间是以秒来记录的,日志中记录的处理时间可能与整个处理的时间长度不一致。例如,下面处理过程经过的时间显示超过了6分钟,但是整个日志记录的是FME只使用了25秒,如下:Elapsed Time | Total| Incremental CPU (secs) 2006-07-10 14:43:06| 8.5| 0.0| 2006-07-10 14:43:13| 8.8| 0.3| 2006-07-10 14:46:29| 18.0| 9.1| 2006-07-10 14:49:29| 25.8| 7.9| 提示2:为什么转换日志中说FME在转换时只花费了0.1秒而实际上用了差不多七分钟?回答:日志部分的时间只显示了实际时间(例如10.40am),这个时间是FME用来转换的。因为外部调用,比如数据库需求,实际花费的时间可能与FME用来转换的时间不匹配,但是没有被FME日志记录。下面的例子涉及到一个预先执行在Oracle数据库中的查询: 2004-05-14 17:18:52| 476.1| 0.0|INFORM|Started SQL cache prefetch 2004-05-14 17:25:10| 476.2| 0.1|INFORM|Finished SQL cache 虽然从SQL预读文件到完成大约七分钟,FME只用了0.1秒的CPU的时间,剩余的时间是Oracle用来查询,获取数据时花费的。为了减少这个时间,用户需要查看下Oracle数据库的结构和查询是如何写入的。或许是查询的数据没有建立索引,或许是因为不是尽可能高效的查询。3、基本功能和如何记录因为FME是以单个独立要素为基础(不是以组)加载到工作空间中,对每个独立的函数,不可能给出精确的计时。因此,许多时间没有在日志中分别记录,而是集中在下一个支持计时的功能下。提示3:FME为什么不能总是显示每个函数花费的时间,这是怎么回事,在一个日志文件中如何查看。问题:FME是以单个独立要素为基础还是作为一个组来处理要素?是怎样影响我的转换处理的?回答:默认的,FME处理要素是以单个独立要素为基础,也就是每个要素在通过下一个函数前在前面的函数中分别处理,这是因为多数函数是基于要素结构运行的,此时一个要素的处理不影响下一个。长度计算函数就是这样的函数的一个例子,计算一条线的长度不影响下一条线的长度(FME不在编码器的层次上工作)。不过,有些函数是以组结构来处理要素,确实影响下一个。变化检测是这类函数的一个例子,除非与每个其他要素进行对比,才能检查是否一个要素发生了变化。基于组的处理的一个结果是在可利用的内存中找到。如果操作包含了每个数据集中的要素,在内存中必须包含所有的要素,同时处理被执行,相反的,基于要素的处理读入一个要素到内存,处理后释放并处理下一个要素。Sorter函数是这种基于组处理类型的一个很好的例子。第二个结果是一些函数会根据这些要素如何被处理,给出不同的结果。例如,如果你不考虑要素如何被处理,一个VariableSetter /VariableRetriever组合可能没有给出预想的结果(从VariableSetter输出后,第一个要素会直接输入到VariableRetriever函数,获取VariableSetter函数设置的值,但是如果在中间插入一个Sorter函数,在第一个要素通过VariableRetriever之前,要等到最后一个要素通过VariableSetter才能进入VariableRetriever函数,因此可能获取了一个不同的值。可以参考相关的工作空间。问题:我的转换日志记录了许多FME花在写入临时FFS文件上的处理时间,我如何避免这些记录?回答:这个问题不是处理时间的问题,而是如何在日志文件中记录更多的时间。FME没有记录被每个函数花费的时间通常它只记录为0.0。这可能是因为时间小于0.1秒(允许的精度),或者因为各个函数不能精确的计算。所以使用的时间在报告中没有被累加。因此,当日志处理Storing features花费的时间,它记录所有目前累计的时间。给出了错误印象,FME处理是花费在写入FFS文件。例如: 2004-08-12 10:25:01| 1.1| 0.1|INFORM|Opened DBF File <xxxx> for output 2004-08-12 10:25:01| 1.2| 0.0|INFORM|Opened Shape File <xxxx> for output 2004-08-12 10:25:01| 1.2| 0.0|INFORM|Opened DBF File <xxxx> for output 2004-08-12 10:25:01| 1.5| 0.3|STATS |Storing features to FME feature store file不意味着花费0.3秒写入FFS文件中,只是从上次记录报告的数字到现在的时间。FME 坐标系使用(三) -关于坐标系变换对于FME进行坐标系变换,涉及两种不同的变换,一个是基准面(Datum)发生变换,另一个基准面不发生变换。本文对第一种变换进行描述。 对于基准面发生变换的坐标系变换,在FME Workbench中使用Reprojector函数,在该函数中要分别选择源数据坐标系和目标数据坐标系,确定后,即可进行坐标系的变换。 或者对于源数据和目标数据,分别设置坐标系,FME在进行数据转换的时候,就可以自动进行坐标系的变换。 但是如何设置一个用户自定义的坐标系,能在FME的坐标系仓库(Coordinate System Gallery)中选择,然后进行坐标系变换呢。通常,定义一个坐标系是确定这个坐标系的几个参数-椭球体参数,基准面参数以及投影参数。对于FME的坐标系参数定义涉及两个文件,LocalCoordSysDefs.fme和MyCoordSysDefs.fme。这两个文件都位于FME安装目录下的子目录Reproject下。在LocalCoordSysDefs.fme文件中定义基本的参数-椭球体参数和基准面参数。在文件MyCoordSysDefs.fme中定义投影参数。 椭球体的定义:ELLIPSOID_DEF <ellipsoidName> DESC_NM <descriptive name> SOURCE <source> E_RAD <equator radius> P_RAD <polar radius> 参数描述如下:名称类型描述是否为空<ellipsoidName> 字符串椭球体名称No<descriptive name> 字符串椭球体的描述Yes<source> 字符串椭球体来源(个人或者组织)Yes<equator radius> 浮点数椭球体长半径No<polar radius> 浮点数椭球体短半径No 如果一个椭球体已经在FME里面预先定义了,在以后所有的用到的地方都可以引用,不必重新定义,比如KRASOV,或者XIAN80等。 基准面的定义:DATUM_DEF <datumName> DESC_NM <descriptive name> SOURCE <source> ELLIPSOID <ellipsoid name> USE <use type> DELTA_X <x value> DELTA_Y <y value> DELTA_Z <z value> BWSCALE <bwscale> ROT_X <rotX> ROT_Y <rotY> ROT_Z <rotZ> 参数描述如下:名称类型描述是否为空<datumName>字符串基准面的名称No<descriptive name>字符串基准面的描述Yes<source>字符串椭球体来源(个人或者组织)Yes<ellipsoid name>有效的椭球体名称引用已定义的椭球体名称No<use t