【发布时间】:2014-08-26 00:47:39
【问题描述】:
mongo 2.6
我有一些存储的多边形。我有一点。我知道这一点是否适合任何存储的多边形
文档示例
{ ..., "polygons" : [ [ 17.60083012593064, 78.18557739257812 ], [ 17.16834652544664, 78.19381713867188 ], [ 17.17490690610013, 78.739013671875 ], [ 17.613919673106714, 78.73489379882812 ] ], ... }
Mongodb : Check if a point is inside a stored polygon 已经有几乎相同的问题了。 但这对我不起作用-此查询必须至少给出一个结果(示例中的结果)-但事实并非如此。
db.areas.find( { polygons : { $geoIntersects : { $geometry : {type:"Point",coordinates:[17.3734, 78.4738]} } } } )
实际上,如果我在任何多边形的边界上选择一个点 - 确实如此。
$geoWithin 方法必须按照mondodb 文档所述完成工作。
但是这些查询中的任何一个都不起作用
db.areas.find( { polygons : { $geoWithin : { $geometry : {type:"Point",coordinates:[17.3734, 78.4738]} } } } ) - not supported with provided geometry
db.tradeareas.find( { polygons : { $geoWithin : { $geometry : {type:"Polygon",coordinates: inside_polygon} } } } ) - BadValue bad geo query
我好像错过了什么,但不明白什么和在哪里。
我将不胜感激。
【问题讨论】:
-
您使用的是 2d 还是 2dsphere 索引?
-
我已经发布了一个解决方案。似乎点/多边形相交查询的顺序很重要。
标签: mongodb polygon point mongodb-query