斯潘8
斯潘4
此示例旨在演示基于组的(阻塞/特征保持)转换器如何导致工作区中的数据流中断。
此工作区是一个简单的工作区,它读取人的数据集(以形状格式)。测量它们的高度,并将其写回另一个数据集(再次以形状格式):
NB:连接变压器的存在只是为了帮助说明翻译中的相关事件。
重要的是,分拣机中断了通过工作区的功能流,这可以用来证明这个概念的一些关键点。为此,执行以下操作。
1)打开工作区(或模板)。右键单击读卡器功能类型People和连接变压器之间的连接。选择添加断点的选项。
2)从菜单栏中选择运行>带断点运行:
确保功能缓存(完全检查)已关闭!断点和功能缓存彼此不兼容。
现在运行工作区。请注意,从源数据中读取单个功能,并在断点处暂停转换。打开一个对话框检查功能:
3)点击Feature Inspector窗口上的“Step to Next Connection”按钮。这会将功能移到下一个连接(连接->长度计算器)。红线表示这一点。再次单击“Step to Next Connection”(下一步连接)按钮,该功能将从长度计算器:输出端口中出现。请注意,它现在有一个高度属性:
4)再次单击“下一步连接”按钮。在分拣机变压器和第二个变压器进入工作区之前,原始功能已经停止。
教训:分拣机变压器是基于组的变压器。它要求所有源功能在处理任何数据之前都存在(它不能单独对一个功能进行排序!)因此,它在等待其他功能赶上时,将这些功能保存在内存中。
5)现在开始单击“功能检查器”对话框上的“继续下一个断点”按钮。随后的功能将被处理到分拣机变压器。
教训:因为分拣机变压器存储的功能被保存在内存中,每次新特性出现时,使用的系统资源量都会增加。如果特性足够大(我们的特性非常小),您甚至可以在系统的任务管理器上看到内存使用的增加。
6)继续单击功能检查器对话框上的“继续下一个断点”按钮,直到长度计算器:输出和分拣机之间的功能计数为107或108:
如果您不想多次单击“下一步”按钮,单击红色方块按钮停止翻译。右键单击画布上的断点,然后选择“编辑断点”。在编辑对话框的底部,当命中计数等于108时,将停止选项从“始终”更改为。现在重新运行翻译,它将停止在功能108而不是第一个功能。
教训:这也表明,读取到FME中的特性与它们在源数据集中所占的顺序相同。除非像分拣机这样的变压器强制,否则功能的顺序不会改变。
7)记录日志窗口到达的行。
现在点击“下一步连接”按钮三次,将下一个功能推进到分拣机。继续点击,一次点击三下,直到最后一个特性从读卡器中出现并使分拣机对数据进行排序。
因为日志窗口会更新更多的信息行,所以您将知道何时到达最终功能。最重要的消息是“清空工厂管道”,这表示形状读取器已完成读取数据并已关闭。
还要注意最后记录的关于长度计算器的信息(将110个输入特性克隆到110个输出特性中)。以及分拣机已启动并完成分拣110功能的信息:
教训:事实上,读卡器关闭,长度计算器的最后动作,对数据进行排序,每个排序可能发生在最后三次点击的每一次,但是日志窗口花了一段时间才赶上发生的事情。出于同样的原因,您可能会发现,在107个特性处停止步骤6更好(可能会发生特性计数滞后于实际正在处理的特性)。
8)再次单击“下一步连接”按钮。第一个排序的功能将发送给编写器,它现在才被激活。请注意,日志窗口显示已创建了形状文件编写器(已打开形状文件“c:\fmedata2017\output\training\sortedpeoples.shp”作为输出)。
教训:鉴于读者在作者打开之前已经关闭,我们现在可以实际回写正在读取的同一个数据集。这仍然不是推荐的行为,尽管如此。
9)单击“继续转换”按钮运行工作区,而不在任何其他断点处停止。
教训:最后一堂课是记录翻译所用的最大内存量。它将被记录在日志窗口的底部。在这个翻译中,它显示了存储在分拣机变压器中的数据量。以这种方式累积存储在数据上的任何属性,是否写入输出数据集。因此,在任何工作区的开始使用attributeManager都是有意义的,删除多余的属性并减少基于组的转换器中使用的内存量。
?2019安全亚搏在线软件公司|合法的