【问题标题】:Best way to find polygons wrapping a given point MongoDB?找到包裹给定点MongoDB的多边形的最佳方法?
【发布时间】:2014-01-08 02:19:20
【问题描述】:

我有一个代表房子位置的任意点。在我的 MongoDB 中,我有一个集合,其中包含代表不同区域的多边形(类似于邮政编码)。

我想返回集合中给定点在该区域内的区域。

目前我正在将该点转换为“小”框并使用这样的查询(按预期工作)

(被框化的点:[56.121371, 13.114797]

db.areas.find({
        "area" : {
                "$geoIntersects" : {
                        "$geometry" : {
                                "type" : "Polygon",
                                "coordinates" : [
                                        [
                                                [
                                                        56.120371,
                                                        13.113797
                                                ],
                                                [
                                                        56.120371,
                                                        13.115797
                                                ],
                                                [
                                                        56.122371,
                                                        13.115797
                                                ],
                                                [
                                                        56.122371,
                                                        13.113797
                                                ],
                                                [
                                                        56.120371,
                                                        13.113797
                                                ]
                                        ]
                                ]
                        }
                }
        }
});

我曾尝试使用$near,但它只适用于积分。我也试过$geoWithin但没有成功;我的猜测是它检查集合文档是否在查询中,而不是查询是否在文档中。

这应该是一个非常常见的查询,所以我想知道是否有更好的方法来做到这一点而不是创建一个“小”多边形?这感觉像是一种“解决方法”。

【问题讨论】:

  • 你尝试过使用 Point 类型的 $geoIntersects 吗?
  • 行得通!不敢相信我没有尝试过...
  • 只要创建一个答案,我就会接受。
  • 相信我,我之所以这么想,是因为我也会忽略这种事情! :)

标签: mongodb geo


【解决方案1】:

$geoIntersects 运算符允许查询两个 geoJSON 对象的交集,它适用于所有几何图形,包括 { type: "Point" }

【讨论】:

    猜你喜欢
    • 2017-03-12
    • 2020-12-28
    • 2010-10-03
    • 2021-12-24
    • 2013-12-08
    • 2014-06-16
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多