2016-03-07 79 views
0

我有一個來自歐洲的地理數據(lng,lat)。 我試圖做一個地理空間查詢來獲取一個圓內的所有元素。

所以,我創建了一個GeoJSON字段和一個2dsphere索引。 這看起來像:

{ 
    "_id" : ObjectId("56c3484612aeb853a83ec336"), 
    "defaultLabel" : "Zoo de Mulhouse", 
    "weight" : NumberInt(1), 
    "country" : "FR", 
    "loc" : { 
    "type" : "Point", 
    "coordinates" : [ 
     47.731673, 
     7.347819 
    ] 
    } 
} 

db.myCollection.createIndex({"loc":"2dsphere"});

到目前爲止,一切都很好。 但後來我嘗試了一些查詢來檢查。 我從距離數據約1,12公里(1120米)處得到一點,並做了一個半徑爲1200米的請求。

db.poi.find({loc: 
      {$geoWithin: 
       {$centerSphere:[ 
       [47.728593,7.333486], 
       1200/6378100]  // radius of earth ~6378.1Km 
       } 
      } 
      }) 

我沒有結果。 有了同樣的要求,我必須把約1650米才能得到結果。顯然,這是不可接受的。

那麼,我做錯了什麼?

回答

0

發現問題:座標在我的傳統中存儲爲[lat,lgn],並且在創建GeoJSON之前沒有檢查,所以錯誤的順序。