我有一个randomForest模型,想要在研究区域内进行预测。我能够成功运行预测,看到它产生了一张栅格图,但是当我尝试运行writeRaster()
或plot()
时,出现了错误Error in .local(.object, ...)
,但没有更多的信息可以提供。以下是代码(请注意,envStack是环境预测变量的栅格堆栈,rf.full是randomForest模型对象):
library(here)
library(raster)
library(randomForest)
setwd(here("species", model_species, "outputs", "grids"))
fn <- paste0(model_run_name, "_raw_", Sys.Date(), ".tif")
outRas <- predict(object = envStack,
model = rf.full,
type = "prob",
index = 2,
na.rm = TRUE,
filename = fn,
format = "GTiff",
overwrite = TRUE,
progress = "text")
writeRaster(outRas, filename = fn, format = "GTiff", overwrite = TRUE)
以下是错误信息:
Error in .local(.Object, ...) :
如果我试图绘制输出栅格图像,同样的情况也会发生:
plot(outRas)
Error in .local(.Object, ...) :
在预测过程中,我包含了envStack和rf.full对象的环境堆栈和输出预测光栅产品屏幕截图。为了检查问题是否是文件大小问题,我使用了object.size(outRas)
,返回12832字节
。我还检查了我要存储栅格的驱动器上可用的空间,有超过60GB的可用空间:
我不确定为什么堆栈中很多栅格的最小值和最大值都未知,但只是为了确保单个栅格没有损坏,我尝试绘制了一个带有缺失最小/最大值的栅格(plot(envStack[[1]])
),它画得很好:
模型对象(rf.full
)已成功用于计算各种验证指标,就我所知,它没有问题,并且我想要保存输出栅格的文件夹已经存在。
当我使用rasterTmpFile()
检查临时文件位置时,它返回一个不存在的文件(尽管包含该文件夹):
rasterTmpFile()
[1] "C:/Users/username/AppData/Local/Temp/Rtmpkxfn1t/raster/r_tmp_2020-02-17_152958_23480_67648.grd"
我感觉之前遇到过这个问题,但是我不记得我当时是如何解决的(或者我是否解决了)。我在这里看到的相关问题都指向文件大小和文件位置问题,这些问题似乎并不是我的问题。有些提示格式类型可能存在问题,但是我刚刚在此过程的早期步骤中使用了writeRaster()
与format =“GTiff”
将其他栅格保存为GeoTiff。此外,仅尝试在R中绘制outRas
时出现相同的错误,使它看起来像栅格本身存在问题。非常感谢任何帮助。
更新:问题实际上是writeRaster()
语句是不必要的。将其删除解决了问题。请查看下面我的答案以获取更多详细信息。