第8页
第4排
许多FME变压器专门设计用于列表属性。这些可以用来创建,操纵,转换,分析列表。
一些最重要和最常用的列表变压器是:
我们将在下面更详细地探讨这些列表中的每个特定变压器!还提供了一些变压器列表FME轮毂
在FME工作台中下载并打开这些工作区模板,以查看正在运行的List Transformer的一些示例。
请参阅表,查看六个变压器中的哪一个出现在每个工作区模板中:
工作区模板:列表分解器.fmwt
这个列表分解器是常用的列表转换器。事实上,在我们487台变形金刚的总画廊中,它的人气排在第32位!其中一个原因是列表分解器它之所以流行,是因为它能够将列表扁平化为具有非列表属性的独特特性:它本质上是将列表分解为其组成元素,为每个列表元素创建一个功能。使用城市树点数据使用变压器创建列表以教程为例,生成的架构运行在列表分解器如下所示:
注意列表中的每个列表属性_树木
成为每个功能输出中的独立属性列表分解器.同时注意新的_元素索引
属性,它指示每个功能的源列表元素索引:这是源列表中每个元素(即_树0,_树1,_树2
)已作为单个功能输出。
让我们转到列表分解器工作区是一个更彻底的例子。此工作区显示如何读取一组多边形功能,将每个顶点的坐标对提取到列表属性中,然后使用列表分解器将这些分解成单独的特征,准备作为文本文件中坐标对的行写入。
工作区读取空间数据集-在本例中,从mapinfo选项卡文件中存储数据。数据整理好了,坐标是从每个多边形中提取出来的,并作为一条由分号分隔的长值行存储在单个属性中。
斯坦利公园的这个很有趣:
既然我们有了所有的坐标,我们可以将这个长属性值转换为列表属性。
这里是斯坦利公园的坐标,但在列表格式中:
请记住,我们的最终目标是输出如下所示的文本文件:
斯坦利公园491042.125460549.07490995.165460561.47490991.535460562.19。..
我们基本上希望文本文件中的每一行都是FME中的一个特性,但是,我们目前在一个特性中的列表属性中包含了一个公园的所有坐标。这是一个完美的场景列表分解器,请因为它将把坐标列表展平为各个特征,每个列表元素一个。如果运行工作区,注意,功能计数从74
到4301个
在经历了列表分解器.
我们可以深入研究列表分解器参数来查看引擎盖下发生了什么。在“属性累积”标题下列表分解器参数,可以确定要保留哪些属性,以及在分解特征上使用什么累积模式。这里要问的主要问题是,“我想留下来吗?全部的属性,或者,我想优先考虑保留原始数据集或分解列表中的属性吗?”
“属性累积参数”中存在许多组合,我们建议咨询列表分解器变压器文件对于所有可能性的详细描述,但继续阅读,寻找一个简单明了的解释!
简而言之,有三种累积模式:
在上述任何累积模式中,如果原始属性和列表属性彼此重复,它们是根据冲突解决
参数,它本身可以优先考虑原始属性或列表属性。你的脑袋有很多参数,但请记住,游戏中有两组属性——它们来自于原始特性,以及包含在正在爆炸的列表属性中的。关键是保留或删除这些属性的子集。
在工作区内,与列表操作并行,将为每个风场创建一个标题功能,并将其排序到坐标列表中,以便风场名称显示在输出文本文件中每个列表的开头。
查看最终输出,了解我们在读取源数据后所取得的进展:
当我们读取公园数据时,FME将所有这些几何信息存储在后台。我们将它提取到一个单独的属性中,该属性包含一个长的值列表。然后我们使用元素索引将数据操纵到一个实际的列表属性中。因为fme识别列表属性的结构,我们能够将每个元素转换成一个不同的特性,这样文本文件中的每一行都代表一个坐标对。
类似于李斯特,一列表索引器将列表属性映射到新功能。然而,不是分解所有列表属性,它只在给定的元素索引(例如0,1个,2.。
)。例如,一列表索引器应用于列表分解器上面的示例将给出完整的坐标列表以及一个新的属性,其中包含来自在Transformer参数中定义的给定索引的一对坐标。在这种情况下,指定的索引是0
新属性的前缀是“1st”,因为它是列表的第一个坐标:
工作区模板:使用lists.fmwt
这个列表元素计数器 是计数器变压器,它为特征添加了一个数字属性,使用每个新的传入功能增加值。柜台在列表元素计数器统计传入列表中的元素数,而不是传入功能类型中的功能数。我们可以把这个变压器和统计计算器 在我们的列表上运行报告。
例如,在提供的工作区中,这个列表元素计数器计算中的元素_公园
列表。因为元素的数目代表一个特定多边形内的点的数目,输出可以回答以下问题:公园里发现的树最少多少?最重要的是什么?有多少公园有树?
在这里我们可以看到,中国溪公园北有一个列表元素计数为2,因为我们的_公园
列表:
工作区模板:使用lists.fmwt和列表柱状图.fmwtT
这个列表柱状图 构建列表中找到的值的柱状图,并在新的列表属性中返回这些值。将对新列表进行排序,使出现次数最多的值位于第一位。将此转换器与中的数据一起使用使用列表工作区,我们可以很容易地找到树木最多的公园,也可以知道每个公园中代表了多少物种。作为奖励,您可以指定自己的柱状图列表名称,使一个功能上可以有多个柱状图。
在这里,我们使用列表柱状图以下内容:
在列表柱状图工作区,用户需要计算每种类型有多少个功能(区
)在一组分区数据中。这可以通过创建一个人工聚合和源数据列表来实现,然后通过列表柱状图.
工作区实际上更进一步:它使用自定义转换器将柱状图转换为一组属性和值。它还显示了属性Exposer从分区数据中导入值,以便新生成的属性都可以被公开和检查。
工作区模板:使用lists.fmwt
这个列表连接符可用于将列表和字符串中的元素组合成逗号分隔的单个属性值。这对于将列表信息的部分提取到单个属性中很有用。
在我们的示例中,我们可以添加一个逗号分隔的树ID
每个公园的信息值。
事实上,它甚至不必只是一个逗号分隔的列表——您可以将分隔符指定为您想要的任何字符。甚至可以使用换行符等特殊字符。
工作区模板:列表生成器.fmwt
有时您可能需要手动创建一个列表-列表生成器Transformer通过将一组功能的属性组合到一个列表结构中来实现这一点。这个列表生成器可以被认为是列表分解器,请或者将特性及其属性聚合到一个包含列表属性中所有数据的特性中。
在列表分解器工作区,我们希望查看此结构中文本文件中的数据:
[公园名称][顶点.coordinatepair0][顶点.coordinatepair1]。.[公园名称]。..
视觉效果很好,非常适合记录,以及在其他系统中使用的灵活格式。然而,如果我们想保持相似的逻辑结构,每个公园名称都有一个坐标列表,但保留了列表数据格式的强大功能,我们可以使用列表生成器而不是列表分解器操纵我们的坐标。
在这个例子中,这个列表生成器聚合所有元素_协调人
属性由创建特性垃圾以及公园名称
.因为group by参数设置为group by公园名称
,请每个公园输出一个功能,包含该公园所有坐标的嵌套列表!
列表生成器参数:
输出在结构上与我们的可视文本输出非常相似,但以列表格式。注意嵌套结构和公园名称
现在是_协调员
列表。我们只是将多个属性组合成一个列表,然后从列表中创建一个列表!名单太多了。
注:该列表生成器是否删除几何图形,因此有必要使用变极器或类似的变压器,如果需要几何结构。
此处使用的数据源于温哥华市,请不列颠哥伦比亚省。它包含根据开放政府许可证(温哥华)获得许可的信息。
?2019安全亚搏在线软件公司|法律