FME Desktop培训教程 第五章 数据集和要素类型二.docx

上传人:b****6 文档编号:4020482 上传时间:2022-11-27 格式:DOCX 页数:14 大小:549.90KB
下载 相关 举报
FME Desktop培训教程 第五章 数据集和要素类型二.docx_第1页
第1页 / 共14页
FME Desktop培训教程 第五章 数据集和要素类型二.docx_第2页
第2页 / 共14页
FME Desktop培训教程 第五章 数据集和要素类型二.docx_第3页
第3页 / 共14页
FME Desktop培训教程 第五章 数据集和要素类型二.docx_第4页
第4页 / 共14页
FME Desktop培训教程 第五章 数据集和要素类型二.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

FME Desktop培训教程 第五章 数据集和要素类型二.docx

《FME Desktop培训教程 第五章 数据集和要素类型二.docx》由会员分享,可在线阅读,更多相关《FME Desktop培训教程 第五章 数据集和要素类型二.docx(14页珍藏版)》请在冰豆网上搜索。

FME Desktop培训教程 第五章 数据集和要素类型二.docx

FMEDesktop培训教程第五章数据集和要素类型二

多个目标数据集的转换

这个课程前面的内容仅仅介绍了多个源数据集(或要素类)的转换,但是,它的大部分功能同样适用于多个目标数据集的转换。

编写多个目标格式和数据集与读取多个源格式和数据集非常相似,所以,不难发现FME也能够对多个目标数据集进行转换,并且用来转换的工具与处理源数据集的工具非常相似。

下图:

这个图标显示,将多个源数据集和格式转换为多个目标数据集和格式。

 读取大量的AutoCADDXFfiles,SmallworldObjects和GeoDatabaseFeatureClasses

将所有的源数据集合并为一个目标文本文件。

同时,将DXFfiles和GeoDatabase编写到单一的Oracle空间数据集中。

这个图标显示,FME并不要求转换就一定是一对一的结构转换;可以将多个源格式和数据集连接到多个目标格式和数据集。

当你用这种方式创建一个工作空间时候,你也创建了一种工作状态,存在多个写模块,通常每个写模块只写入一个数据集(除非使用fanout)。

多个写模块

与源数据集一样,Workbench拥有大量的工具来处理目标要素类。

添加写模块

与源数据集一样,用户能够在工作空间中添加一个写模块。

这里使用的指令就是DestinationData>AddDataset

下图:

从菜单条中选择Add(destination)Dataset工具。

 注意:

同样地,为了使术语更加准确,我们真正要做的就是创建一个新的写模块,并且添加一个目标数据集。

ImportFeatureTypeDefinitions

与读模块相似,可以从已有的数据集中输入要素类定义,并且,提供要素类的数据集也不必要是相同的格式。

下图:

从菜单条中选择Import(destination)FeatureTypeDefinitions。

 

添加FeatureTypeDefinition

与读模块不同的是,写模块能够手动地添加一个新的目标要素类。

下图:

从菜单条中选择AddFeatureTypeDefinition工具。

 

 问答:

你为什么认为FME含有一个DestinationData>AddFeatureTypeDefinition,而不是SourceData>AddFeatureTypeDefinition呢?

究竟是什么区别导致FME不允许源数据集使用AddFeatureTypeDefinition工具呢?

 

对要素类的处理

为了给用户最大的自由,FME提供了大量的方法,处理一个要素类的模式定义。

编辑目标要素类

正如你所知道的,目标要素类是对“我们要创建什么”的一个简单定义,而不表示(至少并不总是)已经存在的一些事物的表达。

基于以上的原因,用户完全可以以各种不同的方式来编辑一个目标要素类,然而用户却不能编辑源要素类。

使用FeatureTypeProperties对话框(如下图)就能够获取这些方法。

 

 对目标要素类重新命名

点击FeatureTypename,输入一个新的名字,就能够编辑要素类名了。

例如,在上面的操作中,选择或删除文本‘Roads’,然后输入Highways’,就能够对要素类重新命名了。

注意:

如果你记住要素类名“Roads”与“roads”或“ROADS”是不一样的,因为要素类名字是区分大小写字母的,就能够避免许多容易困惑的问题。

改变几何属性

当FME自动创建一个目标要素类时,会假定目标几何属性与源数据集的几何属性相同,例如,一个包含线类要素的源数据集就会产生相同的目标数据集,但是,并非总是如此。

可能会使用工作空间中的一些函数,改变要素几何属性。

如果在转换过程中要素几何属性会发生改变,那么目标格式就会对允许的几何属性进行严格定义(Shape数据集会要求这点),然后就能在列表中选择几何属性类别。

虽然这并不是所希望的,但绝对是重要的,因为这样能避免在之后的转换中,由于几何属性的改变而导致错误。

