You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中raster包无法读取rgdal::readGDAL可正常打开的MODIS GeoTIFF文件

问题原因

该报错由旧版本raster包的坐标参考系(CRS)解析逻辑不兼容导致:你使用的raster 3.4-13版本仅支持识别开头带+的PROJ4格式CRS字符串,但该MODIS GeoTIFF文件内存储的CRS是WKT2格式(报错里展示的GEOGCRS开头的内容就是WKT格式的EPSG:4326定义),旧版raster读取时无法解析该格式就会抛出错误。而rgdal::readGDAL()在你使用的1.5-27版本已经支持WKT格式CRS的读取,所以可以正常打开文件。

解决方案

方案1:升级相关依赖包(推荐)

直接升级raster及关联的空间包到最新版本,新版已经完成了对WKT格式CRS的适配,升级后可直接读取文件:

install.packages(c("raster", "rgdal", "sp", "sf"))

升级完成后再调用raster()或stack()即可正常读取文件。

方案2:兼容旧版本包的读取方法

如果暂时无法升级依赖,可使用以下两种替代方式读取:

  • 方法A:先用rgdal读取再转raster对象
# 先读取为SpatialGridDataFrame
sgdf <- rgdal::readGDAL("../MCD64A1/TIFF/Win09/2014/MCD64monthly.A2014001.Win09.006.burndate.tif")
# 转成RasterLayer对象
r <- raster(sgdf)
# 多波段的话转RasterStack用stack(sgdf)即可
  • 方法B:读取时手动指定CRS
    读取时主动传入PROJ4格式的CRS,跳过raster对文件内WKT格式CRS的解析:
r <- raster(
  "../MCD64A1/TIFF/Win09/2014/MCD64monthly.A2014001.Win09.006.burndate.tif",
  crs = "+proj=longlat +datum=WGS84 +no_defs"
)
# stack读取同理,添加crs参数即可

方案3:使用terra包读取

terra是raster开发者推出的新一代空间栅格处理包,对新版GDAL、PROJ的兼容性更好,读取该类文件无兼容问题,如有需要也可转为raster对象使用:

library(terra)
# 直接读取文件
r_terra <- rast("../MCD64A1/TIFF/Win09/2014/MCD64monthly.A2014001.Win09.006.burndate.tif")
# 如需转成raster包的RasterLayer对象
r_raster <- raster(r_terra)

内容的提问来源于stack exchange,提问作者sheß

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:06:03