1

我正在使用 Jupyter Notebook 并删除了我认为不需要其他代码的代码。现在运行笔记本时出现溢出错误。我很确定以前的代码可以正常工作,而问题是我愚蠢地删除东西引起的。

无论如何,我似乎找不到丢失的东西,非常感谢帮助。我正在使用带有坐标的列表,将它们转换为线串,然后对其进行转换。最后,我查找长度。

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)

这返回

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

不生成 LineString 的 ls_metric 已经出现了问题。

4

1 回答 1

1

我运行了您的代码并收到此警告:

FutureWarning: '+init=<authority>:<code>' syntax is deprecated.
'<authority>:<code>' is the preferred initialization method

果然我换了pyproj Transformer,得到了结果:

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] ...

第一个是首选方式,而第二个已弃用。

于 2020-03-22T18:50:42.060 回答