【问题标题】:Is there a way to query for all locations (a list of polygons stored as geojson) fully covering given polygon with MongoDB?有没有办法用 MongoDB 查询所有位置(存储为 geojson 的多边形列表)完全覆盖给定多边形?
【发布时间】:2013-08-24 18:35:39
【问题描述】:

我在 MongoDB 中有一个以 geoJson 形式存储的多边形列表。 多边形之一的示例: { “区域”:“区域 123”, “边界”:{ “类型”:“多边形”, “坐标”:[[[100,12],[120,12],[120,15],[100,12]]] } } Boundary 是一个 2dsphere 索引。

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

有没有办法指定一个位于 Area123 内的较小多边形并让 MongoDB 返回 Area123?

【问题讨论】:

    标签: mongodb polygon geospatial geojson


    【解决方案1】:

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

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

    但是,这个查询甚至会返回不包含 Area123 的多边形,但也会返回内部的多边形、相交的多边形等。

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

    【讨论】:

    • 非常感谢!这就是我想要的,让所有多边形包含,在里面和相交一点! $geoIntersects 完美运行!
    猜你喜欢
    • 2018-05-08
    • 2012-06-23
    • 2023-03-28
    • 1970-01-01
    • 2020-10-31
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    相关资源
    最近更新 更多