Python中Rasterio设置CRS报错:PROJ数据库版本不兼容求解
问题成因与修复方案:rasterio EPSG代码未知/PROJ数据库版本不兼容错误
问题成因
- 多PROJ版本路径冲突:系统同时存在rasterio依赖的PROJ版本和PostGIS附带的旧版PROJ,系统优先加载了PostGIS的
proj.db,而该数据库的布局版本仅为0,不符合当前rasterio要求的≥2标准,导致无法解析EPSG代码。 - PROJ数据库规范不匹配:新的PROJ版本对空间参考数据库的结构有更新要求,旧版PostGIS配套的PROJ数据库未满足这一规范,引发兼容性问题。
修复方法
最简临时修复
在Python代码运行前,手动设置PROJ_LIB环境变量,指定rasterio自带的PROJ数据库路径,强制使用正确的数据库:
import os # 替换为你的rasterio安装环境对应的proj目录,示例为Anaconda环境路径 os.environ['PROJ_LIB'] = r'C:\Users\你的用户名\anaconda3\envs\你的环境名\Library\share\proj' import rasterio
注:该设置仅在当前Python会话生效,重启后需重新配置。
最优永久修复
- 确认版本依赖:
执行以下代码查看当前rasterio依赖的PROJ版本:import rasterio print(rasterio.__proj_version__) - 统一PROJ版本:
- 若PostGIS非必需,卸载其附带的旧PROJ组件,消除路径冲突;
- 若需保留PostGIS,升级PostGIS至适配更高PROJ版本的分支(如PostGIS 3.3及以上),确保其
proj.db布局版本≥2; - 调整系统环境变量:将rasterio依赖的PROJ的
share\proj目录路径,添加到系统PROJ_LIB环境变量的最前端,让系统优先加载正确的数据库文件。
内容的提问来源于stack exchange,提问作者Johs
相关产品推荐
相关产品推荐

