MongoDB geo distancia / radio a unidades útiles
-
28-09-2019 - |
Pregunta
Estoy usando MongoDB consultas geoespaciales - $near
, geoNear
, etc. - y me gustaría saber cómo convertir el resultado del comando dis
geoNear
, así como el argumento radius
para consultas $within
a / de lectura unidades como millas o kilómetros.
Solución
Si los datos están en coordenadas geográficas (es decir, N 30.47921 -121.45724 W), entonces usted necesita para convertir su proyección subyacente con las unidades que desea (seleccione una proyección que conserva la distancia) o es necesario convertir la distancia en coordenadas a algo millas similares.
Usar la fórmula Haversine para los cálculos http://www.movable-type.co.uk/scripts/latlong. html
Otros consejos
Mediante el comando geoNear por un valor dis en kilómetros agregar el parámetro:
distanceMultiplier: (6371 * Math::PI / 180.0)
Nota Si está utilizando la versión 2.6.0 mongodb hay un error que siempre permite que el nuevo comportamiento de sistemas esférica a distancia en metros (retorno sobre la base de coordenadas WGS84) de coordenadas.
La documentación que da el parámetro $near
en coordenadas de legado en lugar de GeoJSON todavía deben volver radianes. Esto se ha corregido en las versiones más recientes.
El informe de error: legado bug # 13540