Python Shapely/Pyproj转换抛出OverflowerError-确定LineString的长度

Python Shapely/Pyproj转换抛出OverflowerError-确定LineString的长度,python,shapely,pyproj,Python,Shapely,Pyproj,我在Jupyter笔记本上工作,删除了我认为不需要的代码。现在我在运行笔记本时出现溢出错误。我很确定以前的代码运行得很好,问题是我愚蠢地删除了一些东西造成的 无论如何,我似乎找不到缺少的东西,我真的很感激你的帮助。我正在使用一个带有坐标的列表,将它们转换为一个线字符串,然后进行变换。最后,我查找长度 import pyproj from pyproj import Transformer from shapely.ops import transform from shapely.geometr

我在Jupyter笔记本上工作,删除了我认为不需要的代码。现在我在运行笔记本时出现溢出错误。我很确定以前的代码运行得很好,问题是我愚蠢地删除了一些东西造成的

无论如何,我似乎找不到缺少的东西,我真的很感激你的帮助。我正在使用一个带有坐标的列表,将它们转换为一个线字符串,然后进行变换。最后,我查找长度

import pyproj
from pyproj import Transformer
from shapely.ops import transform
from shapely.geometry import LineString

route = [[41.875562, -87.624421], [29.949932, -90.070116], [40.712728, -74.006015]]

ls = LineString(route) 

project = pyproj.Transformer.from_proj(
    pyproj.Proj(init='epsg:4326'),
    pyproj.Proj(init='epsg:3857'))

ls_metric = transform(project.transform, ls) 

ls_metric_length = round(ls_metric.length / 1000)
这是回报

溢出错误:无法将浮点无穷大转换为整数


ls_metric没有生成行字符串,问题已经出现。

我运行了您的代码并得到以下警告:

FutureWarning: '+init=<authority>:<code>' syntax is deprecated.
'<authority>:<code>' is the preferred initialization method
果然,我更改了pyproj变压器,得到了一个结果:

project = pyproj.Transformer.from_proj(
    pyproj.Proj('epsg:4326'),
    pyproj.Proj('epsg:3857'))
长度为3984公里。 我在venv中使用了最新版本:

pyproj==2.6.0
Shapely==1.7.0
上面的警告也给出了另一个重要的注意事项;简言之:

pyproj.Proj('epsg:4326') works with [lat,lng], [lat,lng] ...
pyproj.Proj(init='epsg:4326') works with [lng,lat], [lng,lat] ...

第一种方法是首选方法,而第二种方法不推荐使用。

您能显示错误堆栈吗?如果您的问题得到了回答,请将其标记为感谢您的帮助!但我的笔记本上还没有写。我开始觉得我的安装一定出了问题……我刚在一个新的Jupyer笔记本上试用了一下,效果不错;可能您的笔记本使用的是旧(er)软件包。对于轴顺序的更改,您可以在创建变压器时传入“always_xy=True”。