найти расстояние пути, используя набор точек на пути - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть набор координат long и lat представляют путь.

coordinates = [
    [60, 58],
    [63, 67],
    [69, 82],
    [74, 75],
    [85, 73]
...
];

Как рассчитать расстояние пути в метрах

1 Ответ

0 голосов
/ 03 февраля 2019

Вы сказали в комментарии, что вы можете найти расстояние над поверхностью земли между двумя точками, заданными долготой и широтой.Допустим, у вас есть функция, которая может сделать это и которая может быть вызвана с помощью earth_distance(pt1, pt2).Вы можете использовать Python для добавления всех расстояний между последовательными точками с помощью

total_distance = sum(earth_distance(pt1, pt2)
                     for pt1, pt2 in zip(coordinates, coordinates[1:]))

. Эта формула использует встроенную функцию zip для получения пар точек, срез [1:] означает, что пары точекявляются последовательными точками в вашем списке coordinates, функцией earth_distance для расчета расстояния между двумя точками и sum для сложения их всех вместе.Это питонский способ решения вашей проблемы.

Вот способ, который больше похож на то, как другие языки делают это, хотя все еще в Python.

total_distance = 0
pt2 = coordinates[0]
for ndx in range(1, len(coordinates)-1):
    pt1 = pt2
    pt2 = coordinates[ndx]
    total_distance += earth_distance(pt1, pt2)

или это:

total_distance = 0
for ndx in range(1, len(coordinates)-1):
    pt1 = coordinates[ndx - 1]
    pt2 = coordinates[ndx]
    total_distance += earth_distance(pt1, pt2)
...