mongodb的地理空間索引常見的問題

來源:互聯網
上載者:User

標籤:style   http   color   io   ar   strong   for   sp   問題   

建立地理空間索引注意事項

 

建立地理空間索引失敗,提示錯誤資訊如下

> db.places.ensureIndex({"loc":"2dsphere"})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"ok" : 0,
"errmsg" : "Can‘t extract geo keys from object, malformed geometry?: { _
id: ObjectId(‘5428bb224f26d9aa1af3d844‘), name: \"Hudson River\", loc: { type: \
"Line\", coordinates: [ [ 0.0, 1.0 ], [ 0.0, 2.0 ], [ 1.0, 2.0 ] ] } }",
"code" : 16755
}

 

原因是多邊形的點至少是4個才能建立成功

mongodb版本:mongodb-2.6。

> db.world.insert( { "name":"New England", "loc":{ "type":"Polygon", "
coordinates":[[0,1],[0,2],[1,2]] } } )這裡只有3個點, 最外側應該有兩個[和]

> db.world.insert({"name":"New England", "loc":{ "type":"Polygon", "
coordinates":[[[0,1],[0,2],[1,2],[0,1]]]}})這裡有4個。

建立成功提示資訊如下:

> db.places.ensureIndex({"loc":"2dsphere"})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}

這種錯誤一般都是json格式和內容不正確。

錯誤資訊如下

"$err" : "Can‘t canonicalize query: BadValue bad geo query"

原因是type=Polygon類型,表示是多邊形,至少需要有4個點(起點和終點必須一樣),並且多邊形有多個環組成,所以應該是數組結構,每個數組是一個多邊形。

正確的格式如下:

db.places.insert({"name":"New England","loc":{"type":"Polygon","coordinates":[[[0,1],[0,2],[1,2],[0,1]]]}})

var eastVillage={"type":"Polygon","coordinates":[[-73.9917900,40.7264100],[-73.9917900,40.7321400],[-73.9829300,40.7321400],[-73.9917900,40.7264100]]}

參考文檔如下:

http://stackoverflow.com/questions/25893415/mongodbcant-canonicalize-query-badvalue-bad-geo-query

http://geojson.org/geojson-spec.html#id4 

mongodb的地理空間索引常見的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.