Cartoview图层上传时PROJ库错误及PostgreSQL配置咨询
错误原因分析
- PROJ数据库版本不兼容:第一个错误提示的
area_of_use_auth_name列不存在,是PROJ 8.0及以上版本新增的字段。如果你的PROJ程序版本是8.x+,但使用的是旧版本的proj.db(PROJ默认的SQLite数据库),就会出现这个结构不匹配的问题。 - 连锁坐标转换失败:前一个错误导致PROJ无法正常读取空间参考系统的元数据,进而引发后续的
proj_create失败、无法找到坐标转换操作的错误——因为PROJ根本无法识别图层的坐标系信息。
配置PROJ使用PostgreSQL的步骤
初始化PROJ的PostgreSQL数据库
- 在PostgreSQL中创建一个专门的数据库(例如命名为
proj_db) - 找到PROJ安装包或源码中提供的初始化脚本
proj_db_postgresql.sql(通常位于data目录下),执行该脚本完成数据库表结构和空间参考数据的初始化:psql -U your_db_user -d proj_db -f /path/to/proj_db_postgresql.sql
- 在PostgreSQL中创建一个专门的数据库(例如命名为
确保PROJ支持PostgreSQL
- 若通过源码编译PROJ,编译时需添加PostgreSQL支持的编译选项:
cmake -DENABLE_POSTGRESQL=ON /path/to/proj/source make && make install - 若通过包管理器安装(如Ubuntu/Debian),需安装包含PostgreSQL支持的PROJ包,例如:
sudo apt-get install libproj-dev libpq-dev
- 若通过源码编译PROJ,编译时需添加PostgreSQL支持的编译选项:
配置PROJ连接PostgreSQL
- 设置环境变量
PROJ_DB_STRING,指定PostgreSQL的连接字符串,格式如下:export PROJ_DB_STRING="postgresql://db_user:db_password@localhost:5432/proj_db" - 若需要永久生效,可将上述命令添加到系统环境配置文件(如
/etc/profile、~/.bashrc或服务启动脚本中)
- 设置环境变量
权限与版本校验
- 确保PostgreSQL的数据库用户拥有
proj_db的读写权限 - 确认初始化数据库使用的
proj_db_postgresql.sql版本与当前PROJ程序版本一致,避免再次出现数据库结构不兼容问题
- 确保PostgreSQL的数据库用户拥有
内容的提问来源于stack exchange,提问作者Muhammad Waqar Anwar
相关产品推荐
相关产品推荐

