span8
span4
条件映射使用SchemaMapper的“过滤功能”行动。它是一种定义简单条件句的方法,用于根据特定条件执行属性或功能类型映射。简而言之,条件特征类型映射是指我们所拥有的和我们想要的之间的连接依赖于属性的值。
在前面的条件属性映射在文章中,利用an将包含温哥华城市水主要数据的单层划分为废弃的和活动的特征类型AttributeFilter为了分割传入的数据(我们还在SchemaMapper中进行了一些属性重命名,但是这里的重点是fme_feature_type
!)
使用条件特征类型映射,这两个数据集可以根据它们的管道材料进一步划分。
通过将SchemaMapper的“特性类型映射”操作与筛选操作结合使用,我们可以构造一个“IF”语句来决定如何路由我们的特性类型。下面是我们正在研究的这种逻辑的一个例子:
基本特征类型映射没有条件逻辑:
如果[现有]fme_feature_type = xxxx,则将[新]fme_feature_type设置为zzzz
通过添加筛选器操作,“AND”被添加到此现有条件中。
条件特征类型映射:
如果[现有]fme_feature_type = xxxx和attribute = yyyy,则将[新]fme_feature_type设置为zzzz
步骤1 -在文本编辑器中,创建一个在SchemaMapper中使用的查找表(或者选择跳转到完成的工作空间模板并跳过逐步处理过程)。SchemaMapper查找表必须定义特性类型的子句和属性值的子句。表格应该是这样的:
1 SourceFeatureType 2 Active,Material,Steel,Steel 3 Active,Material,Copper,Copper 4 Active,Material,Cast Iron,CastIron 5 Active,Material, DuctileIron,DuctileIron
第1行包含查找表的字段名。其他行包含用于重组数据的信息。例如,第2行设置条件执行如下:
如果源特征类型=“活动”,“材料”=“钢”,则目标特征类型=“钢”
注意:要完全映射此源数据,必须将每个不同的源特性类型和属性值添加到查找表中,否则它们将被排除在映射操作之外。
步骤2 -打开SchemaMapper参数对话框,设置转换器以读取CSV查找表。添加一个过滤器动作来定义一个Material属性= Material值的子句。
步骤3 -接下来,定义要执行的特性类型映射(只要上述条件为真)。在模式映射器中使用添加→功能类型映射操作,设置源和目标功能类型字段:
重申一下,这里的逻辑是:
如果SourceAttribute = SourceAttributeValue,则将SourceFeatureType映射到DestinationFeatureType
完成后,SchemaMapper参数将显示我们的两个操作—一个用于根据属性值过滤特性,另一个用于相应地重新映射特性类型:
源数据只映射到目标特性类型。要创建和连接目标特性类型,需要使用AttributeFilter转换器对重新映射的特性类型进行排序,并将它们适当地路由到编写器特性类型。
完成的工作空间是这样的:
SchemaMapper是可扩展的,因为它允许用户在FME外部编辑查找表,以便处理工作空间中的模式转换。在下面的示例中,将在工作流中添加具有附加属性值的新特性类型。亚搏在线
工作空间ACAD阅读器目前有两种特性类型:活动的和废弃的。
这些对象的模式、特性类型和属性值由我们当前的SchemaMapper设置完美地处理。但是假设我们引入一些新的奇怪的数据呢?我们的工作流将如何处理转换?亚搏在线
让我们启用我们的附加特性类型(“Update”),看看是否可以将其集成到当前工作区中。
“更新”数据集包含两个新的材料属性值:“Earthenware”和“Polybutylene”。在这种情况下,查询表需要同时容纳新特性类型和新属性值。为了适应这些新值,可以将更新后的模式信息直接添加到查找表中。
在现有查找表的底部为新功能类型添加以下行:
1更新,材料,陶器,陶器2更新,材料,聚丁烯,聚丁烯
保存查找表并返回到工作区。在向AttributeFilter transformer添加两个新特性类型并添加“Earthenware”和“Polybutylene”编写器特性类型之后,工作空间现在应该处理查找表中定义的新数据。
这个过程的下一步是使工作流完全动态,以便在不需要工作空间作者预先定义特性类型的情况下读写数据。亚搏在线这个主题在下面的附加资源部分引用的Dynamic Workspaces文章中有详细的介绍。
下载内容如下:
这里使用的数据来源于由温哥华的城市不列颠哥伦比亚省。它包含在开放政府许可下的信息-温哥华。
©2019安全亚搏在线软件公司法律