移动要素类

正如前面所提到的,可以将模式理解为一个独立的对象,使用它就能够处理任何目标数据集。

按照要求,它能够允许要素类从一个数据集迁移到另一个数据集。

备注:

仅从技术上说,我们在写模块之间,而不是在数据集之间进行切换,但是,因为每个写模块只有一个数据集,所以点是非常抽象化的。

无论何时出现多个目标数据集,目标FeatureTypeproperties中的Dataset设置都会被激活。

通过更改数据集,用户就能够有效地将要素类从一个数据集中转移到另一个数据集。

移动要素类并不是一个常见步骤,但是绝对能为你节省大量的时间。

下图:

在Vegetation数据集这一栏下,现在定义“Roads”要素类,这个图标中,用户正将这个要素类转移到Transportation数据集。

 

 下图:

Th这个例子显示了,为什么你要转移要素类。

这里,用户已经创建了一个工作空间来转换马路数据,并且已经放置了一个FeatureMerger来将马路要素连接到一组非空间属性中。

 

下图:

但是,现在用户希望记下不完整的记录,所以创建了一个NULL目标数据集,并且,他将剩下的RoadData’要素类转移到了NULL数据集,而不是重新创建一个要素类,并且对这个要素类重新命名。

  提示:

这个例子显示了,怎样在不同的数据集之间转移要素类,并且显示了模式是非常灵活的对象,并受限于一个特定的格式。

 

Example4:

多个写模块

规划部门,请注意了!

有关交通的要素类是错误的,你应该在将要素类编辑到PDF之前,对它进行编辑。

你能够将这些要素类编辑到ESRIShape中吗?

这样就能在GIS应用程序中编辑它们了。

为了完成这个操作,我们需要添加一个新的写模块到例3中的工作空间。

1)启动Workbench.

如果有需要就启动Workbench,打开例3中的工作空间,或者重新创建一个,你也可以在C:

\FMEData\Workspaces\TrainingWorkspaces\S5-Example4-Begin.fmw中找到一个副本。

2)添加写模块

使用DestinationData>AddDataset,添加一个新的写模块到工作空间中。

DestinationFormatESRIShape

DestinationDatasetC:

\FMEData\Output\TrainingModule5

当提示用户是否要添加一个新的要素类时,点击NO。

3)转移要素类

打开有关目标要素类“Roads”的FeatureTypeproperties对话框。

检查数据集参数,你会发现,因为现在有多个写模块,这个参数已经被激活了。

将参数CommunityPlan[PDF2D]改为TrainingModule5[Shape]。

通过以上操作,就将要素类从Adobe2DPDF转移到了Shape写模块中

 4)改变参数AllowedGeometries

注意,一旦转移了要素类,参数AllowedGeometries就被激活了。

这是因为,Shape严格限定了哪些几何类型能够通过特定的要素类(而PDF则没有限定)。

将参数AllowedGeometry设置为shape_polyline.然后点击OK。

 5)重复转移过程

对要素类”Rail”进行转移,然后运行工作空间,确保有两种不同格式的输出数据集。

更新要素类

用户在处理空间数据时,会碰到一个常见的问题:

在设置了数据处理任务后,源数据的结构却改变了;例如,出现了一个新的属性,或是已有属性由整型数变为了小数。

Workbench中的要素类定义会产生同样的问题,所以FME会提供一个工具来在新数据结构的基础上更新工作空间。

下图:

选择菜单条中的SourceData>UpdateFeatureTypeDefinitions,就能够找到源数据的要素类更新工具。

 

DestinationData菜单中也有一个类似的工具,更新目标要素类定义

在下面的例子中,用户会将有关公园的数据从MapInfoTAB数据集转移到GMLSimpleFeatures数据集。

在检查源数据的时候,他会注意到,因为之前已经创建了工作空间,所以源数据已经改变了,并且模式丢失了它的maintenance_ID属性。

下图:

工作空间显示了属性模式,并且用户即将选择更新要素类工具。

 下图:

用户选择更新的Mapinfo数据作为数据源进行结果更新。

 

左图:

选择工作空间现有的要素类型进行更新。

 

下图:

采取同样的方法,对GML目标数据集进行更新,并且使用相同的Maplnfo作为源数据集,对它进行更新,现在工作空间就包含了正确的模式。

 

复制属性定义

有时候,有些目标属性缺少必须的属性,例如,由于从其它写模块中转移,或是从一个不同的数据集中输入,或是一个重新创建的属性,或者还没有随着工作空间更新新属性,都会导致目标属性缺乏必要的属性。

Worbench就含有一个功能,能够从已有的工作空间中复制定义,这样就不必要手动地添加新的属性了。

