6 votos

Obtener el total de la distancia de un punto al final de una cadena de línea

Tengo una lista de coordenadas de GPS que componen una ruta de autobús:

busRoute = [(x1, y1), (x2, y2), ... (xn, yn)]

También tengo un punto que puede no ser exactamente en esa ruta (debido a un error de GPS):

currentLocation = (x, y)

Usando Python, ¿cómo puedo obtener el total de la distancia desde el autobús de la currentLocation hasta el final de la busRoute?

9voto

hernan43 Puntos 566

La manera más sencilla de hacer esto es utilizar la referencia lineal métodos con bien formada.

from shapely.geometry import LineString, Point

# Example data
busRoute = LineString([(80, 380), (160, 380), (220, 370), (280, 330), (310, 210), (379, 185)])
currentLocation = Point(280, 350)

# The current location is not exactly on the bus route
print(busRoute.distance(currentLocation))  # 16.6410058868

# Distance along line to nearest projected point, from start
print(busRoute.project(currentLocation))  # 201.8446468877574

# .. and distance from end .. I think this is ultimately what you are looking for
print(busRoute.length - busRoute.project(currentLocation))  # 208.17654522066948

# and the point that is used, which is on the busRoute
print(busRoute.interpolate(busRoute.project(currentLocation)).wkt)
# POINT (270.7692307692307700 336.1538461538461900)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X