【问题标题】:How to save raster data in R object format?如何以 R 对象格式保存栅格数据?
【发布时间】:2017-03-21 06:28:43
【问题描述】:

我不知道如何处理save.image()saveRDS()与R中的光栅数据。我知道光栅包使用raster()函数打开与图像文件的连接,所以它并不是真的将文件打开到 R 工作区。

我想用save.image() 函数(或类似函数)保存我的工作区(data.frame、list、raster 等)并在另一台计算机上打开它。如果我尝试绘制或处理保存在另一台计算机中的光栅对象,总是会遇到同样的问题:

Error in .local(.Object, ...) : 
  `C:\path\to\file.tif' does not exist in the file system,
and is not recognised as a supported dataset name.

有没有办法以 R 格式保存光栅对象(作为外部文件打开)?我的意思不是 tiff 或 grid 等光栅格式。

【问题讨论】:

标签: r save raster


【解决方案1】:

您可以在保存之前使用readAll 函数将栅格加载到内存中,风险自负。例如

r <- raster(system.file("external/test.grd", package="raster"))
r <- readAll(r) # force data into memory
save(r, file = 'r.RData')

如前所述,它可以加载到不同的机器上

load('r.Rdata`)

请注意,这对于内存有限系统上的非常大的栅格会产生问题

【讨论】:

    【解决方案2】:

    您可以像其他 R 对象一样使用save 命令保存栅格。

    save(r,file="r.Rdata")
    

    在另一台计算机上,您可以使用加载该文件

    load("r.Rdata")
    

    这将在您的工作区中恢复光栅r

    我已经在 Windows 和 Linux 上尝试过,它从来没有出现过问题

    【讨论】:

    • 很好的答案。我尝试过 OS X 和 Windows,效果很好!
    • 我遇到了同样的问题,但我担心这和@aldo_tapia 提到的saveRDS() 有同样的问题。对于这种情况,save.image()save()saveRDS() 之间没有太大区别 - 检查 article。它们都只保存了栅格的路径,而不是栅格本身,因为栅格没有加载到 RAM 中。
    猜你喜欢
    • 2019-11-12
    • 2014-08-29
    • 2023-03-29
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2014-12-04
    相关资源
    最近更新 更多