FeatureMerger(要素合并)
0 定义
通过相同的属性值或者表达式来合并两个数据源的属性或图形。
1 如何工作
1、通过两个接口接收数据源,一个是Requestor,一个是Supplier:
-
Requestor(请求者)
:请求者将会合并新的属性或图形。 -
Supplier(提供者)
:提供者用于提供新的属性或图形。
2、通过相同的属性连接匹配。
通过参数窗口的 Join on 参数栏设置匹配属性。
1.1 举个栗子
假设我们有2个的表格,名字是主键,我们将通过名字进行关联。
+
=
1.2 工作流
将2个表格分别连接到Requetor和Supplier上,设置好输出表格(属性模式选择”自动“,会自动读取所有的属性字段),将输出表格连接到Merged输出端口。
输出端口 | 说明 |
---|---|
Merged | Requestor匹配上Supplier的记录会合并在一起然后输出 |
UnmergedRequestor | 输出没有匹配上的Requestor的记录 |
UsedSupplier | 输出被使用的Supplier记录 |
UnusedSupplier |
输出 没有 被使用的Supplier记录 |
Rejected | 输出被拒绝的记录,例如重复的记录 |
2 参数说明
2.1 参数设置
在 Join On 栏中设置Requestor和Supplier用于匹配的属性字段,可以是属性或者是表达式。
2.2 重要参数详解
2.2.1. Group By(分组)
选择一个字段,将数据分组,然后Requestor和Supplier将根据相同的分组进行匹配,不会匹配到不同组的记录。
将数据进行分组后匹配能够提高转换器运行效率。
2.2.2. Feature Merge Type(合并模式)
- Attributes Only: 只合并属性(根据在Attribute Accumulation中设定的属性合并规则合并)
- Geometry: 只合并图形(如果同一记录下Request和Supplier都有图形,将会被Supplier的图形替换)
- Attribute and Geometry: 合并属性和图形(属性根据Attribute Accumulation设定的规则合并,图形以Supplier为准)
2.2.3. Process Duplicate Suppliers(处理重复提供者)
如果不勾选,Requestor只会匹配到第一个匹配上的Supplier,其余重复的Supplier将会被拒绝,从Rejected端口输出。
如果勾选,重复的Supplier将会一起合并到Requestor中,但是属性任然只会使用第一个提供者的;多个提供者的图形则会以聚合或者重构的形式出现,用于替换请求者的图形。
PS:FME默认设置为遇到Rejected要素会中断运行,可以在导航栏中的Workspace Parameters>Translation>Rejected Feature Handing选项中切换Terminate Translation为Continue Translation,让FME遇到Rejectid要素会继续运行。
2.2.4. Attribute Accumulation(属性合并方式)
- Merge Supplier: 合并提供者,在该模式下可以选择Conflict Resolution(冲突解决模式)。Use Requestor或Use Supplier,即属性发生冲突时使用请求者或提供者的属性。
- Prefix Supplier: 前缀提供者,设置前缀后的提供者属性将与请求者的属性并列。
- Only Use Supplier: 只使用提供者,抛弃请求者的所有属性,只使用提供者的属性。
2.2.5. Generate List(生成列表)
因为Merged端口只会输出Requestor端口输入的匹配记录,只会展示匹配到的第一条提供者信息,无法展示一对多的数据情况。如果存在一对多的对应关系,并且要将这种对应关系展示出来,那就需要生成列表。
勾选Generate List后需要指定列表名称,和生成列表的属性字段,可选All Attributes(全部字段)或Selected Attributes(选择字段)。
生成列表之后需要通过ListExploder(列表暴露)转换器将列表数据暴露出来。在ListExploder转换器中选择要暴露的列表名称,设置属性合并模式即可。
3 我的博客
想了解更多关于FME信息的可以关注一下我的个人博客:
蓝线白框
(https://www.luojunpeng.com)
打不开的话请戳这里:
博客地址