You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动