Эффективно найти ближайшую пару координат из набора в Python
Эта проблема
Представь, что я стою в аэропорту. Учитывая пару географических координат, как можно эффективно определить, в каком аэропорту я находился?
входные
Координатная пара(x,y)
представляющий местоположение, в котором я стоял.Набор координатных пар[(a1,b1), (a2,b2)...]
где каждая пара координат представляет один аэропорт.Желаемый вывод
Координатная пара(a,b)
из набора координатных пар аэропорта, представляющих ближайший аэропорт к точке(x,y)
.
Неэффективное решение
Вот моя неэффективная попытка решить эту проблему. Он четко линейен по длине множества аэропортов.
shortest_distance = None
shortest_distance_coordinates = None
point = (50.776435, -0.146834)
for airport in airports:
distance = compute_distance(point, airport)
if distance < shortest_distance or shortest_distance is None:
shortest_distance = distance
shortest_distance_coordinates = airport
Вопрос
Как можно улучшить это решение? Это может включать некоторый способ предварительной фильтрации списка аэропортов на основе координат местоположения, в котором мы сейчас находимся, или предварительной сортировки их в определенном порядке.