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

在sf中使用PROJ7执行栅格坐标转换失败,除调用sf_proj_network(TRUE)外还需哪些操作?

解决sf中EPSG:27572到EPSG:2154栅格转换未生效的问题

看起来问题在于st_transform没有自动选用你找到的带栅格的高精度转换管线,即使已经开启了在线栅格支持。以下是几个可行的解决方案:

1. 手动指定高精度转换管线

从sf_proj_pipelines的输出中,你已经得到了包含xyzgridshift(栅格转换)的完整管线定义。直接将这个管线字符串传给st_transform的crs参数,强制使用该转换:

# 复制sf_proj_pipelines返回的高精度管线定义
high_precision_pipeline <- "+proj=pipeline +step +inv +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=clrk80ign +pm=paris +step +proj=push +v_3 +step +proj=cart +ellps=clrk80ign +step +proj=xyzgridshift +grids=fr_ign_gr3df97a.tif +grid_ref=output_crs +ellps=GRS80 +step +inv +proj=cart +ellps=GRS80 +step +proj=pop +v_3 +step +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80"

# 使用指定管线执行转换
ptSf_2154_grid <- st_transform(ptSf_27572, crs = high_precision_pipeline)

# 再次验证距离
st_distance(ptSf_2154_grid, ptSf_2154)

这样应该会使用栅格文件进行转换,结果误差会趋近于0。

2. 确认栅格文件已成功下载

sf_proj_network(TRUE)允许从PROJ的CDN下载栅格,但有时候可能因为网络问题未完成下载。PROJ会把栅格文件存储在用户的本地目录:

  • Linux/macOS: ~/.proj/
  • Windows: C:\Users\<你的用户名>\.proj\

检查该目录下是否存在fr_ign_gr3df97a.tif文件。如果没有,可以手动下载该文件并放到这个目录,然后重新运行转换。

3. 检查PROJ和sf版本

较旧版本的PROJ可能对栅格转换支持有限,建议确保你使用的是PROJ 7.0及以上版本,同时sf包也是最新版本。可以用以下命令检查版本:

sf::sf_extSoftVersion()

如果版本过低,更新sf包(会自动更新依赖的PROJ库,取决于你的安装方式)。

4. 验证PROJ的栅格支持配置

运行sf_proj_info(type = "grid")查看PROJ已加载的栅格列表,确认fr_ign_gr3df97a.tif在其中。如果不在,可能需要检查PROJ的环境变量配置,确保它能找到本地栅格目录。


内容的提问来源于stack exchange,提问作者Jean-Luc Dupouey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:57:30