【问题标题】:Clustering geo data in mongodb在 mongodb 中对地理数据进行聚类
【发布时间】:2016-07-14 19:28:46
【问题描述】:

我们有一个 mongodb 数据库,其中 >200K 行,每行都包含一个点位置 (lat,lng)。我们想创建一个查询,指定一个地理点和半径并返回一个集群列表。每个集群基本上是彼此靠近的位置的聚合。

第一个问题:mongodb是否可以为我们自动创建和维护这些集群?如果是,我们如何查询 mongodb 以返回特定地理位置的集群(不是实际数据点)。每个返回的集群都有一个位置和实际数据点的数量(地理标记的行)。基本上,我们希望它返回等效的 k-means 聚类算法。

我们创建了一个 mongodb geoHaystack 索引,该索引似乎对行进行聚类,但不确定如何使用它来实现上述查询:

db.locations.createIndex( { 'position' : "geoHaystack", type : 1 } , { bucketSize : 1 })

或者,我们可以动态使用诸如https://github.com/spember/geo-cluster 之类的聚类算法来生成这些聚类,但我假设这将是一个非常缓慢的过程。

关于如何最好地实现此类查询的任何建议?

【问题讨论】:

  • 你有没有为你的问题找到任何优化的解决方案

标签: mongodb geolocation geospatial


【解决方案1】:

在 MongoDB 中,geoHaystack 索引还有另一个用途 - 它是一种特殊索引,经过优化以返回小区域的结果。我觉得这里不能用。

所以,我认为您可以检索所有点并使用 k-means 进行聚类。那应该很快。之后,您可以将它们保存为另一个实体(例如多边形)并在需要的任何地方使用它。

【讨论】:

    猜你喜欢
    • 2018-12-08
    • 2016-06-03
    • 1970-01-01
    • 2017-11-20
    • 2017-01-28
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多