最近发现一个问题,在使用GDAL+Python进行开发时,代码总报如下错误:
ERROR 1: PROJ: proj_create_from_database: D:\Program Files\PostgreSQL\14\share\contrib\postgis-3.2\proj\proj.db contains DATABASE.LAYOUT.VERSION.MINOR = 0 whereas a number >= 2 is expected. It comes from another PROJ installation.
从错误里可以看出,GDAL在调用PROJ时,遇到了版本冲突的问题。
原因分析
- GDAL底层使用PROJ的库,进行坐标系相关的转换;
- PostgreSQL数据库插件PostGIS 也是使用了PROJ;
两个工具安装的PROJ库版本不一样,且在计算机环境变量里相互干扰。
解决办法
在代码开头加入下面代码
import os
# 对应自己的python包的安装地址
os.environ['PROJ_LIB'] = r'C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Lib\site-packages\pyproj\proj_dir\share\proj'
然后运行代码时,就不报这个错误了