在 Shapely 中查找距离路线起点的坐标距离
Finding the distance of coordinates from the beginning of a route in 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)
此外,您现在可能已经意识到您的距离单位是度数。如果您想要线性距离,例如米,则需要使用不同的库使其变得更加复杂。
我有一个代表路线的坐标列表 (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)
此外,您现在可能已经意识到您的距离单位是度数。如果您想要线性距离,例如米,则需要使用不同的库使其变得更加复杂。