有没有办法查询使用MongoDB完全覆盖给定多边形的所有位置(存储为geojson的多边形列表)?

时间:2013-08-22 06:50:08

标签: mongodb polygon geospatial geojson

我有一个在MongoDB中存储为geoJson的多边形列表。 其中一个多边形的示例: {  “区域”:“Area123”,  “边界”:{     “type”:“Polygon”,     “坐标”:[[[100,12],[120,12],[120,15],[100,12]]]   } } Boundary是一个2dsphere索引。

使用$ geoWithin,我可以指定一个更大的多边形并返回完全位于这个更大的多边形内的Area123。

有没有办法在Area123中指定一个较小的多边形,让MongoDB返回Area123?

1 个答案:

答案 0 :(得分:1)

您可以使用$geoIntersects专门查找多边形与其他多边形相交的人。你可以这样做:

db.<collection>.find( { Boundary :
                         { $geoIntersects :
                            { $geometry :
                               { type : "Polygon"
                                 coordinates : [ <coordinates of Area123> ]
                      } } } } )

然而,这个查询将返回甚至不包含Area123的多边形,也包括那些在内部的人,那些相交的人等等。

因此,您可以检查每个返回的多边形的Area123点是否包含在内部。