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

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

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

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的问题” 的相关文章

四川公务员考试 真题_福建省选调生考试书籍

四川公务员考试 真题_福建省选调生考试书籍

而在四川的国家公务员考试中,行测中的言语理解题目甚至占到了40道题。所以,很多时候,你会听到“得言语者得行测”就是在强调言语理解在四川公务员考试行测中的重要...2019年四川省省考已进入备考阶段,刷历年省考真题可提升巩固管家整理了33套行测申论四川历练真题,带答案解析需要的同学,看下方图片领取方式...

特斯拉再降价,为何受伤最大的不是比亚迪?

特斯拉再降价,为何受伤最大的不是比亚迪?

特斯拉降价算新闻吗?素有“韭菜收割机”之称的特斯拉,不论涨价或者降价都是再普通不过的常规操作,但是这一次,轻轻松松就闯上了热搜。降一次价,上一次热搜?当然这一方面,是因为本次降价幅度不小,Model 3官降1.3万到1.8万元不等,主销车型Model Y最高降幅甚至达到3.7万元。就算结合客观情况,...

菜鸟驿站,取件免费,那它是怎么盈利的,内行透露出了实情

菜鸟驿站,取件免费,那它是怎么盈利的,内行透露出了实情

引言:互联网的发展让人们的消费方式逐渐发生改变。以前大众需要购买商品的时候,都必须去到实体店中,但现在仅仅通过网络就可以购买到自己想要的物品。随着互联网购物行业的飞速发展,快递行业也发展得如火如荼,快递量的需求而逐渐增加。菜鸟驿站也随之出现。菜鸟驿站取件是不用收费的,对此,有不少人就感到好奇,竟然不...

中小企业网络营销的5个常用方法!

[SEO教程]中小企业网络营销的5个常用方法! 0 2018-07-31 19:00:43 2018年最火项目 电销机器人等你加盟  对于中小企业而言,可利用的预算相对有限,因此,企业主会通过线上渠道的各种途径,开展营销与推广的工作,这里有常用的5个小策略分享给大家。  ...

Linux服务器离线安装 nginx的详细步骤

Linux服务器离线安装 nginx的详细步骤

目录linux服务器 离线安装 nginx1.资源2.安装步骤常用命令操作启动nginx停止nginx重启nginx查看端口占用Linux服务器 离线安装 nginx1.资源nginx-1.20.1.tar.gz(下载链接中包含gcc、g++、pcre、libtool、nginx)百度网盘下载:链接...

遇到这种情况,你们捡还是不捡?

遇到这种情况,你们捡还是不捡?

遇到这种情况,你们捡还是不捡?2022-10-13 12:55·和平1直你还缺兄弟不谁来也是4个遇到这种情况,你们捡还是不捡怎么感觉老板亏了结果每次删掉的都是匙花70万给自己的大腰子放了个假请问他为什么白天不学习?看的出来,他是真心喜欢番茄炒鸡蛋很显然,他突然不想送了人间真实昨天刚分了一个 你过几天...

发表评论

访客

看不清,换一张

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