PHP MySQL - альтернатива Левенштейна на десятичной

У меня есть набор данных с координатами широты и долготы (два отдельных десятичных столбца). Мне нужно выполнить поиск по ним и упорядочить их по близости, основываясь на предоставленной координате широты / долготы.

Я не против преобразования столбцов в varchar для поиска совпадений / против, но я знаю, что сопоставление / против оптимизировано для слов.

Как лучше всего отсортировать координаты по расстоянию? При необходимости я могу сделать это через PHP, хотя я бы предпочел сделать это на уровне объектов, чтобы уменьшить нагрузку на сервер и время загрузки.

В настоящее время я нахожусь в процессе тестирования подхода "против / против".

Подводя итог:

Дано -90.23, 13.18 вернуть ближайшие пары координат широта / долгота в порядке близости.

Пример результата:

[1] -90.24, 13.17
[2] -90.18, 12.99
[3] -91.78, 16.98
[4] -90.27, 24.78

1 ответ

Решение

Существует множество методов для расчета географического расстояния между наборами точек. Некоторые точны там, где другие быстры. Какой метод вы выберете, зависит от ваших требований. Поскольку здесь, в Stack Overflow, есть много вопросов с ответами, на которые есть конкретные ответы:

https://stackru.com/search?tab=votes&q=distance%20mysql

Другие вопросы по тегам