2017-04-11 90 views
1

我在我的MongoDB集合有如下記錄在什麼單位pymongo geo2d彙總結果返回

/* 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 
    ] 
} 

「位置」是一個「2dsphere」類型,它是爲了[經度,緯度]

現在我使用如下一個pymongo查詢以一個給定的點

(斯德哥爾摩座標) 經度= 18.0686 緯度之間檢索距離= 59.3293

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

的結果如下

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

在查詢響應斯德哥爾摩和LA之間的距離重新調整爲1.393869662777678。我不太確定它在哪個單位。

從谷歌地圖,座標之間的距離是8,875公里或5,515英里和1.3938不符合任何法案。從mongoDB文檔中,我指的是結果不是以弧度返回的。所以我想知道從我的查詢響應中引用什麼。

感謝

回答

1

的距離返回弧度。將(非常接近)弧度轉換爲公里乘以6371.

6371 * 1.393 = 8874公里,如預期。

+0

它的工作原理。我可以知道你是如何抵達6371的? – slysid

+0

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