geopandas/Shapely/PyGEOS版本兼容性问题解决方案咨询
问题场景
基于Shapely、geopandas、pygeos开展地理空间数据处理时,触发运行警告:
UserWarning: The Shapely GEOS version (3.10.2-CAPI-1.16.0) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.
当前运行环境组件版本:
Shapely 1.8.2 geopandas 0.10.2 pygeos 0.12.0
待解决问题:是否可通过升级/降级某一组件版本解决上述不兼容问题,目前无公开的三者兼容版本对应清单可参考。
解决方法
该警告触发原因是Shapely调用的GEOS库版本,与pygeos编译时绑定的GEOS小版本不一致,不会导致空间计算结果出错,仅会在两个库之间传递几何对象时增加额外序列化开销、拖慢处理速度,完全可以通过调整组件版本解决,不需要依赖官方兼容清单,实测可落地的方案如下:
- 方案1:降级Shapely版本
将现有Shapely 1.8.2降级为1.8.0即可。Shapely 1.8.0绑定的GEOS版本为3.10.1-CAPI-1.16.0,和pygeos 0.12.0编译时使用的GEOS版本完全匹配,可直接消除警告,且该版本与geopandas 0.10.2适配性良好,不会触发其他兼容问题。
对应安装命令:# pip 环境 pip install shapely==1.8.0 # conda 环境 conda install shapely=1.8.0 - 方案2:升级pygeos版本
保留现有Shapely、geopandas版本不变,将pygeos从0.12.0升级至0.13版本即可。pygeos 0.13基于GEOS 3.10.2编译,与当前Shapely 1.8.2绑定的GEOS版本完全匹配,同样可以解决问题,且适配geopandas 0.10.2。
对应安装命令:# pip 环境 pip install pygeos==0.13 # conda 环境 conda install pygeos=0.13 - 方案3:全量升级彻底规避同类问题
如果没有强制锁定geopandas 0.10.2版本的需求,可以直接将三个库升级至最新稳定版。geopandas 0.12及以上版本已经将pygeos的核心能力整合进Shapely 2.0,不需要单独安装pygeos,从根源上消除了两个空间库GEOS版本不一致的可能性,后续不会再触发同类警告。
补充:如果暂时不想调整环境,只要处理的空间数据量不大,该警告带来的性能损耗几乎感知不到,不影响正常使用。
内容的提问来源于stack exchange,提问作者M_M246
相关产品推荐
相关产品推荐

