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

R中设置/更改CRS时提示找不到proj.db的解决方法求助

问题:PROJ.db 找不到导致sf包CRS操作失败

原本使用R 4.2版本的sf包处理CRS设置/更改,升级到R 4.3后执行相关操作时弹出错误:

In CPL_crs_from_input(x) :
  GDAL Error 1: PROJ: proj_create_from_database: Cannot find proj.db

已尝试以下操作但问题未解决:

  • 全新安装R并重装sf、raster、sp及所有依赖包
  • 设置PROJ_LIB环境变量:
    Sys.setenv(PROJ_LIB = "...\\AppData\\Local\\R\\win-library\\4.3\\sf\\proj")
    
  • 回退到R 4.2版本

甚至基础CRS命令也无法正常运行:

df <- CRS(SRS_string = "EPSG:4326")
df <- st_crs(4326)

更新说明:另一台电脑上操作完全正常,排除R版本及包本身的问题,现寻求无需格式化电脑的解决办法。


解决方法

1. 修正PROJ_LIB路径格式

Windows系统下路径中的单斜杠会被识别为转义字符,必须用双反斜杠(\\)或正斜杠(/):

  • 直接定位到sf包的proj文件夹,复制正确的绝对路径,例如:
    Sys.setenv(PROJ_LIB = "C:/Users/你的用户名/AppData/Local/R/win-library/4.3/sf/proj")
    
  • 设置后立即验证路径有效性:
    dir.exists(Sys.getenv("PROJ_LIB"))
    
    返回TRUE才说明路径正确

2. 指向系统级GDAL/PROJ库

如果R包自带的proj.db无法被识别,尝试使用系统中独立安装的GDAL/PROJ路径(比如OSGeo4W):

Sys.setenv(PROJ_LIB = "C:/OSGeo4W/share/proj")
Sys.setenv(GDAL_DATA = "C:/OSGeo4W/share/gdal")

设置后重启R再测试

3. 清除系统环境变量缓存

  • 关闭所有R/RStudio会话
  • 打开Windows系统环境变量设置(控制面板→系统→高级系统设置→环境变量)
  • 检查是否存在旧的PROJ_LIB变量,如有则删除或更新为正确路径
  • 重启电脑后再打开R测试

4. 检查文件夹权限

  • 右键sf包的proj文件夹→属性→安全,确认当前用户拥有读取权限
  • 避免将R安装在需要管理员权限的目录(如Program Files),建议安装在用户个人目录下

5. 重装二进制版本的sf包

卸载sf后,安装预编译的二进制版本,避免源码编译可能的依赖问题:

remove.packages("sf")
install.packages("sf", type = "binary")

安装完成后运行以下命令验证依赖加载情况:

sf::sf_extSoftVersion()

若输出中PROJ版本正常显示,说明依赖加载成功


内容的提问来源于stack exchange,提问作者Tolga P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:15:17