“ERROR 1: PROJ: proj_create_from_database: Cannot find proj.db“ 错误原因及解决方法
·
日前利用python新建shp文件,在本机运行时并未报错,打包成exe后出现错误,报错未找到proj.db文件。查询资料后得出,这通常是由于GDAL在获取图像的投影信息时找不到proj.db文件引起的。解决方法一般有以下两种。
一、人工写入投影信息
本质上proj.db文件是用于储存投影信息的文件,主要作用在于可以利用部分函数通过投影编号提取到对应的投影信息,从而进行prj文件的写入工作。prj文件本质上就是文本文件,可以对其进行打开和写入工作。下图展示的为CGCS2000的投影信息写入工作,文章这里提供几个常用的坐标系的prj信息。
with open('1.prj', 'w',encoding='utf-8') as file_prj:
CGCS2000="GEOGCS[\"GCS_China_Geodetic_Coordinate_System_2000\",DATUM[\"D_China_2000\",SPHEROID[\"CGCS2000\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]"
# file_prj.write(srs.ExportToWkt())
file_prj.write(CGCS2000)
CGCC2000:
GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_China_2000",SPHEROID["CGCS2000",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
WGS-84
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
EPSG:3857
PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]
二、写入环境变量
笔者这里提供了python高版本的pyproj的离线安装包,有需要自取。并附带了proj.db文件有需要打包成exe,并需要调用此数据库的,可以将其固定写在固定目录并一起打包这里不在赘述。
链接:链接: https://pan.baidu.com/s/1BLmwclTigwIxVzNFSL7b7g?pwd=xii3
提取码: xii3

写入环境变量主要利用os.environ功能,此功能需要寻找到gdal安装的proj.db,若是正常安装应该在c盘的同样位置下。此方法只适用于本机测试,打包之后就会失效。故若需要打包成exe供他人使用推荐采用第一种方法。
os.environ['PROJ_LIB'] = r'C:\Program Files\Python312\Lib\site-packages\osgeo\data\proj'
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)