我有一个带有2d球体索引的COllection
wayCollection.createIndex(new BasicDBObject("poly", "2dsphere"));
当我尝试插入某个对象时,我收到错误:
Exception in thread "main" com.mongodb.WriteConcernException: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "insertDocument :: caused by :: 16755 Can't extract geo keys from object, malformed geometry?: { _id: ObjectId('53a89dc6a0042baf54050037'), id: 24837452, version: \"64\", changeset: \"13731788\", uid: \"362915\", user: \"micha555\", timestamp: \"2012-11-03T09:11:23Z\", poly: { type: \"Polygon\", coordinates: [ [ [ 9.1244131, 50.0109503 ], [ 9.120464800000001, 50.0099731 ], [ 9.116641, 50.0077
虽然多边形环是闭合的(第一个和最后一个坐标是相同的)
任何想法?
这是另一个被拒绝的多边形:
{
"type":"Polygon",
"coordinates":[
[
[
9.0496053,
51.3255584
],
[
9.0492235,
51.32532
],
[
9.0495831,
51.3251321
],
[
9.049917199999999,
51.3253429
],
[
9.0496053,
51.3255584
],
[
9.049984500000001,
51.3258463
],
[
9.0505795,
51.3262127
],
[
9.050045600000001,
51.326574
],
[
9.0496432,
51.3263928
],
[
9.049625300000001,
51.3262806
],
[
9.0495628,
51.3261244
],
[
9.0495316,
51.3259341
],
[
9.0495471,
51.3257127
],
[
9.0496053,
51.3255584
]
]
]
}
当我将其粘贴到此处时似乎没问题:http://geojsonlint.com/
也许mongo db不喜欢一个点使用两次
答案 0 :(得分:3)
多边形是自相交的:
MongoDB禁止此类多边形。
答案 1 :(得分:1)
我要做的第一件事就是在http://geojsonlint.com/检查你的多边形。如果它没有通过,那么你知道你的数据点存在问题(这导致许多人以前出现此错误)。
如果确实通过了,那么我会检查最近报告并提交给MongoDB的这个错误:https://jira.mongodb.org/browse/SERVER-13735。基本上有效的MultiPolygon会导致MongoDB 2.6.X上的2dsphere索引出错。其他人报告了类似的问题,所以我敢打赌,这是一个错误或一些无证的限制。
我在JIRA上对这个问题进行了投票,并将你的意见添加到评论中 - 越多人认为MongoDB知道这个错误存在并且影响它们的速度就越快得到修复。