Рассчитать границу из набора географических местоположений

У меня есть список широт и долгот.

Они получены из базы данных обратного просмотра почтового индекса, и она находится в определенном городе (Дейтон, Огайо).

39.721286   -84.133892
39.760000   -84.195900
39.757800   -84.177700
39.845339   -84.123287
...

У меня есть база данных свойств в mongodb, и каждое свойство имеет определенное местоположение (широта / долгота), когда пользователь вводит «Dayton, OH», я собираю все почтовые индексы Dayton с соответствующими географическими координатами, и я хочу сделать следующее: создать границу и добавить к ней 5 миль и выполнить поиск в базе данных свойств, которая охватывает широту / долготу почтовых индексов Дейтона.

Каков наилучший способ создания границы (квадрат / круг) для поиска в базе данных в пределах диапазона с использованием этого списка кординатов?

0

Решение

Вы можете использовать оператор $ near в MongoDB.

Например:

db.cities.find( { loc : { $near : { $geometry : { type : "Point" , coordinates : [ lon, lat] }, $maxDistance : 1/111.12 } } } )

Приведенный выше запрос находит все вблизи определенных координат в радиусе 1 км (см. $ MaxDistance).

Для получения дополнительной информации об операторе $ near, посмотрите на MongoDB Руководство.

0

Другие решения

Нашел решение, по-видимому, лучший подход — это вычислить границу от конца приложения, используя алгоритм «выпуклой оболочки», а затем выполнить запрос.

0

По вопросам рекламы [email protected]