librown
@librown
На-все-руки-мастер и немного кодер

Как выбрать объекты находящиеся «ближе 500 метров» от набора других объектов?

Привет, Тостер!

1. Есть mysql-таблица с набором точек (поля lat, lng). Таким образом я храню координаты контура Черного моря :)
2. Есть таблица с отелями (тоже имеют поля lat и lng).

Как мне одним запросом выбрать "все отели расположенные недалеко от моря" (от 0 до 1000 метров от моря).

В гугле нашел пример запроса для поиска "ближайших точек относительно текущей":

SELECT id, ( 3959 * acos( cos( radians($lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($lng) ) + sin( radians($lat) ) * sin( radians( lat ) ) ) ) AS distance 
FROM sea_latlng 
HAVING distance < 25 
ORDER BY distance


Но похоже он мне не подходит.
Подскажите, как лучше поступить?
  • Вопрос задан
  • 288 просмотров
Пригласить эксперта
Ответы на вопрос 2
AMar4enko
@AMar4enko
Поискать библиотеки для работы с геоданными, который умеют работать с полигонами.
Один раз прогнать все отели, посчитав удаленность каждого, записать в базу в отдельное поле. Фильтровать по нему.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы