在Shapely中查找路径起点的坐标距离
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Shapely中查找路径起点的坐标距离相关的知识,希望对你有一定的参考价值。
我有一个代表路线的坐标列表(lat / lon)。给定一定的半径和另一个坐标,我需要检查坐标是否在路线中(在任何点的给定半径内)以及它与路线起点的距离。
我看着Shapely,它看起来是一个很好的解决方案。
我开始创建一个StringLine
from shapely.geometry import LineString
route = LineString[(x, y), (x1, y1), ...]
然后检查点是否在路线附近我添加了一个缓冲区并检查交叉点
from shapely.geometry import Point
p = Point(x, y)
r = 0.5
intersection = p.buffer(r).intersection(route)
if intersection.is_empty:
print "Point not on route"
else:
# Calculate P distance from the begning of route
我卡住计算距离。我想在p
拆分路线并测量前半段的长度,但我得到的交叉口结果是HeterogeneousGeometrySequence
,我不知道我能做些什么。
我相信我找到了一个解决方案:
if p.buffer(r).intersects(route):
return route.project(p)
答案
而不是缓冲昂贵且不完美的几何体(因为缓冲需要许多片段和many other options),只需看看该点是否在距离阈值内:
if route.distance(p) <= r:
return route.project(p)
此外,您现在可能已经意识到您的距离单位是度数。如果你想要线性距离,比如米,你需要使用不同的库让它变得更加复杂。
以上是关于在Shapely中查找路径起点的坐标距离的主要内容,如果未能解决你的问题,请参考以下文章