[英]Clustering geo data in 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)並在任何需要的地方使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.