span8
span4
在动态工作空间中,writer模式不是从标准工作空间定义中获得的,而是从现有数据集的模式或列表属性构造的模式中获得的。
在大多数情况下,writer模式是从单个源获得的,但是有时一个writer模式需要从多个源构建。
本例使用列表属性构造writer模式的技术,但是使用多个源来获得所需的信息。这是一种能够将不同的数据集合并在一起,并用一个组合模式将它们写出来的方法——所有这些都是动态的。
具体来说,这里的工作空间转换了一个公园数据集。需要将来自辅助数据集的属性添加到公园并将其写出来。因为这些属性是事先不知道的,所以有必要使用动态翻译;因为有多个模式源,所以必须使用使用列表属性的技术。
如前一篇文章所述,构建动态模式所需的列表属性是attribute{}.name和attribute{}。fme_data_type——这两个列表属性定义了writer模式属性的名称和数据类型。
除了从头构建这些数据外,还可以使用名为“Schema(任意格式)”的读取器格式直接从主数据集中提取这些数据。,例如:
属性 | 价值 |
{0}.fme_data_type属性 |
fme_int16 |
{0}. name属性 |
ParkId |
{1}.fme_data_type属性 |
fme_int16 |
{1}. name属性 |
RefParkId |
{2}.fme_data_type属性 |
fme_varchar (40) |
{2}. name属性 |
ParkName |
类似地,可以从辅助数据源提取属性列表:
属性 | 价值 |
{0}.fme_data_type属性 | fme_varchar (30) |
{0}. name属性 | ZoneName |
{1}.fme_data_type属性 | fme_varchar (30) |
{1}. name属性 | ZoneCategory |
工作空间要解决的主要问题是将这两个列表合并到一个输出模式定义中。
工作空间看起来是这样的:
有三个读者:
模式读取器从源数据集(主数据集和次数据集)读取模式,因此发出两个特性。属性列表被分解为每个属性创建一个特性,然后使用聚合转换器将其合并回单个列表。使用AttributeKeeper转换器删除多余的模式信息:
读取主数据集和次数据集——这里的主数据集是固定的,但是次数据集是通用的/动态的——信息从次数据集传输到主数据集(这里使用了SpatialFilter):
最后,使用FeatureMerger transformer将模式列表属性合并到主要特性上:
编写器功能部件类型是动态设置的,并将模式功能部件用作模式源。
运行工作区并检查输出。你会发现现在每个公园都有关于公园所在开发区的信息。
重要的部分是,您可以将源分区数据集更改为其他内容(任何格式),并且这些特性的属性将被动态附加并在输出中使用。
1.添加阅读器和模式
添加两个MITAB读取器,一个用于区域数据,一个用于公园数据,确保为这两个数据选择单一的合并功能类型。然后添加一个模式读取器。对于模式阅读器,添加区域。tab file first and then click on the parameters.在要公开的其他属性的参数中,添加以下列表。然后单击ok将阅读器添加到工作区。在Navigator窗口中,最大化区域[模式]并单击源数据集。单击下拉菜单,然后单击“选择多个文件/文件夹”。添加一个公园。标签文件。
2.设置SpatialFilter
通过过滤器输入端口将SpatialFilter连接到区域写入器,通过候选输入端口将Parks写入器连接到区域写入器。在参数中设置空间谓词进行测试:
3.ListExploder
向模式写入器添加一个列表生成器。在参数设置列表中属性设置为属性{}。
4.聚合器
将聚合器连接到listscalder上的元素输出端口。设置累加模式以合并传入属性。检查生成列表,将列表名设置为属性,并为选定的属性添加fme_data_type和Name
注意:较老版本的FME将没有添加到列表或选择属性参数。如果打开附加的模板,它也会丢失参数,因为工作区是用旧版本创建的。我离开的模板,以便用户与老FME仍然可以使用它;但是要获得这些参数,只需右键单击并选择Upgrade Transformer。
5.AttributeKeeper
我们只对保留我们公开的两个属性感兴趣。在聚合器之后添加一个AttributeKeeper。在参数中选择列表中的…以保存和选择属性{}。fme_data_type和{}. name属性
6.FeatureMerger
为了将所有东西合并在一起,我们将使用FeatureMerger。将SpatialFilter上传递的输出端口和失败的输出端口连接到Requestor输入端口,将AttributeKeepers输出端口连接到FeatureMerger上的Supplier输入端口。在FeatureMerger参数中,将请求者设置为3,将供应商设置为3,其余都保持默认值。
7.写信给动态作者
将MITAB写入器添加到工作空间,确保将其设置为Dynamic (Advanced)。将它连接到FeatureMerger上合并的输出端口。一旦添加到工作区,在参数中将模式源设置为“模式来自模式特性”。将检查器连接到合并的输出端口并运行翻译。
©2019安全亚搏在线软件公司法律