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