使用terra包将EPSG:7532栅格投影至EPSG:4326失败求助
解决EPSG:7532栅格投影至EPSG:4326失败的问题
错误根源
报错核心是PROJ缺少垂直转换网格文件:EPSG:7532是包含水平投影(NAD83(2011)/WISCRS Brown)和垂直基准(NAVD88 via Geoid18)的复合坐标系,转换到EPSG:4326(WGS84地理坐标系)时,需要PROJ调用垂直基准转换的网格完成坐标映射,环境中缺失该网格会导致所有坐标点转换失败,无法生成输出边界。
具体解决方案
1. 安装PROJ垂直转换网格
- 需要获取
us_geoid18.tif网格文件(用于NAVD88与WGS84椭球高的转换)。 - 在R中运行以下代码找到PROJ数据目录:
terra::gdal("PROJ_LIB") - 将网格文件放入该目录,重启R后重新尝试投影。
2. 显式指定无垂直转换的投影参数
如果暂时无法获取网格,可以忽略垂直基准转换,仅处理水平坐标(栅格高程值保留NAVD88基准):
# 使用仅水平的WGS84地理坐标系定义 dsm_test <- terra::project(dsm, "+proj=longlat +datum=WGS84 +no_defs", method="bilinear")
3. 剥离栅格的垂直基准信息
先将栅格CRS修改为仅水平的EPSG:6418(NAD83(2011)/WISCRS Brown,无垂直基准),再进行投影:
dsm_horizontal <- dsm terra::crs(dsm_horizontal) <- "EPSG:6418" dsm_test <- terra::project(dsm_horizontal, "EPSG:4326", method="bilinear")
补充说明
EPSG:7532的复合CRS包含垂直基准定义,默认情况下terra::project会尝试同时转换水平和垂直坐标,但缺少对应网格时会失败。上述方法要么补全转换依赖,要么跳过垂直转换,优先完成水平投影需求。
内容的提问来源于stack exchange,提问作者robert
相关产品推荐
相关产品推荐

