如何用R中另一个栅格的值替换大型栅格中的NA?

时间:2017-07-25 00:08:27

标签: r replace raster

我有两个大光栅图像(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)

1 个答案:

答案 0 :(得分:1)

我只能用大光栅重现你的问题 我有错误:无法使用16GB RAM分配大小为6.7 Gb 的矢量 您需要更改会话选项中的 chunksize

From Introduction to the ’raster’ package

  

选项chunksize和maxmemory   确定单个值块的最大大小(单元格数)   是在非常大的文件的块大块处理中读/写的。