问题:
01 一般方法:
- 降低输入数据的分辨率或数量,减少需要处理的数据量。
- 将模型中的工具链中的某些工具分解成多个步骤,并使用中间结果进行操作,以减少内存使用量。
- 尝试在计算机上增加更多的内存,以便处理更大的数据量。
- 将模型中的某些工具转换为脚本工具,并使用 Python 脚本来实现操作,这可能比使用模型构建器更高效。
- 将处理分成多个批次,并逐批次处理数据,以减少内存使用量。(当我在没有办法解决该问题时确实是使用这个方法)
02 实用方法:
2.1 以外存换内存
想象一下,为什么会出现这种情况?原因就是我们将太多的数据放在了内存中。
第一,将所有的中间数据放在硬盘中而不是在内存中,步骤如下:
(其实需要说明的是如果你的中间文件在下一次循环会被覆盖,那么其实不需要取消中间数据)
2.2 删除中间数据
第1种方法以外存换内存即取消中间数据而转放在硬盘中有一个缺陷,而且很致命,那就是我们没有办法将迭代的Raster放在硬盘中,一旦我们迭代的要素过多,则还是会出现内存不足的情况。所以这里最好的办法我觉得还是及时地删除要素、栅格数据集等等文件。
这里使用删除工具(数据管理工具 - 常规 - 删除),将所有不需要的中间文件全部删除即可,这里包括迭代要素、中途产生文件等等均可以使用删除工具进行删除,以释放内存资源。