GDAL更新后rgdal异常警告:加载omerc投影栅格触发警告
解决GDAL更新后rgdal加载omerc投影栅格的警告问题
这个问题我之前碰到过好几个类似的案例,本质是GDAL版本更新后对投影字符串的解析逻辑做了调整,而rgdal因为已经进入维护状态(官方推荐用sf/terra替代),对新GDAL的适配没跟上,导致**omerc(斜墨卡托)**这种相对小众的投影参数被错误解析成默认值(就是警告里那些lat_0=0、lonc=0的参数)。
给你几个可行的解决方向:
1. 替换rgdal为terra/sf(优先推荐)
rgdal已经被官方标记为“退役”包,后续不会再更新适配新GDAL版本,而terra和sf是当前R空间数据处理的主流工具,对新GDAL的兼容性更好。用terra加载栅格并设置投影的示例代码:
# 安装terra(如果没装) install.packages("terra") library(terra) # 加载你的栅格文件 raster_obj <- rast("你的栅格文件路径.tif") # 设置正确的omerc投影 target_crs <- "+proj=omerc +lat_0=35 +lonc=-75 +alpha=40 +k=0.9996 +x_0=0 +y_0=0 +gamma=40 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs" crs(raster_obj) <- target_crs
terra直接调用GDAL的最新API,解析投影字符串的逻辑更准确,不会出现参数丢失的警告。
2. 用WKT格式投影字符串替代proj4(若必须用rgdal)
GDAL更新后对WKT(OGC标准投影描述格式)的支持比传统proj4字符串更稳定,你可以先把proj4字符串转换成WKT,再传给rgdal:
# 安装proj包用于转换投影格式 install.packages("proj") library(proj) library(rgdal) # 将你的proj4字符串转为WKT2格式 wkt_crs <- proj_crs_to_wkt( "+proj=omerc +lat_0=35 +lonc=-75 +alpha=40 +k=0.9996 +x_0=0 +y_0=0 +gamma=40 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs", version = "WKT2:2019" ) # 加载栅格并设置WKT投影 raster_obj <- readGDAL("你的栅格文件路径.tif") proj4string(raster_obj) <- CRS(wkt_crs)
WKT格式能避免GDAL对proj4参数的解析错误,完美匹配你的投影需求。
3. 匹配GDAL与rgdal的版本
如果坚持要用rgdal,检查两者的版本兼容性:
- 用
packageVersion("rgdal")查看rgdal版本 - 用
GDALinfo()$GDALVersion查看GDAL版本
确保rgdal的版本是适配当前GDAL的(比如GDAL 3.x需要rgdal 1.6.x及以上版本),如果版本不匹配,要么降级GDAL,要么升级rgdal到最新兼容版。
内容的提问来源于stack exchange,提问作者user13317




