之前有效的脚本突然出现错误 'Cannot create a RasterLayer object from this file.'

Suddenly error 'Cannot create a RasterLayer object from this file.' in script that worked before

我有一个脚本,我可以在其中读取存储为 .tif 的光栅:

f_treecover   <- raster('Landcover_data/treecover_res_100_q.tif')       

该脚本在几个月前 运行 还不错,但现在我收到以下错误消息:

Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",  : 
  Cannot create a RasterLayer object from this file.

我可以使用 terra 中的 'rast' 函数读取文件:

f_treecover   <- rast('Landcover_data/treecover_res_100_q.tif')      
> f_treecover
class       : SpatRaster 
dimensions  : 1400, 3600, 1  (nrow, ncol, nlyr)
resolution  : 0.1, 0.1  (x, y)
extent      : -180, 180, -60, 80  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs 
source      : treecover_res_100_q.tif 
name        : treecover_res_100_q 

但是,脚本中的所有其他对象都是 RasterLayers ,所以我需要这个对象也是一个。我尝试使用

将生成的 SpatRaster 强制转换为 Raster
raster(f_treecover)

,但这会导致与最初尝试读取 .tif 文件时相同的错误消息。

我可能同时安装了光栅包的更新版本(现在使用 3.4-10),这会导致问题吗?

如果您没有安装 rgdal 软件包,您会得到

Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",  : 
  Cannot create RasterLayer object from this file; perhaps you need to install rgdal first

在这种情况下,您应该安装 rgdal

否则,请确保您没有加载旧工作区(使用 unlink(".RData"),退出 R 而不保存工作区 并重新开始。

如果这没有帮助:卸载 R 并重新安装最新版本和软件包。

最后,通过完全删除并重新安装 R 解决了问题。我之前曾尝试过,但显然卸载不完整,事实证明我之前安装的软件包在重新安装时再次可用。 - 安装 R.

如果 tif 名称包含无法识别的字符,例如ā in Māui.

这发生在我之前没有问题的情况下。我意识到发生的事情是我的 Dropbox 帐户没有同步,所以根本找不到文件。如果您将光栅 .tif 对象存储在您的环境中,并且 运行 下面的代码块应该可以找到您的文件。如果不是,Dropbox 同步(如果您的文件来自 Dropbox)也可能是您的问题:

readr::read_file(tif_file)