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