2017-04-11 2 views
1

I Aufzeichnungen habe, wie unten in meiner mongodb SammlungIn welchen Einheiten geo2d Gesamtergebnis pymongo zurückgegeben

/* 1 */ 
{ 
    "_id" : ObjectId("58ecf141624bc0798ee5882d"), 
    "username" : "user.sthlm", 
    "location" : [ 
     18.0686, 
     59.3293 
    ] 
} 

/* 2 */ 
{ 
    "_id" : ObjectId("58ecf141624bc0798ee5882e"), 
    "username" : "user.malmo", 
    "location" : [ 
     13.0038, 
     55.605 
    ] 
} 

/* 3 */ 
{ 
    "_id" : ObjectId("58ecf141624bc0798ee5882f"), 
    "username" : "user.la", 
    "location" : [ 
     -118.2437, 
     34.0522 
    ] 
} 

„Standort“ ist ein „2dsphere“ Typ, und es ist in Ordnung [Länge, Breite]

Nun verwende ich eine pymongo Abfrage wie unten Abstand zwischen einem gegebenen Punkt

(Stockholm Koordinaten) Länge = 18,0686 Breite = 59,3293

012 abrufen
for doc in self.users.aggregate([{"$geoNear": {"near": [longitude, latitude], 
                  "distanceField":"distance", 
                  "distanceMultiplier": 1.0, 
                  "num": int(count), 
                  "spherical": True}}]): 

Das Ergebnis ist wie

{ 
     "distance": 0, 
     "username": "user.sthlm" 
    }, 
    { 
     "distance": 0.08048218816530191, 
     "username": "user.malmo" 
    }, 
    { 
     "distance": 1.393869662777678, 
     "username": "user.la" 
    } 

In der Abfrageantwort folgt der Abstand zwischen Stockholm und LA wird als 1,393869662777678 neu abgestimmt. Ich bin nicht ganz sicher, in welcher Einheit es ist.

Von Google Maps ist der Abstand zwischen den Koordinaten 8.875 km oder 5.515 Meilen und 1.3938 passt nicht Rechnung. Aus der mongoDB-Dokumentation verweise ich, dass das Ergebnis NICHT im Bogenmaß zurückgegeben wird. Ich frage mich also, was ich von meiner Anfrage-Antwort beziehen soll.

Dank

Antwort

1

Der Abstand wird in Radiant zurück. Konvertieren (sehr ungefähr) Radianten in km durch Multiplizieren mit 6371.

6371 * 1,393 = 8874 km, wie erwartet.

+0

Es funktioniert. Darf ich wissen, wie Sie bei 6371 angekommen sind? – slysid

+0

https://www.google.com/search?q=konvertieren + radians+to+kilometer –