MongoDB geo Entfernung / Radius zu nützlichen Einheiten
-
28-09-2019 - |
Frage
Ich bin mit MongoDB geospatial Abfragen - $near
, geoNear
usw. - und ich würde gerne wissen, wie das dis
Ergebnis des geoNear
Befehls drehen sowie das radius
Argument für $within
Abfragen zu / von lesbaren Einheiten wie Meilen oder Kilometer.
Lösung
Wenn Sie Ihre Daten in geografischen Koordinaten (dh 30,47921 N -121,45724 W), dann müssen Sie die zugrunde liegende Projektion mit den Einheiten konvertieren Sie wollen (eine Projektion, dass Konserven Abstand wählen) oder Sie müssen den Abstand in Koordinaten, um etwas konvertieren wie Meilen.
Verwenden Sie die Haversine Formel für Berechnungen http://www.movable-type.co.uk/scripts/latlong. html
Andere Tipps
Mit geoNear Befehl für einen dis Wert in Kilometer fügen Sie den Parameter:
distanceMultiplier: (6371 * Math::PI / 180.0)
Hinweis wenn Sie mit MongoDB Version 2.6.0 gibt es einen Fehler, die immer das neue Verhalten für sphärische Koordinatensysteme Rückkehr Abstand in Metern (basierend auf WGS84-Koordinaten).
ermöglicht Die Dokumentation besagt, dass geben die $near
Parameter in Legacy-Koordinaten anstatt GeoJSON sollte noch Radiant zurück. Dies hat in neueren Versionen behoben.
Der Bug-Report: Bug # 13540