R:“raster”无法读取“readGDAL”能够读取的 GeoTIFF

Posted

技术标签:

【中文标题】R:“raster”无法读取“readGDAL”能够读取的 GeoTIFF【英文标题】:R: "raster" cannot read a GeoTIFF that "readGDAL" is able to read 【发布时间】:2021-11-28 14:52:03 【问题描述】:

问题

我正在使用 MODIS GeoTIFF。我想使用sfraster 库。该文件使用rgdal::readGDAL() 轻松打开,这给了我一个Large SpatialGridDataFrame 类型的对象。所以文件没有损坏。

然而,如果我使用raster,我会收到以下错误:

raster::raster("../MCD64A1/TIFF/Win09/2014/MCD64monthly.A2014001.Win09.006.burndate.tif")
  Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",  : 
  Cannot create a RasterLayer object from this file.

更多背景信息

如果我使用raster::stack,也会发生同样的情况。

用于复制:该文件可以在MODIS-collection 中找到或直接下载here。相关的包版本是:

 [1] raster_3.4-13 rgeos_0.5-8   sf_0.9-8      rgdal_1.5-27  sp_1.4-2      RNetCDF_2.5-2

编辑

raster 似乎隐藏了一些错误消息。调用内部.rasterFromGDAP 直接显示错误信息。虽然修复仍不清楚:

> raster:::.rasterFromGDAL("../MCD64A1/TIFF/Win09/2014
/MCD64monthly.A2014001.Win09.006.burndate.tif", type = "RasterLayer",band=1)
Error in CRS(crs, TRUE) : 
  PROJ4 argument-value pairs must begin with +: GEOGCRS["WGS 84",
    DATUM["World Geodetic System 1984",
        ELLIPSOID["WGS 84",6378137,298.257223563,
            LENGTHUNIT["metre",1]]],
    PRIMEM["Greenwich",0,
        ANGLEUNIT["degree",0.0174532925199433]],
    CS[ellipsoidal,2],
        AXIS["geodetic latitude (Lat)",north,
            ORDER[1],
            ANGLEUNIT["degree",0.0174532925199433]],
        AXIS["geodetic longitude (Lon)",east,
            ORDER[2],
            ANGLEUNIT["degree",0.0174532925199433]],
    ID["EPSG",4326]]

【问题讨论】:

【参考方案1】:

我没有收到此错误。

library(raster)
Loading required package: sp
f <- "MCD64monthly.A2014001.Win09.006.burndate.tif"
b <- raster(f)
b
#class      : RasterLayer 
#dimensions : 8533, 5461, 46598713  (nrow, ncol, ncell)
#resolution : 0.004394531, 0.004394531  (x, y)
#extent     : -19, 4.998535, 0.001464844, 37.5  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +no_defs 
#source     : MCD64monthly.A2014001.Win09.006.burndate.tif 
#names      : MCD64monthly.A2014001.Win09.006.burndate 
#min values :                                   -32768 
#max values :                                    32767 

sessionInfo()
# ...
#other attached packages:
#[1] raster_3.4-13 sp_1.4-5     
#loaded via a namespace (and not attached):
#[1] compiler_4.1.0   rgdal_1.5-27     tools_4.1.0      Rcpp_1.0.7       codetools_0.2-18 grid_4.1.0       #lattice_0.20-44 

我认为在您更新 sp 软件包后它也会消失。当事情不起作用时,最好先确保您拥有最新版本的 R 包(可能运行 update.packages(ask=FALSE)

【讨论】:

以上是关于R:“raster”无法读取“readGDAL”能够读取的 GeoTIFF的主要内容,如果未能解决你的问题,请参考以下文章

更改 R 中的栅格空间范围

调用 library(raster) 或 require(raster) 导致 Rstudio 中止会话

R - 将 SpatialLines 转换为栅格

根据 R 中的文件名读取栅格子集

R:我正在从矩阵制作热图,但 ggplot2 geom_raster 将(数字)值重新排序为字母

如何使 R 的“光栅”包区分 GeoTIFF 中的正旋转矩阵和负旋转矩阵?