У меня есть список широт и долгот.
Они получены из базы данных обратного просмотра почтового индекса, и она находится в определенном городе (Дейтон, Огайо).
39.721286 -84.133892
39.760000 -84.195900
39.757800 -84.177700
39.845339 -84.123287
...
У меня есть база данных свойств в mongodb, и каждое свойство имеет определенное местоположение (широта / долгота), когда пользователь вводит «Dayton, OH», я собираю все почтовые индексы Dayton с соответствующими географическими координатами, и я хочу сделать следующее: создать границу и добавить к ней 5 миль и выполнить поиск в базе данных свойств, которая охватывает широту / долготу почтовых индексов Дейтона.
Каков наилучший способ создания границы (квадрат / круг) для поиска в базе данных в пределах диапазона с использованием этого списка кординатов?
Вы можете использовать оператор $ near в MongoDB.
Например:
db.cities.find( { loc : { $near : { $geometry : { type : "Point" , coordinates : [ lon, lat] }, $maxDistance : 1/111.12 } } } )
Приведенный выше запрос находит все вблизи определенных координат в радиусе 1 км (см. $ MaxDistance).
Для получения дополнительной информации об операторе $ near, посмотрите на MongoDB Руководство.
Нашел решение, по-видимому, лучший подход — это вычислить границу от конца приложения, используя алгоритм «выпуклой оболочки», а затем выполнить запрос.