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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top