斯潘8
斯潘4
条件映射利用模式映射器's“filter features”操作。它是一种根据特定条件定义简单条件子句以执行属性或特征类型映射的方法。简而言之,条件特征类型映射是指我们拥有的和我们想要的之间的连接取决于属性的值。
在上一个条件属性映射文章,一个包含温哥华市主要水资源数据的单层被划分为废弃和活跃的特征类型,使用属性筛选器为了分割传入的数据(我们还在SchemaMapper中进行了一些属性重命名,但我们的重点是功能类型
!)
使用条件特征类型映射,这两个数据集可以根据其管道材料进一步划分。
使用SchemaMapper的“功能类型映射”操作和过滤器操作,我们可以构造一个“if”语句来决定如何路由我们的特性类型。下面是一个我们正在研究的逻辑示例:
不带条件逻辑的基本功能类型映射:
如果[existing]FME_feature_type=XXXX,则将[new]FME_feature_type设置为ZZZZ
通过添加过滤器操作,将“和”添加到此现有条件中。
条件要素类型映射:
如果[existing]fme_feature_type=XXXX且attribute=YYYY,则将[new]fme_feature_type设置为zzzz
步骤1-在文本编辑器中,创建一个要在SchemaMapper中使用的查找表(或选择跳到已完成的工作区模板并跳过逐步过程)。SchemaMapper查找表必须同时定义功能类型的子句和属性值的子句。该表应如下所示:
1来源特征类型,来源属性,来源属性值,目的特征类型2活性,材料,钢,钢3活性,材料,铜,铜4活性,材料,铸铁,铸铁5活性,材料,球墨铸铁,管道
第1行包含查阅表格的字段名。其他行包含用于重新构造数据的信息。例如,第2行设置条件执行,如下所示:
如果source feature type=“active”and“material”=“steel”,则destination feature type=“steel”
注:要完全映射此源数据,必须将每个不同的源要素类型和属性值添加到查找表中,否则,它们将从映射操作中排除。
第2步-打开SchemaMapper参数对话框,设置要在csv查找表中读取的转换器。添加一个筛选操作来定义一个子句,其中Material属性=Material值。
第3步-下一步,定义要执行的特征类型映射(如果上述条件为真)。在SchemaMapper中,使用添加→要素类型映射操作并设置源和目标要素类型字段:
重申一下,这里的逻辑是:
如果sourceAttribute=sourceAttributeValue,则将sourceFeatureType映射到destinationFeatureType
完成后,SchemaMapper参数将显示我们的两个操作-一个用于根据属性值筛选功能,一个用于相应地重新映射特征类型:
源数据仅映射到目标功能类型。对于要创建和连接的目标要素类型,需要一个属性过滤器转换器来对重新映射的特性类型进行排序,并将它们适当地路由到我们的编写器特性类型。
完成的工作区将如下所示:
SchemaMapper是可扩展的,因为它允许用户在FME之外编辑查找表,以便在工作区内处理模式转换。在下面的示例中,带有附加属性值的新功能类型将添加到工作流中。亚搏在线
工作区acad reader当前设置有两种功能类型:活动和放弃。
模式,功能类型,这些对象的属性值由我们当前的SchemaMapper设置完美地处理。但是假设我们引入一些新的奇怪的数据?我们的工作流将如何处理转换?亚搏在线
让我们启用附加的特性类型(“更新”),看看是否可以将其集成到当前的工作区中。
“更新”数据集包含两个新的材料属性值:“陶器”和“聚丁烯”。在这种情况下,查阅表格需要同时容纳新的要素类型和新的属性值。为了适应这些新的价值观,更新后的架构信息可以直接添加到查找表中。
为现有查阅表格底部的新要素类型添加以下行:
1更新,材料,陶器,陶器2更新,材料,聚丁烯,聚丁烯
保存查阅表格并返回工作区。在将两种新的特性类型添加到属性过滤变压器中,并添加“陶器”和“聚丁烯”写入特性类型后,工作区现在应该处理查找表中定义的新数据。
此过程的下一步将是使工作流完全动态化,以便在不需要工作区作者预先定义功能类型的情况下读取和写入数据。亚搏在线下面的附加资源部分引用的动态工作空间文章详细介绍了这个主题。
下载包含以下内容:
此处使用的数据源于温哥华市,不列颠哥伦比亚省。它包含根据开放政府许可证(温哥华)获得许可的信息。
?2019安全亚搏在线软件公司|合法的