簡體   English   中英

在mongodb中聚類地理數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM