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
相关产品推荐
相关产品推荐

