我有两个大光栅图像(30,000 x 30,000),一个用于2000年另一个用于2005年。我想用2000年栅格中的NA和它们各自的非NA值替换NA中的像素。这是一个例子:
r1 <- raster(ncols=36, nrows=18)
r1[] <- 1:ncell(r1)
plot(r1)
r2 <- raster(ncols=36, nrows=18)
r2[] <- 1:ncell(r2)
r2[r2<300] <- NA
plot(r2)
在这个例子中,我想用“r1”中的重复值替换“r2”中的NA。我在R中尝试了命令“cover()”但是那个没有完成“r2”,而是返回“r2”中缺少但在“r1”中出现的信息:
r2.fix <- cover(r2, r1)
plot(r2.fix)
关于工作如何完成的任何想法?提前谢谢。
更新:此解决方案的问题:
r2[is.na(r2)] <- r1[is.na(r2)]
它是否适用于大型栅格。 R返回以下错误:
Error: cannot allocate vector of size 2.6 Gb
In addition: Warning messages:
1: In order(cells[, 2]) :
Reached total allocation of 16080Mb: see help(memory.size)
答案 0 :(得分:1)
我只能用大光栅重现你的问题 我有错误:无法使用16GB RAM分配大小为6.7 Gb 的矢量 您需要更改会话选项中的 chunksize 。
From Introduction to the ’raster’ package
选项chunksize和maxmemory 确定单个值块的最大大小(单元格数) 是在非常大的文件的块大块处理中读/写的。