Найти ближайший lat / lng в PHP для массива входных значений

У меня есть код, который для массива пар lat / long находит ближайшую пару lat / long из другого массива:

Входные данные:

$reference_array, который является ассоциативным массивом, где ключи являются «метками», а значения — широтой / длиной этой метки. Например, оно может сопоставить название города с центром города.

$input_array, который является списком широт / длинных пар.

Мне нужно найти ярлык от $reference_array ближайший к каждому из пунктов $input_array, У меня также есть максимальный радиус, поэтому любой ближайшей точке, не входящей в этот радиус, присваивается «ближайшая метка», равная нулю.

У меня есть код, который работает — я перебираю каждый массив, вычисляю расстояние между каждой парой, а затем записываю ближайшую метку (и ее расстояние) для каждой точки в $input_array, Это работает, и в основном так же, как этот вопрос, но не эффективен, и мой сценарий рассчитан с относительно небольшим количеством очков. Я не могу контролировать размер $reference_arrayпоэтому всегда будет большое количество сравнений, которые необходимо выполнить.

Мой вопрос — какие структуры данных или алгоритмы я могу использовать для повышения эффективности этих вычислений?

0

Решение

Вы можете повысить эффективность, если сначала проверяете, включены ли точки в квадрат с радиусом стороны 2 * или нет. Потому что при сравнении операций нагрузка значительно меньше, чем при расчете расстояния.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]