Distância/raio geográfica de MongoDB para unidades úteis
-
28-09-2019 - |
Pergunta
Estou usando consultas geoespaciais do MongoDB - $near
, geoNear
, etc. - e eu gostaria de saber como virar o dis
resultado do geoNear
comando, bem como o radius
argumento para $within
Consultas de/de unidades legíveis como milhas ou quilômetros.
Solução
Se seus dados estiverem em coordenadas geográficas (ou seja, 30.47921 N -121.45724 W), você precisará converter sua projeção subjacente com as unidades desejadas (escolha uma projeção que preserve a distância) ou você precisa converter a distância nas coordenadas para algo como milhas.
Use a fórmula Haversine para cálculoshttp://www.movable-type.co.uk/scripts/latlong.html
Outras dicas
Usando o comando geonear para um valor DIS em quilômetros Adicionar o parâmetro:
distanceMultiplier: (6371 * Math::PI / 180.0)
Nota Se você estiver usando o MongoDB versão 2.6.0, existe um bug que sempre permite que o novo comportamento dos sistemas de coordenadas esféricas retornem a distância em metros (com base nas coordenadas WGS84).
A documentação afirma que dar o $near
O parâmetro nas coordenadas herdadas, em vez de Geojson, ainda deve devolver radianos. Isso foi corrigido em versões mais recentes.
O relatório de bug: Bug #13540