在mongodb中聚类地理数据

时间:2016-03-27 12:03:02

标签: mongodb geolocation geospatial

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

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

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

  

db.locations.createIndex({'position':“geoHaystack”,输入:1},{   bucketSize:1})

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

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

1 个答案:

答案 0 :(得分:0)

在MongoDB中,geoHaystack索引还有另一个用途-它是一种特殊的索引,已优化以在较小区域内返回结果。我认为它不能在这里使用。

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