右图:

用户碰到了一个输出要素类,它的属性不正确。

下图:

用户不需要自己输入属性定义,可以选择从已有的要素类中复制需要的属性定义。

 

右图:

选择源要素类…..

 

左图:

Workbench会完成剩下的工作。

 

下图:

这个例子中,通过从StatisticsCalculator中复制属性,就能够很轻易地添加丢失掉的属性。

注意:

函数知道属性名,但是无法知晓属性类型,所有复制到目标要素类的属性都默认被定义为char(20)类型,只有从其他要素类中复制属性,它才会有正确的属性类型。

 

Example5:

模式更新

现在规划部门有要求对目标模式进行一些更改。

1)启动Workbench.

如果有需要就启动Workbench,打开例4中的工作空间,或者重新创建一个,你也可以在C:

\FMEData\Workspaces\TrainingWorkspaces\S5-Example5-Begin.fmw中找到一个副本。

2)对OutputFeatureType重新命名

首先要做的就是,将Road要素类重新命名为“RoadLine”,Rail要素类重新命名为“railroad”。

重新打开Roads的目标FeatureTypeproperties对话框,将FeatureType重新命名为RoadLine.,如下图所示。

 

 

重新打开Rail的FeatureTypeproperties对话框,将FeatureType重新命名为RaiLroad。

3)更新输出模式

然后,将目标模式更新到规划部门要求的标准。

我们不需要添加属性值,仅仅需要更新输出模式,这样待会就可以输入模式值了。

幸运的是,在公司数据文件夹中,已经将模式保存在了已有的数据集中。

使用DestinationData>UpdateFeatureType来更新RoadLine要素类,然后使用以下数据集中的模式:

SchemaFormatMapInfoMIF/MID

SchemaDatasetC:

\FMEData\Data\Roads\RoadLine.mif

当出现提示时,选择“RoadLine”作为要更新的要素类,观察,现在目标模式是怎样拥有一套新属性的。

使用数据集,对railroad数据进行更新

SchemaFormatAutodeskMapGuideSDL

SchemaDatasetC:

\FMEData\Data\Railroads\railroad.sdl

检查railroad要素类,确定已经对它进行了更新。

4)运行工作空间

运行工作空间,检查输出—特别是Shape数据集。

怎样使用一个数据集中的模式来定义另一个数据集,这就是有关这个问题的一个很好的例子。

 

模式映射函数

Workbench提供大量函数来帮助映射源模式到目标模式

Filter函数

这个函数检查要素几何属性,或者属性,并且根据检查结果,决定是否发送要素到不同的目标数据集。

AttributeFilter

该函数根据选定属性中的特定值来分流要素。

左图:

这个例子中,根据已选的属性值,将属性划分为‘road’,‘street’,‘highway’和‘avenue’。

GeometryFilter

在几何类型的基础上,它能分流如下要素,例如,点,线,面,椭圆。

右图:

这个例子中,输出数据被划分为多个几何流。

 

ChangeDetector

通过比较,它能够检查出两组输入要素和并且根据比较的结果来分流数据。

左图:

这个函数中,‘UNCHANGED’要素是存在于之前的几何流,以及修正的几何流中的要素:

‘ADDED’要素就是只存在于修正后的几何流的要素,而‘DELETED’要素是只存在于之前的几何流的要素。

FeatureTypeFilter

该函数在原来要素类的基础上,进行要素的分流。

通过一个函数,也能够重新分离之前合并过的数据。

例如,不需要为每个要素类使用AreaCalculator,你就可以将它们全部发送到一个单一的AreaCalculator中,然后使用FeatureTypeFilter函数,将它们再次分离成不同的数据流。

左图:

将Rivers,RailandRoads,Buildings和Schools要素合并起来,通过函数,然后再将它们分离成之前的要素类。

提示:

在Workbench导航方框中的TransformerGallery中,会有一栏专门介绍Filter函数的分类。

下图:

ransformerGallery中的Filter分类。

 

基本函数

使用一些基本函数就能够处理,调整属性,因此这些函数能更好地域目标模式相匹配,例如,复制或重新命名一个属性。

AttributeRenamer

这个函数能够重新对一个属性进行命名。

通过重新命名一个源属性,就能使它符合目标属性,即使是已经添加,删除或改变了要素连接,也能够自动地在工作空间中改变属性名。

 

AttributeCopier

 这个函数与AttributeRenamer,函数相似,在新的属性名之下复制一个属性的副本,同时仍保留之前的属性。

例如,AttributeRenamer与AttributeCopier之间的区别是,在AttributeRenamer函数中会清除之前的属性,但是在AttributeCopier中仍然保留了之前的属性。

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

当前位置:首页 > 初中教育 > 政史地

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

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