Ich bin mit MongoDB geospatial Abfragen - $near
, geoNear
usw. - und ich würde gerne wissen, wie das dis
Ergebnis des geoNear
Befehls drehen sowie die radius
Argument für $within
Abfragen zu/von lesbaren Einheiten wie Meilen oder Kilometer.MongoDB geo Abstand/Radius zu nützlichen Einheiten
Antwort
Wenn Ihre Daten in geographischen Koordinaten vorliegen (z. B. 30.47921 N -121.45724 W), müssen Sie die zugrunde liegende Projektion mit den gewünschten Einheiten konvertieren (wählen Sie eine Projektion, die die Entfernung berücksichtigt), oder Sie müssen die Entfernung in Koordinaten umrechnen so etwas wie Meilen.
Verwenden Sie die Haversine Formel für Berechnungen http://www.movable-type.co.uk/scripts/latlong.html
Danke für Ihre Antwort! Meine Daten sind in der Tat Breiten-/Längengradpunkte, und ich konnte die Haversine-Formel verwenden, um die Entfernung zwischen den Ergebnissen und dem Ursprungspunkt zu berechnen, indem ich beide Sätze von Breiten-/Längenpunkten einfüge, aber ich bin mir immer noch nicht sicher, womit ich konkret verfahren soll "dis" und "radius". Könnten Sie erklären, was Sie mit "konvertieren Sie Ihre zugrunde liegende Projektion" gemeint haben? Sieht so aus, als wäre es einfacher, "dis" zu konvertieren, als beide lat/lon-Sets anzuschließen, nicht wahr? Würde ich die Haversine-Formel neu anordnen müssen, um meine Bedürfnisse hier zu erfüllen? Wenn ja, in welche Variable (n) könnte "dis"/"radius" passen? –
Hallo Chris, ich hatte eine ähnliche Frage (http://stackoverflow.com/questions/3878702/mongodb-bound-abfragen-how-do-i-convert-mile-to-radian). Wenn es Ihnen nichts ausmacht, können Sie die Lösung genauer erklären? Müssen Sie map/reduce verwenden? Danke noch einmal! – Abe
Wenn Sie Mongo> 1.8 verwenden, können Sie das sphärische Modell verwenden: http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-TheEarthisRoundbutMapsareFlat – TheSteve0
Mit geoNear Befehl für einen dis Wert in Kilometern fügen Sie den Parameter:
distanceMultiplier: (6371 * Math::PI/180.0)
Hinweis wenn Sie mit MongoDB Version 2.6.0 gibt es eine ist Fehler, der das neue Verhalten für sphärische Koordinatensysteme immer ermöglicht, die Entfernung in Metern zurückzugeben (basierend auf WGS84-Koordinaten).
Die Dokumentation besagt, dass die Angabe des $near
-Parameters in Legacy-Koordinaten anstelle von GeoJSON immer noch das Radiant zurückgibt. Dies wurde in neueren Versionen behoben.
Der Bug-Report: Bug #13540
- 1. Mongodb Geo enthält für Polygon
- 2. Erstellen eines Geo-Spatial-Index auf MongoDB
- 3. MongoDB: Kann keine Abfrage kanonisch machen: BadValue schlechte geo Abfrage
- 4. PLZ + Land zu Geo Koordinaten
- 5. Konvertieren von Einheiten in Boost-Einheiten von angular_velocity zu grade_per_second
- 6. Convert Integer zu Lat lange geo Position
- 7. Abbruch auf Parse Fehler mit nützlichen Nachricht
- 8. Suche nach einer einfachen und nützlichen Programmieridee
- 9. Cluster in Geo-Mapping
- 10. Annotation geo algolia symfony
- 11. Casting Boost :: Einheiten :: Menge zu verdoppeln
- 12. Geo-Chart für Java
- 13. XmlDeserialization von geo: Punkt
- 14. Google Map GEO Ergebnisse
- 15. Geo-Standortemulation? (Web site)
- 16. Format MongoDB Query-Ausgabe
- 17. "Unvollständiger Typ" bei der Verwendung von C++ - Einheiten Einheiten :: komponieren
- 18. System.Data.Spatial DbGeography.Distance-Einheiten?
- 19. Mongoose finden geo Punkte von Radius
- 20. MongoDB Error Code 16755 - Geo-Schlüssel und doppelte Scheitelpunkte können nicht extrahiert werden
- 21. Umwandlung Einheiten in Python
- 22. Geo-Tasten extrahieren Feld aus MongoDB "NYC Restaurant" Sammlung von JAVA
- 23. SASS Multiplikation mit Einheiten
- 24. NSDate-Einheiten und Berechnungen
- 25. Viewport-Einheiten, Seitenverhältnis beibehalten?
- 26. Mongodb Fehler: Kann Geo-Schlüssel nicht aus Objekt, fehlerhafte Geometrie extrahieren?
- 27. JFreeChart tick Einheiten
- 28. Nächste N nächste Geo-Punkte
- 29. Geo: Absicht mit einem placeid
- 30. Umgekehrte geo Ort mit OpenStreetMap
Es sieht aus wie es eine viel bessere Antwort ist als derjenige richtig gekennzeichnet. Ist es möglich, es zu ändern? – JohnAllen