首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB 2dsphere索引失败(形状错误?)

MongoDB 2dsphere索引失败(形状错误?)
EN

Stack Overflow用户
提问于 2014-05-29 00:23:58
回答 4查看 5.1K关注 0票数 6

我目前正在尝试构建一个2dsphere索引,但是创建似乎失败了。

索引创建失败的文档是有效的geojson (根据geojsonlint)。

而且,据我所见,它遵守MongoDB的“多边形”规则。

我希望得到任何帮助,因为我不知道为什么索引创建似乎失败。

提前感谢!

代码语言:javascript
复制
db.poly.ensureIndex( { loc: "2dsphere" } )
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "ok" : 0,
        "errmsg" : "Can't extract geo keys from object, malformed geometry?: { _
id: 353, loc: { type: \"Polygon\", coordinates: [ [ [ 8.090732000000001, 53.6379
766 ], [ 8.050639500000001, 53.6250853 ], [ 8.036974600000001, 53.6286108 ], [ 7
.994035500000001, 53.6016978 ], [ 8.0120927, 53.59855020000001 ], [ 8.0102720000
00001, 53.5883803 ], [ 8.023379, 53.5867745 ], [ 8.0148004, 53.5832729 ], [ 8.02
6839500000001, 53.57895840000001 ], [ 8.0271685, 53.5727671 ], [ 8.0432450000000
01, 53.57190120000001 ], [ 8.0386477, 53.565241 ], [ 8.0192488, 53.5609644 ], [
8.030192100000001, 53.5508096 ], [ 8.037298, 53.5565769 ], [ 8.041402400000001,
53.55249540000001 ], [ 8.030647100000001, 53.53854200000001 ], [ 8.0381080000000
01, 53.5275022 ], [ 8.048501400000001, 53.5243656 ], [ 8.051459700000001, 53.509
912 ], [ 8.091510100000001, 53.50258460000001 ], [ 8.153839000000001, 53.5148059
0000001 ], [ 8.1708242, 53.53993010000001 ], [ 8.164240300000001, 53.5287913 ],
[ 8.1562255, 53.531339 ], [ 8.1700993, 53.54524050000001 ], [ 8.150740200000001,
 53.5596328 ], [ 8.1539377, 53.56452330000001 ], [ 8.1408203, 53.58015880000001
], [ 8.155694800000001, 53.5858101 ], [ 8.1496093, 53.60191990000001 ], [ 8.1234
503, 53.5984032 ], [ 8.090732000000001, 53.6379766 ] ] ] } }",
        "code" : 16755
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-09-09 10:58:53

坐标中有一个交点,但我无法通过geojsonlint.com看到它,因为它并不明显!

MongoDB不允许插入行相交的多边形。

票数 2
EN

Stack Overflow用户

发布于 2014-12-16 03:46:33

正如您所做的那样,将索引应用到"loc“( GeoJSON字段)。但是,请确保您的坐标是按照经度、纬度(而不是纬度、经度)的顺序指定的。

根据http://docs.mongodb.org/manual/applications/geospatial-indexes/#spherical的文档

将您的位置数据存储为具有以下坐标轴顺序的GeoJSON对象:经度、纬度.GeoJSON的坐标参考系统使用WGS84基准。

此外,根据GeoJSON规范在http://geojson.org/geojson-spec.html#positions

一个位置由一组数字表示。必须至少有两个元素,而且可能有更多的元素。元素的顺序必须遵循x,y,z顺序(在投影坐标参考系统中,坐标的位置、纬度、高度或地理坐标参考系统中的坐标的经度、纬度、高度)。允许任何数量的附加元素-附加元素的解释和含义超出了本规范的范围。

票数 2
EN

Stack Overflow用户

发布于 2016-07-28 06:16:53

如果集合中有多个文档,其中至少有一个文档的“loc”字段为空或空,则会发生此错误。

因此,请确保没有“loc”字段为空或空的任何文档。

查询: db.poly.find("loc":{$exists:true,$eq:“}”);

注意:您需要将索引添加到“loc”字段,而不是“loc.coordinates”字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23923909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档