span8号
第4排
动态工作区是指不是从标准工作区定义中获取编写器架构的工作区,但是来自现有数据集的模式或使用列表属性构造的模式。
在大多数情况下,编写器模式是从单个源获取的,但是,有时需要从多个源构建单个编写器模式。
此示例使用使用列表属性构造编写器模式的技术,但是使用多个来源来获取这样做所需的信息。这是一种能够将不同的数据集合并在一起并用组合模式写出它们的方法——所有这些都是动态的。
明确地,在这里,工作区转换公园的数据集。二级数据集中的属性需要添加到公园中并写出。因为这些属性事先不知道,有必要使用动态翻译;而且因为有多个模式源,所以必须使用使用列表属性的技术。
如前一篇文章所述,构建动态模式所需的列表属性为attribute。name和attribute。fme data _type-这两个列表属性定义了编写器模式属性的名称和数据类型。
以及从零开始建造,可以使用名为“模式(任何格式)”的读卡器格式直接从主数据集中提取这些内容,例如:
属性 | 价值 |
属性0.fme _数据类型 |
故障模式与后果分析Int16 |
属性0.name |
公园ID |
属性1.fme _数据类型 |
故障模式与后果分析Int16 |
属性1.name |
重新停车ID |
属性2.fme _数据类型 |
故障模式与后果分析(40) |
属性2.name |
公园名称 |
同样,可以从辅助数据源提取属性列表:
属性 | 价值 |
属性0.fme _数据类型 | 故障模式与后果分析(30) |
属性0.name | 地区名 |
属性1.fme _数据类型 | 故障模式与后果分析(30) |
属性1.name | 区域分类 |
工作区要解决的主要问题是将这两个列表合并到一个输出模式定义中。
工作区如下所示:
有三个读者:
模式读取器从源数据集(主数据集和辅助数据集)读取模式,因此发出两个特性。属性列表被分解为每个属性创建一个特征,然后使用聚合转换器将其合并回一个列表。使用attributekeeper转换器删除多余的架构信息:
读取主数据集和辅助数据集-这里的主数据集是固定的,但是辅助数据集是通用的/动态的-并且信息从辅助数据集传输到主数据集(这里使用空间过滤器):
最后,使用FeatureMerge Transformer将模式列表属性合并到主要功能上:
编写器功能类型是动态设置的,并将架构功能用作架构源。
运行工作区并检查输出。你会发现每个公园现在都有关于公园所在开发区的信息。
重要的是,您可以将源分区数据集更改为其他内容(任何格式),这些功能的属性将动态附加并在输出中使用。
1.添加读卡器和架构
添加两个Mitab读卡器,一个用于区域数据,一个用于公园数据,确保为两者都选择了单个合并的功能类型。然后添加模式读取器。对于模式读取器,首先添加zones.tab文件,然后单击参数。在要公开的其他属性的参数中,添加以下列表。然后单击“确定”将读卡器添加到工作区。在导航器窗口中,最大化区域[模式]并单击源数据集。单击下拉列表,然后单击选择多个文件/文件夹。添加parks.tab文件。
2.第二步。设置空间过滤器
通过过滤器输入端口将空间过滤器连接到区域编写器,通过候选输入端口将公园编写器连接到区域编写器。在参数中,设置要测试的空间谓词:
三。列表分解器
将ListExploder添加到架构编写器。在参数中,将列表属性设置为属性。
第四章。聚合器
将聚合器连接到ListExploder上的元素输出端口。将累积模式设置为合并传入属性。检查生成列表,将“列表名称”设置为“属性”,并为选定的属性添加“FME数据”类型和名称。
注:旧版本的FME没有“添加到列表”或“选择属性”参数。如果打开附加的模板,它也缺少参数,因为工作区是用旧版本创建的。我将离开模板,以便使用旧的FME的用户仍然可以使用它;但要获得这些参数,只需右键单击并选择升级Transformer。
5.属性keeper
我们只对保留我们公开的两个属性感兴趣。在聚合器后添加attributekeeper。在参数中,选择要保留的…在列表中,然后选择属性.fme数据类型和属性.name
6.特色并购
为了把所有东西合并在一起,我们将使用功能合并。将空间过滤器上的已通过和失败的输出端口连接到请求者输入端口,并将attributekeepers输出端口连接到FeatureMerge上的供应商输入端口。在特征合并参数中,将请求者设置为3,供应商设置为3,将其他所有内容保留为默认值。
第七章。写入动态写入程序
将Mitab编写器添加到工作区,确保将其设置为动态(高级)。将其连接到FeatureMerger上的合并输出端口。一旦添加到工作区,在参数中,将模式源设置为“来自模式功能的模式”。将检查器连接到合并的输出端口并运行转换。
?2019安全亚搏在线软件公司|法律