使用分区对大型数据集制图综合
根据上下文来处理多个数据专题的地理处理工具必须在处理开始前将全部输入数据载入到内存。大型数据集或大量的输入数据集极容易超过这些工具的内存限制。分区是一种将大量数据细分为更小、更易于管理的要素集的手段。
当工具运行分区的数据时,将按顺序处理每个分区。分区边界或附近的要素需要严格管理,以避免误差。工具会加载超出每个分区范围的附加数据,并在处理过程中使用这些数据,不过只对位于分区内的要素进行修改。最终的输出结果没有任何缝隙。
通常,如果所有输入图层中共有超过 100,000 个要素,需要考虑使用分区来运行工具。以下工具可启用分区:
如何启用分区
通过在制图分区地理处理环境设置中指定一个分区要素类,可为以上列出的地理处理工具启用分区功能。使用该设置,促使适用的工具将输入要素分成多个部分逐个处理,而不是一次性处理所有输入要素。
分区要素可以是任何面要素类,其在概念上将输入数据分割为逻辑区段。分区要素类应该合理地覆盖感兴趣区域并基本上均匀分割输入要素。理想情况下,对于所有输入图层中的要素来说,每个分区包含的要素数最好不要超过 50,000 个。分区过大则仍会超过内存限制,但是分区过小则会导致工具逐渐脱离上下文,进而影响结果的质量。
可用作分区的要素
分区要素可以来自一些不同的来源。一些工作流可能已经包括固有的逻辑分区,例如一组连续的打印地图上显示的数据范围。如果地图图幅被建模为面要素,它们将可能生成理想的分区。在这种情况下,可以使用格网索引要素工具来创建矩形面要素的格网。只要输入数据可相对均匀地分布在整个感兴趣区域,这些格网将创建合理的分区。
在 Web 制图中,缓存切片方案可以生成一组合适的分区。考虑使用地图服务器缓存切片方案转换为面工具创建表示该方案的面格网。与使用地图图幅范围相似,当输入要素分布较为均匀时,该工作流有效。
在一些工作流中,数据集可能包括构成自然连续分区的要素类,如县或邮政编码。如果这些要素完全覆盖并分割输入要素,它们可用作分区。对于随密度变化的数据分布,这是一个不错的方法。例如,在住宅密度较高的地方,邮政编码面可能会较小,所以在解决建筑物冲突时,邮政编码可能会生成良好的分区。
如果没有现成的合适面,可以专门为分区创建一些。使用创建制图分区工具创建一组含有大致相等数量的输入要素的连续面。
分区要求
- 每个分区的大小不应包含超出工具能力的输入数据。该阈值通常是由所有输入图层要素的数量和这些要素的复杂性确定的。它还会根据运行的工具以及参数的定义方式略有变化。根据经验,分区包含的输入要素最好不超过 50,000 个。
- 分区要素必须是具有有效的空间参考的面要素类或面 shapefile。
- 分区要素必须具有正确的拓扑。相邻面的边应该匹配,不能有重叠。分区要素之前可以存在孔洞,但是分区要素不能是多部分面或带有孔洞的面。面必须包含简单的、不重叠的几何。
- 每个分区面的面积必须大于零。Null 或空的分区将不做处理,而且会引发警报。这些分区将在处理过程中被忽略。
- 分区要素应该表示输入要素的逻辑细分,这些输入要素将由采用该设置的工具进行处理。输入要素应该基本上均匀分布在分区要素中。
- 分区要素应该覆盖输入要素的范围。
- 分区几何越简单越好。当启用分区时,复杂几何会影响工具的性能。
处理与分区配合的方式
当启用分区时(通过在制图分区地理处理环境设置中指定分区要素类),启用分区的工具将以分区定义的方式,分段处理输入数据。分区将按每个分区的对象 ID 的顺序处理。如果只处理地图的特定区域,在地图中使用图层作为环境变量,然后在处理之前只需选择相关的分区要素。
即使数据已分区,仍可能会出现单个分区描述的输入数据的数量超过处理工具内存限制的情况。在这种情况下,该分区的处理将失败,将继续处理下一分区。地理处理消息指出没有处理的分区。称为 STATUS 的字段追加到分区要素类中,并填入以下某个语句,概述其处理尝试后的状态:
- 0 - 未处理
- 1 - 正在处理
- 2 - 处理成功
- 3 - 内存不足
- 4 - 错误
如果需要保留在 STATUS 字段中显示的处理状态,则在运行下一个启用分区的工具之前,将新的字段添加到数据中并计算等于 STATUS 字段的字段值。