ObjectMapper: Найти географические места в пределах определенной площади, отсортированные по близости - PullRequest
1 голос
/ 10 сентября 2011

Я создаю приложение Ruby на Heroku с использованием Sinatra и базы данных PostgreSQL, сопряженной с ObjectMapper. Мне нужно выполнить запрос, который возвращает список всех местоположений в базе данных (каждое из которых имеет атрибуты широты и долготы) в пределах определенного прямоугольника (соответствующего видимой области карты).

Я могу сделать это путем поиска широт, которые попадают в границы карты, то же самое для долготы. Мой вопрос, однако, как я могу вернуть эти результаты, отсортированные по близости? Я мог бы получить все результаты, соответствующие запросу, и затем отсортировать их, как только они вышли из базы данных, но я хочу выполнить этот запрос пакетами и вернуть только, скажем, 5 ближайших мест, затем места 6-10, затем 11-15 и т. Д. .

Можно ли это сделать?

РЕДАКТИРОВАТЬ: Я еще не решил, использовать ли PostgreSQL наверняка, я мог бы использовать MongoDB, если это уместно.

1 Ответ

0 голосов
/ 24 марта 2013

Непосредственный вопрос - близость к чему?Вам необходимо определить точку для использования в качестве основы для близости.Затем вы можете использовать st_distance из предложения ORDER BY для сортировки по расстоянию между геометрическими объектами.Это можно комбинировать с LIMIT и OFFSET, чтобы делать именно то, что вы хотите.

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