Как добавить список на основе расстояния между двумя координатами? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь добавить список чисел на основе расстояния между двумя координатами широты / долготы.Если у меня есть списки широты и долготы, а также сжатый массив точек и их соответствующие широты, как мне написать цикл для добавления точек, в которых расстояние между обеими координатами меньше 500?Я пробовал способ ниже, но продолжаю получать ошибки.Есть предложения?

import geopy.distance

latH = [25.5, 29.0, 27.2, 26.0, 30.1, 25.7, 26.3, 35.5] 
lonH = [-84.3, -85.0, -85.6, -90.3, -89.0, -89.7, -90.5, -86.2]

rain = [([29816.0, 24387, 33155.0, 32062.0, 31251.0],26.1915, -80.4492), ([30954.0, 31251.0, 32366.0, 32062.0] 26.1297, -81.7625)]
rain2 = []
for j in range(len(rain)):
    appendres = []
    for k in range(len(rain[j][0]):
        for i in range(len(latH)):
            if geopy.distance.distance((rain[j][1],rain[j][2]),(latH[i],lonH[i])).km <= 500.0:
                appendres.append(rain[k])
    rain2.append(appendres)

1 Ответ

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

Вас это устраивает?

from geopy.distance import distance

latH = [25.5, 29.0, 27.2, 26.0, 30.1, 25.7, 26.3, 35.5] 
lonH = [-84.3, -85.0, -85.6, -90.3, -89.0, -89.7, -90.5, -86.2]

rain = [([29816.0, 24387, 33155.0, 32062.0, 31251.0], 26.1915, -80.4492), ([30954.0, 31251.0, 32366.0, 32062.0], 26.1297, -81.7625)]
rain2 = []

#   Since all your arrays are the same length...
for lat, lon in zip(latH, lonH):
    arr = []
    for data, lat_2, lon_2 in rain:
        if distance((lat, lon), (lat_2, lon_2)).km < 500:
            arr.append(data)
    rain2.append(arr)

print(rain2)
[[[29816.0, 24387, 33155.0, 32062.0, 31251.0], [30954.0, 31251.0, 32366.0, 32062.0]], [[30954.0, 31251.0, 32366.0, 32062.0]], [[30954.0, 31251.0, 32366.0, 32062.0]], [], [], [], [], []]

Я написал код, похожий по поведению на ваш, без всех синтаксических проблем и с более ясными намерениями для меня.Но так как мы не можем запустить ваш код, а вы не предоставляете желаемый результат ... Я не могу быть уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...