ListBasedFeatureMerger
将一组特征的属性和/或几何合并到另一组特征上,基于匹配列表属性值,其中包含密钥属性值和表达式。
典型的使用
- 基于一个共同的键属性值或表达式,组合来自两个不同的特性流的属性和/或几何图形,其中接收特性(Requestor)的键被存储为一个列表属性。
- 将查找表引用到列表属性
它是如何工作的?
ListBasedFeatureMerger基于一个公共键属性或表达式连接两个特性流,其中一个键值是属性列表.列表中的每个值(在每个特性上)都被考虑进行匹配,因为转换器会依次测试每个列表元素是否匹配。
它通过其输入端口接收两个功能流。
请求者:请求者是将接收新属性和/或几何的功能。请求者必须具有列表属性,该属性将被用作加入供应商的密钥。
供应商:供应商提供要合并到Requestors上的属性和/或几何图形。
请求者和供应商之间的匹配根据连接属性在参数对话框中的配置。当指定的键时,Requestor特性与Supplier特性匹配请求者列表属性(例如,列表{}。键)匹配指定的供应商属性参数(例如,supplierKey).
当一个请求者找到一个匹配的供应商时,来自供应商的属性和/或几何图形将与请求者合并。
的不完整的请求者参数指定是否将supplier合并到部分匹配的Requestors上请求者列表属性没有匹配的供应商。如果每个密钥都有一个备用要求功能,则被认为是完全匹配的请求者列表属性匹配一个或多个供应商特性。
- 如果请求者已经具有供应商也具有的属性,则可以保留或覆盖该属性的请求者的原始值。
- 一个供应商可以被多个请求者使用。
- 许多供应商可以合并到单个Requestor上。
- 属性名冲突时,可以使用解决冲突参数,是否使用null值遵循相同的行为忽略null参数。
在这个例子中,我们有一组代表邻居的多边形。它们有一个列表属性-FoodVenders {}-包含唯一id (关键)对于位于该地区的食品卡车。任务是从电子表格合并每个供应商的其他属性。
在工作空间的这一部分,区域(带有列表)特性被路由到ListBasedFeatureMerger的Requestor端口。电子表格被附加到Supplier端口。
在参数对话框中连接属性是否匹配FoodVendors{}。关键列表属性(请求者)关键来自电子表格的属性(供应商).
在合并参数,我们选择合并属性只,和(重要的)过程重复的供应商.这将确保列表中的所有食品供应商都匹配,而不仅仅是遇到的第一个。
最后,我们使之成为可能生成列表,以在输出特性上创建新的列表属性。它将包含所有匹配的业务名称和描述,通过选择属性.注意输入的列表名称 -FoodVendors-与已存在的列表名称相同。这将导致新属性被添加到(并展开)当前列表。如果我们在这里输入一个不同的名称,就会创建一个新的列表属性。
的特性输出检查合并后的港口,我们看到了BUSINESS_NAME和描述已被添加到FoodVenders {}列表,现在可以在工作区的其他地方使用。
使用笔记
- ListBasedFeatureMerger是一个非常具体的实例FeatureMerger处理Requestor属性是列表的情况。如果请求者属性不是列表,则使用FeatureMerger或其他连接方法。
选择特征连接方法
许多变形金刚基于匹配属性,表达式和/或几何来执行数据加入。选择一个特定的加入任务时,考虑因素包括连接,数据格式,索引,冲突处理和期望结果的复杂性。一些变形金刚使用SQL语法,并直接访问外部数据库。他们可能会或可能不支持属性列表阅读和创作。
一般来说,选择一个最具体的任务,您需要完成将提供最佳的性能结果。如果有不止一种方法可以完成(通常是这样),那么在性能测试替代方法上花费时间可能是值得的。由于读取外部表时是否存在关键索引(与工作空间中已经存在的功能相反),性能可能会有很大差异。
变压器 |
搭配 |
使用SQL语句 |
可以创建列表 |
输入类型 |
值得注意的 |
描述 |
---|---|---|---|---|---|---|
FeatureJoiner | 属性 | 没有 | 没有 | 特性 |
|
通过基于公共键属性值组合特性的属性和/或几何形状来连接特性。执行等同于Inner、Left和Full SQL连接的操作。 |
FeatureMerger | 属性 | 没有 | 是的 | 特性 |
|
将一组功能的属性和/或几何合并到另一组特征上,基于匹配的密钥属性值和表达式。 |
ListBasedFeatureMerger | 列表属性为单一属性 | 没有 | 是的 | 特性 |
|
根据匹配,将一组特征的属性和/或几何形状合并到另一组特征上属性列表带有键属性值和表达式的值。 |
inlinequerier | SQL查询 | 是的 | 没有 | 特性 |
|
从引入的特性创建一组SQLite数据库表,对它们执行SQL查询,并将结果作为特性输出。 |
SQLCreator | SQL查询 | 是的 | 没有 | 外部数据库 |
|
根据对数据库执行一次SQL查询的结果生成FME特性。为SQL查询结果的每一行创建一个FME特性。 |
SQLExecutor | SQL查询 | 是的 | 没有 | 外部数据库 |
|
对数据库执行SQL查询。对于进入转换器的每个初始特性,都会向数据库发出一个查询。初始特性和查询结果都可以作为特性输出。 |
databasejoiner. | 属性 | 没有 | 是的 | 外部DB及特性 |
|
基于一个或多个通用键,将外部表的属性连接到工作空间中已经存在的特性。不需要SQL知识。非阻塞的变压器。 |
匹配器 | 几何和/或属性 | 没有 | 是的 | 特性 |
|
检测彼此匹配的特征。当特性具有匹配的几何形状、匹配的属性值或两者都具有时,它们就被声明为匹配。还可以指定特性之间必须不同的属性列表。 如果只匹配属性(而不是几何形状),使用featuremerge或其他方法将提供更好的性能。 |
配置
输入端口
具有要连接的列表属性的特性,并将从连接到的特性接收新的属性和/或几何形状供应商端口。
通过进入的功能的新属性和/或几何的来源请求者端口。
输出端口
具有匹配供应商的请求者为指定的所有键请求者列表属性只有完全匹配的请求者才输出到这个端口。
此端口用于标记为不完整的并保留了这个标签的语义。因此,这个端口标签是' notfulllymerged '的简写。部分匹配的Requestors输出到这个端口,和所有匹配的供应商合并到输出特征不完整的请求者被设定为合并供应商信息.如果钥匙在请求者列表属性为空时,该键将不匹配任何供应商,因此,Requestor特性将输出到该端口。例如,如果Requestor键是:
{0}。关键= 1
{1}。关键=零> <
列表{2} .key = 3
此外,还有'supplierKey'值为1、
被合并到至少一个Requestor上的供应商。
供应商做的不匹配任何请求者。如果一个供应商属性键值为空或缺失时,该特性将输出到该端口。
参数
集团 | 输入特征可以用集团参数。如果你选择集团属性,那么特性之间的引用只有在它们共享所选属性的公共值时才会被解析。 如果你不选择集团属性,所有的特征一起处理。 如果您有多个阅读器,则典型用途是通过Reader_ID进行组,以确保在正确的功能集中解析引用。 |
组的模式 | 进程结束(阻塞):这是默认行为。只有当所有输入都存在时,才会在这个转换器中进行处理。 组更改时的处理(高级):此变压器将按顺序处理输入组。输入流上Group By参数值的更改将触发对当前累积组的处理。这可能会提高整体速度(特别是对于多个大小相同的组),但如果输入组不是真正有序的,可能会导致不希望的行为。
考虑使用集团
有两个典型的使用原因组更改时的处理(高级).第一个是要分组处理的传入数据(并且已经按顺序排列了)。在这种情况下,结构规定了按用法分组——而不是考虑性能。 第二个可能的原因是潜在的性能提升。 最有可能在已经对数据进行排序的(或使用A读取SQL命令声明)由于FME需要更少的工作。如果数据需求排序,则可以在工作区中排序(尽管添加的处理开销可能会否定任何增益)。 根据数据流的数量进行排序变得更加困难。多个数据流几乎不可能按正确的顺序排序,因为所有的特征都匹配集团值需要在属于下一组的任何特性(任何特性类型或数据集)之前到达。在本例中,使用集团与进程结束(阻塞)可能是等同和更简单的方法。 注意:多个特征类型和来自多个数据集的特征通常不会自然地以正确的顺序出现。 与许多场景一样,在工作区中使用数据测试不同的方法是确定性能增益的唯一确定方法。 |
请求者列表属性 | Requestor特性上的list属性,其键将与供应商属性在供应商的特性。 |
供应商属性 | 供应商功能的属性将与键匹配请求者列表属性对于请求者功能。 |
比较模式 | 指定如何执行Requestor和Supplier属性值之间的比较。如果自动或数字时,将尝试在比较属性值之前将属性值转换为数字。如果数值转换失败,将使用字符串比较。 |
功能合并类型 | 属性仅:供应商属性将与请求者特性结合。属性将根据属性累加和生成列表参数进行合并 几何学:供应商几何图形将被合并到Requestors中,并将替换任何现有的几何图形。属性没有合并。 属性和几何:来自供应商的几何图形和属性都与Requestor特性相连。Requestor上的任何几何图形都会被覆盖。属性将根据属性累加和生成列表参数进行合并。 |
过程重复的供应商 | 如果在给定的Requestor中找到多个Supplier,则过程重复的供应商是没有,则第一个之后的每个Supplier通过<拒绝>端口,只有第一个供应商将与请求者匹配。 如果设置为是的,则所有重复的provider都与相应的Requestor合并属性进行匹配属性积累模式,使用指定的模式,以及可选地作为请求者的属性列表输出列表名称.使用指定的名称合并供应商几何图形几何合并类型. |
几何合并类型 | 构建多边形:如果供应商只包含多边形和甜甜圈多边形特征,任何共同的边界段将被删除。如果供应商包含至少一个非甜甜圈或非多边形特征,那么转换器将从供应商中形成多边形和甜甜圈,并在设置请求者特征的几何形状之前连接供应商特征的已连接线段。在这种情况下,如果创建了几个不相交的几何图形,则几何图形可能是一个聚合。 构建总量:转换器将创建Supplier特性的几何图形聚合。(如果只有一个Supplier特性,那么Requestor几何结构将是一个元素的聚合。) 从点构建线路:变压器将供应商特性的点连接成线。注意,在构建行时,引用的任何非点特性都将被忽略。 |
不完整的请求者 | 该参数控制部分匹配的请求者。 如果此参数设置为合并供应商信息,则找到的供应商将被合并到Requestor中,然后通过unmergedRequestor端口。使用的供应商将通过UDUNSUPPLIERS.端口。 如果此参数设置为不合并供应商信息,然后将通过该请求者进行输出unmergedRequestor港口和供应商将通过未使用者端口。 |
如果Supplier和Requestor特性上的属性共享相同的名称,但不是以FME_,那么他们就被认为是矛盾的。
累积模式 | 合并供应商请求者特性将保留所有自己的非冲突属性,并将额外获得供应商特性的任何非冲突属性。该模式将处理基于解决冲突参数。 前缀供应商请求者特性将保留它自己的所有属性。此外,Requestor将获得反映供应商特性属性的属性,名称以前缀参数。 只使用供应商:请求器功能将删除其所有属性,除了从中开始的几何属性FME_.然后,一个(任意的)Supplier特性的所有属性将被放置到Requestor上。 |
解决冲突 | 使用请求者:如果发生冲突,将保持Requestor值。 使用供应商:如果发生冲突,供应商的值将转移到请求者。 |
忽略null | 没有:像对待其他属性值一样对待null属性值。 是的:将null属性值视为不如其他属性值不那么重要。无论何种空值都合并为非空值,无论何种方式都要占用非空值解决冲突设置为。 注意:null和其他属性值始终比缺少属性值更大。也就是说,无论何时属性值都与缺少属性值合并,无论如何,属性值应占用忽略null和解决冲突设置。 |
前缀 | 为了防止由于Requestor属性已经存在而忽略Supplier属性,您可以选择指定一个前缀,该前缀将在添加到Requestor时应用于每个Supplier属性。 当一个Requestor特性有多个Supplier特性时,多个Supplier属性值将合并到同一个带前缀的属性中。当多个Supplier特性具有相同属性时,通常会从最后一个特性中获取生成的属性值。然而,这个过程是由忽略null参数。 |
如果有重复的供应商和生成列表是启用的,那么任何与Requestor组合的供应商将有他们的属性添加到Requestor上的指定列表。
注意:属性列表从工作台中的输出架构无法访问,除非首先使用在它们上操作的变压器处理它们,例如ListExploder或ListConcatenator.另外,AttributeExposer可以使用。
列表名称 | 为列表属性输入一个名称。 |
添加到列表 | 所有属性:与Requestor组合在一起的Supplier的每个属性都将被添加到列表名称. 选择属性:属性中指定的属性选择属性的列表中指定的列表名称. |
选择属性 | 要添加到列表的属性添加到列表是选择属性. |
编辑变压器参数
使用一组菜单选项,可以通过引用工作空间中的其他元素来分配转换器参数。更高级的函数,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击除适用参数外。有关更多信息,请参见变压器参数菜单选项.
定义值
有几种方法可以定义在Transformer中使用的值。最简单的方法是简单地输入值或字符串,其中可以包括各种类型的函数,如属性引用、数学和字符串函数以及工作空间参数。有许多工具和快捷方式可以帮助构造值,通常可以从值字段附近的下拉上下文菜单中获得。
使用文本编辑器
Text Editor提供了一种方便的方法来从各种数据源(如属性、参数和常量)构造文本字符串(包括正则表达式),其中结果直接在参数中使用。
使用算术编辑器
算术编辑器提供了一种方便的方法来构建来自各种数据源的数学表达式,例如属性,参数和特征函数,其中结果直接在参数内使用。
有条件的值
根据一个或多个通过或失败的测试条件设置值。
内容
表达式和字符串可以包括许多函数,字符,参数等 - 是否直接在参数中输入或使用其中一个编辑器构造。
参考
处理行为 |
|
功能持有 |
是的 |
依赖关系 | 没有任何 |
FME授权级别 | FME基本版及以上 |
别名 | |
历史 | |
类别 |
FME社亚搏国际在线官网区
FME社区是演示亚搏国际在线官网、操作指南、文章、faq和更多内容的地方。获得问题的答案,向其他用户学习,并对新功能提出建议、投票和评论。
搜索关于ListBasedFeatureMerger的所有结果在FME社区。亚搏国际在线官网
例子可能包含在开放政府许可证-温哥华下许可的信息