在mongodb中聚类地理数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mongodb中聚类地理数据相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

答案

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

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

以上是关于在mongodb中聚类地理数据的主要内容,如果未能解决你的问题,请参考以下文章

在python中聚类巨大的数据矩阵?

在R中聚类非常大的数据集

在 MySQL 数据库中聚类经纬度数据

常见的5中聚类算法

5中聚类方法介绍

请问spss中聚类分析的操作步骤