无法在已在R内存中的磁盘上写入大型光栅

无法在已在R内存中的磁盘上写入大型光栅,r,out-of-memory,raster,R,Out Of Memory,Raster,我需要关于如何使用光栅软件包在磁盘上写入光栅的帮助 writeRaster(tif, "tif.tif", ...) 我犯了一个错误 错误:无法分配大小为1.3 Gb的向量 我正在尝试设置光栅选项(maxmemory=1e+07),但没有帮助。我的光栅有168 Mpx,我保存的最大的大约是100 Mpx。我应该尝试使用一些分割函数吗?如果是这样的话,以后如何合并它?听起来像是在处理足够大的光栅,需要开始对它们进行分块处理。如果您查看大多数光栅软件包函数,它们都包含一个分支(通过对canProc

我需要关于如何使用
光栅
软件包在磁盘上写入光栅的帮助

writeRaster(tif, "tif.tif", ...)
我犯了一个错误 错误:无法分配大小为1.3 Gb的向量


我正在尝试设置光栅选项(maxmemory=1e+07),但没有帮助。我的光栅有168 Mpx,我保存的最大的大约是100 Mpx。我应该尝试使用一些分割函数吗?如果是这样的话,以后如何合并它?

听起来像是在处理足够大的光栅,需要开始对它们进行分块处理。如果您查看大多数光栅软件包函数,它们都包含一个分支(通过对
canProcessInMemory
的测试失败而实现),这样它们就能够处理任何大小的光栅。例如,请参阅我最近编写的,特别注意对
writeStart()
blockSize()
getValues()
writevalue()
、和
writeStop()
的协调调用。我正在查看此函数,但不知道如何使用它来保存168mpx光栅。顺便说一句,我希望将
替换为
是错误的
在代码中是正确的。该代码只是演示处理太大而无法在内存中一次性处理的光栅的一般策略的许多可能示例之一。基本思想是使用
blockSize()
计算大量索引,以便在循环中读取、处理和写入光栅块。要查看
blockSize()
的结果,请在较小的光栅上尝试,如
blockSize(graster())
中所示。但这并不容易。根据您的实际任务,可能有一个更好的预先存在的解决方案,它本身负责这些操作。听起来您正在处理足够大的光栅,需要开始成批处理它们。如果您查看大多数光栅软件包函数,它们都包含一个分支(通过对
canProcessInMemory
的测试失败而实现),这样它们就能够处理任何大小的光栅。例如,请参阅我最近编写的,特别注意对
writeStart()
blockSize()
getValues()
writevalue()
、和
writeStop()
的协调调用。我正在查看此函数,但不知道如何使用它来保存168mpx光栅。顺便说一句,我希望将
替换为
是错误的
在代码中是正确的。该代码只是演示处理太大而无法在内存中一次性处理的光栅的一般策略的许多可能示例之一。基本思想是使用
blockSize()
计算大量索引,以便在循环中读取、处理和写入光栅块。要查看
blockSize()
的结果,请在较小的光栅上尝试,如
blockSize(graster())
中所示。但这并不容易。根据您的实际任务,可能有一个更好的预先存在的解决方案,它本身负责这些操作。