使用带栅格对象的saveRDS()问题

时间:2015-06-18 00:40:55

标签: r r-raster

我尝试使用saveRDS()来保存大量列表,每个列表都包含栅格图层和包含元数据的列表。当从ncdf文件中提取栅格图层时,它工作正常,但是当原始文件是ascii文件时,saveRDS()仅写入指向原始文件的指针,而不是将值写入结束文件。

这是“正在发生的事情的精简版本”:

require(raster)

mf <- raster('myfile.asc')
meta <- list(mylonglistofmetadata)
res <- list(mf, meta)
saveRDS(res, 'myresult.Rdata')

myresult.Rdata现在只是一个指向myfile.asc的33KB指针,当我真的希望它存储这些值以便在我擦除myfile.asc后它仍然可以工作(所以它应该是关于15MB)

相反,对于ncdf格式的其他文件:

require(ncdf4)
require(raster)

ff <- 'myfile2.nc'
nc <- nc_open(ff)
meta <- list(mylonglistofmetadata)
res <- list(nc, meta)
saveRDS(res, 'myresult2.Rdata')

在这里,myresult2.Rdata正在存储我想要的所有内容,所以我的猜测是光栅包出现了问题?

任何人都知道如何解决这个问题?我不想使用writeRaster(),因为我试图将元数据与数据保持在一起,并使用与从ncdf文件中提取的批处理相同的格式,以方便以后的处理。

1 个答案:

答案 0 :(得分:4)

简短的回答是你能做到:

mf <- raster('myfile.asc')
mf <- readAll(mf)
mf

现在,这些值在内存中并将保存到.RData文件

另请注意:

  • 您可以通过writeRaster使用数据保存元数据(请参阅?raster :: metadata

  • 您可以通过raster('myfile2.nc')

  • 访问ncdf文件(包含地理位置数据)
  • 您的ncdf文件示例不提供信息,因为您实际上并未使用nc。如果您将mf替换为nc,则在删除'myfile2.nc'

  • 后,它将无效