将 saveRDS() 与栅格对象一起使用时出现问题
Issue using saveRDS() with raster objects
我正在尝试使用 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 文件中提取的批处理相同的格式,以便于以后处理。
简短的回答是你可以这样做:
mf <- raster('myfile.asc')
mf <- readAll(mf)
mf
现在,值在内存中并将保存到 .RData 文件
另请注意:
您可以通过 writeRaster 将元数据与数据一起保存(请参阅 ?raster::metadata
您可以通过 raster('myfile2.nc')
访问 ncdf 文件(包含地理数据)
您的 ncdf 文件示例没有提供信息,因为您实际上并未将 nc
用于任何事情。如果您将 mf
替换为 nc
,则在您删除 'myfile2.nc'
后,它也将不起作用
我正在尝试使用 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 文件中提取的批处理相同的格式,以便于以后处理。
简短的回答是你可以这样做:
mf <- raster('myfile.asc')
mf <- readAll(mf)
mf
现在,值在内存中并将保存到 .RData 文件
另请注意:
您可以通过 writeRaster 将元数据与数据一起保存(请参阅 ?raster::metadata
您可以通过
raster('myfile2.nc')
访问 ncdf 文件(包含地理数据)
您的 ncdf 文件示例没有提供信息,因为您实际上并未将
nc
用于任何事情。如果您将mf
替换为nc
,则在您删除'myfile2.nc'
后,它也将不起作用