Mongodb Geo расстояние / радиус для полезных единиц
-
28-09-2019 - |
Вопрос
Я использую MongoDB Geospatial Queceries - $near
, geoNear
, и т. Д. - и я хотел бы знать, как превратить dis
результат geoNear
команда, а также radius
аргумент для $within
Запросы к / из читаемых единиц, таких как мили или километров.
Решение
Если ваши данные в географических координатах (т. Е. 30.47921 N -121,45724 W), вам нужно преобразовать базовую проекцию с нужными устройствами (выберите проекцию, которая сохраняет расстояние) или необходимо преобразовать расстояние в координатах к чему-то вроде миль.
Используйте формулу Haversine для расчетовhttp://www.movable-type.co.uk/scripts/latlong.html.
Другие советы
Использование команды Geonear для значения DIS в километрах добавить параметр:
distanceMultiplier: (6371 * Math::PI / 180.0)
ПРИМЕЧАНИЕ Если вы используете Mongodb версии 2.6.0. Существует ошибка, которая всегда включает новое поведение для систем сферических координат для возврата для возврата расстояния в метрах (на основе координат WGS84).
Документация говорится, что дает $near
Параметр в устаревших координатах, а не Geojson должен до сих пор возвращать радианы. Это было зафиксировано в более новых версиях.
Отчет об ошибке: BUG # 13540.