在用python gdal包函数GetProjection()读取影像投影信息时程序报错,
报错信息:
ERROR 1: PROJ: proj_as_wkt: SQLite error on
SELECT name, ellipsoid_auth_name, ellipsoid_code, prime_meridian_auth_name, prime_meridian_code, area_of_use_auth_name, area_of_use_code, publication_date, deprecated FROM geodetic_datum
WHERE auth_name = ? AND code = ?:
no such column: area_of_use_auth_name
推测原因:
从报错信息可以看到是geodetic_datum表中没有area_of_use_auth_name列。通过查阅资料知道geodetic_datum表在proj.db中,因此有可能是proj.db出现了问题。
搜索了一下电脑中的proj.db发现有
通过打印os.environ[‘PROJ_LIB’]发现程序中使用的是E:\Anaconda\envs\python36\Library\share\proj文件夹中的proj.db,猜测可能跟gdal函数所需要的数据库不匹配导致报错。
解决方案:
通过添加代码:
os.environ[‘PROJ_LIB’] = r’E:\Anaconda\envs\python36\Lib\site-packages\osgeo\data\proj’
使gdal函数使用osgeo文件夹下的proj.db。