1

我试图用来saveRDS()保存大量列表,每个列表都包含一个栅格图层和一个带有元数据的列表。从 ncdf 文件中提取栅格图层时效果很好,但是当原始文件是 ascii 文件时,saveRDS()只写入指向原始文件的指针而不是将值写入最终文件。

这是正在发生的事情的浓缩版本:

require(raster)

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

myresult.Rdata现在只是一个 33KB 的指针myfile.asc,当我真的希望它存储值时,它在我擦除后仍然可以工作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 文件中提取的批处理相同的格式以方便以后的处理。

4

1 回答 1

4

简短的回答是你可以这样做:

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

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

另请注意:

  • 您可以通过 writeRaster 将元数据与数据一起保存(请参阅 ?raster::metadata

  • 您可以通过以下方式访问 ncdf 文件(带有地理数据)raster('myfile2.nc')

  • 您的 ncdf 文件示例没有提供任何信息,因为您实际上并没有nc用于任何用途。如果你用它替换mfnc在你删除后也不起作用'myfile2.nc'

于 2015-06-18T02:56:19.223 回答