使用大型栅格*对象时,使用存储在磁盘而不是内存中的栅格非常有用。例如,如果我们使用calc
,则可以选择提供存储结果的文件名。 E.g。
library(raster)
a1 = array(rep(1:12, each = 9), dim = c(3,3,12))
b1 = brick(a1)
res1 = calc(b1, mean, 'xyz_test1.nc')
inMemory(res1)
#FALSE
但是,calc
仅对单个栅格*对象进行操作。当使用在多个栅格*对象上运行的函数(例如算术运算符)时,有没有办法实现相同的功能?
a2 = array(rep(1:4, each = 3*9) + rnorm(4*3*9), dim = c(3,3,12))
b2 = brick(a2)
res2 = b1 / b2
inMemory(res2)
#TRUE
根据help("Arith-methods")
,&#34;如果输出Raster *的值不能保存在内存中,它们将被保存到临时文件中#34;。但是如果输出可以适合内存但你想将它存储在磁盘上(最好是在命名文件中)以便为后续操作节省内存呢?有没有办法强迫这个,(在每次计算后都没有使用writeRaster(x, filename); remove(x); x <- brick(filename)
)?