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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top