MongoDB s Distance / rayon d'unités utiles
-
28-09-2019 - |
Question
J'utilise MongoDB requêtes géospatiales - $near
, geoNear
, etc. - et je voudrais savoir comment transformer le résultat de dis
de la commande geoNear
ainsi que l'argument radius
pour les requêtes $within
à / de lisible unités comme miles ou kilomètres.
La solution
si vos données sont en coordonnées géographiques (c.-à 30,47921 N -121,45724 W) alors vous devez convertir votre projection sous-jacente avec les unités que vous voulez (choisir une projection qui préserve la distance) ou vous devez convertir la distance en coordonnées à quelque chose comme miles.
Utilisation de la formule de calcul pour Haversine http://www.movable-type.co.uk/scripts/latlong. html
Autres conseils
Utilisation de la commande geoNear pour en kilomètres ajouter de la valeur du paramètre dis:
distanceMultiplier: (6371 * Math::PI / 180.0)
Notez que si vous utilisez la version 2.6.0 MongoDB il y a un bug qui permet toujours le nouveau comportement des systèmes de coordonnées sphériques à distance de retour en mètres (basé sur les coordonnées WGS84).
Les états de documentation qui donne le paramètre $near
en coordonnées existantes plutôt que GeoJSON devraient revenir encore radians. Cela a été corrigé dans les versions plus récentes.
Le rapport de bogue: bug # 13540