span8
span4
条件属性映射介绍
条件映射使用SchemaMapper的“过滤功能”行动。它是一种定义简单条件子句的方法,用于根据特定条件执行属性映射。
在本教程中,我们将操作一个包含温哥华水主要数据的单层。这一层可以分成几层被遗弃的
和活跃的
管道基于一个属性,我们将使用这个值以及条件子句,以两种方式重新映射该层的模式:1)使用属性值作为过滤器,2)使用FME特性类型作为过滤器。
源数据都在一个图层上,看起来像这样:
工作区模板:conditionalattributemapping.fmwt
步骤1 -水管架构包含命名的属性OBJECTID
和LifecycleStatus
,这两个都会在我们的条件过滤器中起作用。在数据检查器中打开数据集并查看LifecycleStatus
一些特性的属性。您会注意到它有两个值被遗弃的
或价值活跃的
:
对于我们的教程,取决于的值LifecycleStatus
,fme_feature_type
属性将映射到其中之一被遗弃的
或活跃的
和OBJECTID
将被重命名为AbandonedID
或ActiveID
。
如果我们的条件属性映射查找表遵循简单的结构中使用属性映射的文章左边的列保存我们开始时的属性和值,右边的列指定我们想要的输出,表看起来应该是这样的:
1 SourceAttribute,DestinationAttribute 2 OBJECTID,AbandonedID 3 OBJECTID,ActiveID
这个查找表的问题是OBJECTID
在SourceAttribute下两次定义为一个源(因为我们希望以两种不同的方式映射它)。这显然是有问题的;我们需要给出更明确的指示。要纠正这一点,需要添加一个子句,说明何时使用哪个定义。
1 . FilterAttribute,FilterAttributeValue,SourceAttribute,DestinationAttribute 2 LifecycleStatus,,OBJECTID, onedid 3 LifecycleStatus,Active,OBJECTID,ActiveID
这里的工作逻辑如下:
包含包含如果LifecycleStatus =放弃那么OBJECTID➜AbandonedID如果LifecycleStatus =活跃那么OBJECTID➜ActiveID
步骤2 -在我们的演示工作区中,打开SchemaMapper转换器的参数。这里为您提供了一个查找表——您可以随意检查查找表阅读器参数预览面板,以了解表的结构。
步骤3 -单击“创建操作参数”窗口。注意,我们有两个操作—一个用于过滤特性,另一个用于映射属性。
Filter Features动作定义where子句LifecycleStatus属性= LifecycleStatus值
:
Map Attributes操作定义了属性映射的位置SourceAttribute
就变成了DestinationAttribute
:
同样值得注意的是Source属性:Keep / Remove选项。选择Remove的目的是对数据进行整理,并将重点放在重新映射的属性值而不是原始属性值上。使用Keep选项将保留原始文件OBJECTID
字段和值以及新值。
步骤4 -接受参数并返回到工作区。我们的单一水管层现在已经逻辑上分为两个基于LifecycleStatus
属性:我们有标记为an的特性AbandonedID
和特征标记为ActiveID
。使用一个AttributeFilter,我们现在可以将这两组功能映射到两个传出的功能类型,并编写AutoCAD文件。
这是完成的工作空间的图片:
因为Workbench不知道SchemaMapper中存在正确的映射,所以目标属性被标记为unconnected(出现在writer属性下拉菜单中的红色三角形)。然而,当工作空间运行时,输出将是正确的,因为属性存在,只是没有公开。
或者,AttributeExposer可以使用transformer公开这些新属性,并使写入器属性以可见的方式连接。
工作区模板:conditionalattributemappingusingfeaturetypes.fmwt
筛选不限于用户定义的属性,因为也可以根据格式属性进行筛选。一个有用的格式属性的例子是fme_feature_type
,其中包含特性类型名称。执行此任务的关键是在查找表中提供FME格式属性。在下面的例子中,工作空间中存在两种特性类型:Water_Distribution / wControlValve
和Water_Distribution / wMain
。我们希望根据读取的特性类型重命名结果模式中的属性。
要创建此工作流,我们需要一个使亚搏在线用> fme_feature_type
属性。工作区模板中提供了一个查找表,但您可能希望创建自己的查找表,如下图所示:
1 FilterAttribute FilterAttributeValue SourceAttribute, DestinationAttribute 2 fme_feature_type Water_Distribution / wControlValve OBJECTID, ValveID 3 fme_feature_type Water_Distribution / wControlValve,直径,ValveDiameter 4 fme_feature_type Water_Distribution / wMain OBJECTID, PipeID 5 fme_feature_type Water_Distribution / wMain PipeDiameter直径
与条件属性映射一样,查找表中的每一行都定义了一个模式映射规则。这个查找表的第一条规则是:
如果功能类型名称= Water_Distribution/wControlValve,则OBJECTID成为ValveID
SchemaMapper转换器创建动作对话框反映了上面给出的示例表。例如,在预设过滤器功能动作窗口,两列规定的属性过滤器部分的规则突出显示:
运行工作区,注意AttributeFilter分隔了我们的两个特性类型,并且我们已经重新映射了我们的OBJECTID
属性。
这是完成的工作区:
下载内容如下:
这里使用的数据来源于由温哥华的城市不列颠哥伦比亚省。它包含在政府公开许可下的信息-温哥华。
额外的资源
©2019安全亚搏在线软件公司|法律