jve*_*nce 7 geolocation geospatial mongodb
我们有一个拥有> 200K行的mongodb数据库,每个行包含一个点位置(lat,lng).我们想创建一个指定地理点和半径的查询,并返回一个簇列表.每个群集基本上是彼此靠近的位置的聚合.
第一个问题:mongodb是否可以为我们自动创建和维护这些集群?如果是,我们如何查询mongodb以返回特定地理位置的聚类(而不是实际数据点).每个返回的集群都有一个位置和实际数据点的数量(地理标记的行).基本上,我们希望它返回k-means聚类算法的等价物.
我们已经创建了一个mongodb geoHaystack索引,似乎是对行进行聚类,但不确定如何使用它来实现上述查询:
db.locations.createIndex({'position':"geoHaystack",类型:1},{bucketSize:1})
或者,我们可以动态使用聚类算法(如https://github.com/spember/geo-cluster)来生成这些聚类,但我假设这将是一个非常缓慢的过程.
有关如何最好地实现此类查询的任何建议?
在 MongoDB 中,geoHaystack索引还有另一个用途 - 它是一种特殊索引,经过优化以返回小区域的结果。我认为这里不能使用。
所以,我认为你可以检索所有点并使用 k 均值进行聚类。那应该很快。之后,您可以将它们另存为另一个实体(例如多边形)并在您需要的任何地方使用它。