2009-08-31 68 views
2

我在使用Google Maps Static API的網頁上顯示小型Google地圖。將Google地圖上的一組點集合到一個較小的集合中

我有一組15個座標,我想在地圖上表示爲點。

由於地圖相當小(184 x 90像素),並且Google地圖上的網址上限爲2000個字符,因此我無法表示地圖上的每個點。

因此,我想生成一個代表大列表平均值的小座標列表。

因此,我不會有15套,我最終會有5套,他們的位置近似於15的位置。假設有3個點更接近每個點 - 除了其他點地圖,那些點將被摺疊成1點。

所以我想我正在尋找一種算法,可以做到這一點。

不要求任何人拼出每一步,但也許指向我的這種事情的數學原理或通用功能的方向?

我敢肯定,在對圖像進行像素化時,在圖形軟件中使用了類似的功能。

(如果我解決這個我一定會張貼我的結果。)

回答

3

我建議K-means clustering當你需要集羣N個對象到已知數量的集羣K個< N,這似乎是你的情況。請注意,一個羣集最終可能會有一個離羣點,而另一個羣組可能會有5個彼此非常接近的點:沒關係,它會更接近您的原始集合,而不是將每個羣集精確到3點! - )

+0

非常感謝Alex!我猜聚簇是我正在尋找的詞。我會給這個K-means聚類一個鏡頭。 – Jonathan 2009-08-31 03:09:22

+0

不客氣 - 如果我知道你想要的實現語言,確切的需求等,我會添加更具體的建議。 – 2009-08-31 04:17:11

+0

如果你只有15分,這是完全正確的 - 但如果你將有成千上萬點,K-means可能有點慢。 – 2009-08-31 15:34:24

0

一般來說,我認爲你需要搜索的區域是「矢量量化」。我有一本由Allen Gersho和Robert M. Gray提供的舊書標題Vector Quantization and Signal Compression,它提供了一些例子。

從記憶來看,勞埃德迭代對於這類事情來說是一個很好的算法。它可以將輸入集合並將其縮減爲一組固定大小的點。基本上,統一或隨機分佈你的點周圍的空間。將每個輸入映射到最近的量化點。然後計算誤差(例如距離的總和或均方根)。然後,對於每個輸出點,將其設置爲映射到該集合的中心。這將移動這個點,甚至可能改變映射到它的集合。迭代執行此操作,直到從一次迭代到下一次迭代檢測不到更改。

希望這會有所幫助。

+0

是的,K-means的公正的總結(除非你真的不需要測量錯誤,如果你打算只有在「從一次迭代到下一次迭代沒有檢測到變化時」纔會認爲它是穩定的;-)。 – 2009-08-31 04:18:30

+0

是的,在發佈之前我沒有看到您的帖子。在快速參考之後:「MacQueen將其作爲統計聚類過程進行研究後,」用於VQ設計的廣義Lloyd算法有時被稱爲'k-means算法'「。 -Gersho&Gray – Adrian 2009-08-31 04:34:43

相關問題