Shapely/Pyproj 转换抛出 OverflowError - 确定 LineString 的长度
Shapely/Pyproj transformation throws OverflowError - determining length of LineString
我正在使用 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)
这个returns
OverflowError: cannot convert float infinity to integer
问题已经出现在 ls_metric 中,它不生成 LineString。
我 运行 您的代码并收到此警告:
FutureWarning: '+init=<authority>:<code>' syntax is deprecated.
'<authority>:<code>' is the preferred initialization method
果然改了pyproj T运行sformer得到了结果:
project = pyproj.Transformer.from_proj(
pyproj.Proj('epsg:4326'),
pyproj.Proj('epsg:3857'))
给出长度 3984 公里。
我在venv中使用了最新版本:
pyproj==2.6.0
Shapely==1.7.0
上面的警告还给出了关于 axis order changes 的另一个重要说明;简而言之:
pyproj.Proj('epsg:4326') works with [lat,lng], [lat,lng] ...
pyproj.Proj(init='epsg:4326') works with [lng,lat], [lng,lat] ...
第一个是首选方式,第二个已弃用。
我正在使用 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)
这个returns
OverflowError: cannot convert float infinity to integer
问题已经出现在 ls_metric 中,它不生成 LineString。
我 运行 您的代码并收到此警告:
FutureWarning: '+init=<authority>:<code>' syntax is deprecated.
'<authority>:<code>' is the preferred initialization method
果然改了pyproj T运行sformer得到了结果:
project = pyproj.Transformer.from_proj(
pyproj.Proj('epsg:4326'),
pyproj.Proj('epsg:3857'))
给出长度 3984 公里。 我在venv中使用了最新版本:
pyproj==2.6.0
Shapely==1.7.0
上面的警告还给出了关于 axis order changes 的另一个重要说明;简而言之:
pyproj.Proj('epsg:4326') works with [lat,lng], [lat,lng] ...
pyproj.Proj(init='epsg:4326') works with [lng,lat], [lng,lat] ...
第一个是首选方式,第二个已弃用。