当前位置:首页 > 文章 > 正文内容

升级python环境时gdal出现缺少proj的问题

廖万里3年前 (2022-10-27)文章1956

gdal在做坐标转换时报出如此的错误。原系统的代码没有改变,为了更新sentinelhub包,将python环境由3.6升级至3.7。升级了python环境之后,所有相关的py包和第三方库重新进行安装。安装过程中基本没有遇到问题。但是在运行代码时gdal报出错误。

发生错误的代码:

 
src_osr = osr.SpatialReference()
src_osr.ImportFromWkt(src_proj)
dst_osr = osr.SpatialReference()
dst_osr.SetWellKnownGeogCS("WGS84")
ct = osr.CoordinateTransformation(src_osr, dst_osr)
print("ct:", src_proj)
coords_ul = ct.TransformPoint(x_min, y_max)
coords_ur = ct.TransformPoint(x_max, y_max)
coords_lr = ct.TransformPoint(x_max, y_min)
coords_ll = ct.TransformPoint(x_min, y_min)
lon_list = [coords_ul[0], coords_ur[0], coords_lr[0], coords_ll[0]]
lat_list = [coords_ul[1], coords_ur[1], coords_lr[1], coords_ll[1]]
lon_min = np.min(lon_list)
lon_max = np.max(lon_list)
lat_min = np.min(lat_list)
lat_max = np.max(lat_list)
lon_lat_extent = [lon_min, lon_max, lat_min, lat_max]
return lon_lat_extent

错误信息:

Traceback (most recent call last):

File "/opt/project/src/test.py", line 160, in <module>

ndvi.run()

File "/opt/project/src/cell_produce_task/tile_factory_v2.py", line 1529, in run

result = self.task_manager()

File "/opt/project/src/cell_produce_task/tile_factory_v2.py", line 532, in task_manager

geo_extension

File "/opt/project/src/cell_produce_task/tile_factory_v2.py", line 730, in produce_block

y_blk_num

File "/opt/project/src/cell_produce_task/tile_factory_v2.py", line 1073, in cell_block_task_by_lut

src_proj

File "/opt/project/src/cell_produce_task/tile_factory_v2.py", line 958, in proj_2_geo_extent

coords_ul = ct.TransformPoint(x_min, y_max)

File "/root/miniconda3/lib/python3.7/site-packages/osgeo/osr.py", line 1150, in TransformPoint

return _osr.CoordinateTransformation_TransformPoint(self, *args)

NotImplementedError: Wrong number or type of arguments for overloaded function 'CoordinateTransformation_TransformPoint'.

Possible C/C++ prototypes are:

OSRCoordinateTransformationShadow::TransformPoint(double [3])

OSRCoordinateTransformationShadow::TransformPoint(double [4])

OSRCoordinateTransformationShadow::TransformPoint(double [3],double,double,double)

OSRCoordinateTransformationShadow::TransformPoint(double [4],double,double,double,double)

 为了解决这个问题,大体进行了如下几次尝试:

1. 一开始以为是gdal的问题,重新对gdal进行安装,结果问题依然存在;

2. 以为是GDAL_DATA没有设置的问题,查询gdal路径后,将该路径加入到环境变量。没有解决问题。

os.environ['GDAL_DATA']="/root/miniconda3/pkgs/libgdal-3.4.1-h05199a0_1/share/gdal"

3.怀疑是proj没有配置使得gdal找不到proj库。查询proj的路径,将该路径加入到环境变量。问题最终解决。

os.environ['PROJ_LIB'] = os.getenv('PROJ_LIB', '/root/miniconda3/pkgs/proj-6.2.1-h05a3930_0/share/proj')

由于proj有多个路径,可能是不同版本共存。在经过多个路径轮流试验后最终确定了一个有效的路径。

 

总结,对于此类问题,直接原因是gdal没有找到相应的proj路径,使得跟坐标转换相关的处理不能正常运行。解决的方法就是将proj的路径找到,并设置成环境变量。造成这个问题原因可能是多个proj的版本混乱造成的,也可能proj没有正确安装。


本文链接:https://www.kkkliao.cn/?id=129 转载需授权!

分享到:

版权声明:本文由廖万里的博客发布,如需转载请注明出处。


“升级python环境时gdal出现缺少proj的问题” 的相关文章

同样是系统为什么有的叫OS有的叫UI

同样是系统为什么有的叫OS有的叫UI

大家有没有注意到现在手机系统虽然主要分iOS和安卓两大阵营,但如果从叫法的后缀上来区分的话其实是分为OS和UI。那么,你有没有想过为什么有些手机的系统后缀是OS?有些系统的后缀是UI呢?他们之间的区别在于哪些呢?同样是系统为什么有的叫OS有的叫UI1、字面意思不同OS的英文全称为Operation...

每晚泡脚15分钟,五年下来会有哪些变化?

每晚泡脚15分钟,五年下来会有哪些变化?

剑心学者10月07日关注我是每到秋季与冬季才开始泡脚,尽量做到每晚都泡。当然经期除外。每次用艾叶、生姜、花椒煮沸后加水泡15到20分钟左右。泡到全身发热为止。坚持两年了。我身体湿气较重,随时舌头都有齿痕,夏天怕热冬天怕冷,手脚冰凉的。现在最大改变就是晚上睡觉不穿袜子,脚也不冰凉。还是有一定的效果。当...

最简单的生活一天花多少钱?

最简单的生活一天花多少钱?

90后负债女孩的极简主义:月薪6000+,一天的真实花销精简但你绝对想不到!广西农村姑娘在广州,网贷负债6w,人情债接近3w,到手月薪6000+,在珠江新城商业CBD上班,一天真实的花销在多少?道出多少负债人的辛酸!疫情这3年的收入,固定死工资基本就这个数了,负债之下一直没啥存款,都是还没发工资都被...

如何让自己的努力更有效率?

如何让自己的努力更有效率?

收到了某个朋友发来的困惑咨询,抽象出来后整理出如下问题:为何自己很努力但觉得没有成长,做了很多事情却感觉没有核心竞争力,有浑身的精力不知道该往何处发力,应该如何破局?我是一名技术型产品经理,已经工作了3年,但是感觉自己陷入了成长迷茫期。 团队很重视技术,我花了很多时间来弥补技术知识,但是发现干不过研...

腾讯突然宣布关闭这项业务,阿里巴巴和百度还能做什么?

腾讯突然宣布关闭这项业务,阿里巴巴和百度还能做什么?

腾讯地图官网近日宣布,电脑端的腾讯地图将于11月11日停止服务,用户可以下载腾讯地图App。今年5月,搜狗地图也暂停了电脑端的服务,如今仅剩百度地图一家仍旧提供电脑端服务。这一变化,与移动互联网的发展不无关系。虽然电脑端地图服务商缩水,但在移动端,背靠阿里巴巴的高德地图、百度的重要业务板块百度地图,...

Linux中Vi和Vim编辑器用法详解

Linux中Vi和Vim编辑器用法详解

目录一、简介二、安装VIM美化vim三、进入 vi\VIM 编辑器四、工作模式三种工作模式:五、退出 vi 编辑器六、移动光标七、控制命令八、编辑文件撤销命令:重复命令:九、删除字符十、修改文本十一、粘贴复制十二、高级命令十三、文本查找全文件搜索部分特殊字符列表:搜索某行中的单个字符十四、set 命...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。