【问题标题】:MongoDB How to find which polygon contains a specified Point?MongoDB 如何找到包含指定点的多边形?
【发布时间】:2013-12-08 07:07:06
【问题描述】:

我在 MongoDB(2.4.8) 中插入了许多多边形,并希望找到指定 Point 所在的多边形。这似乎是一个常见问题。但是在阅读了谷歌的所有文档后,我没有得到结果。所以创建这个问题。

例如

db.addr_poly.insert(
{ loc :
   { type : "Polygon" ,
     coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
} })
db.addr_poly.insert(
{ loc :
   { type : "Polygon" ,
     coordinates : [ [ [ 0 , 0 ] , [ -3 , -6 ] , [ -6 , -1 ] , [ 0 , 0 ] ] ]
} })

现在如何找到包含Point(1,1)的多边形?

有人可以帮助我吗?非常感谢!

【问题讨论】:

    标签: mongodb geometry point geo


    【解决方案1】:

    使用$geoIntersects operator。它查询与您传递的 GeoJSON 对象相交的所有形状。当您将一个点传递给它时,它应该返回包含该点的所有形状。请记住,$geoIntersects 运算符仅适用于 2dsphere 索引,不适用于 2d 索引。

    【讨论】:

    • 有效!对不起,我刚试过 $geoWithin。菲利普,非常感谢!
    • @fanzhou 如果这个答案是正确的,请点击它旁边的勾号图标。
    • @Philipp 你能解释更多关于查询的信息吗?我需要这个查询的例子:)
    【解决方案2】:

    正如@philipp 所说,您应该使用 $geoIntesects 运算符。我很难弄清楚这个查询。我想我会分享它的外观,它可能会在以后为某人省去麻烦。

    db.addr_poly.find({
        loc:{
            $geoIntersects: {
                $geometry: {
                  type: "Point" ,
                  coordinates: [1, 1]
                }
             }
         }
    });
    

    【讨论】:

    • 您能否举个例子,如何使用 Mongo Java 驱动程序做到这一点?或 Mongo 模板。谢谢。
    • 我对两者的语法都不熟悉。对不起。
    猜你喜欢
    • 2017-03-12
    • 1970-01-01
    • 2020-03-11
    • 2014-01-08
    • 2014-06-02
    • 2014-10-09
    • 2016-12-08
    • 1970-01-01
    • 2022-07-01
    相关资源
    最近更新 更多