2012-01-06 69 views
3

有兩個點A,B和距離x(距離A的距離)和y(距離B的距離)。讓從A到B的距離爲N.因此,A距離B爲N英里。我該如何解決問題:距離A有(N + x + y)英里的可用點數是多少?我不確定如何更好地解釋這一點。我真的不知道如何解決這個問題,我讀Fastest Way to Find Distance Between Two Lat/Long Points,我相信給出的解決方案可以計算兩點之間的距離,並且不知道這個解決方案是否可以用來解決我的問題,或者如果是這樣,如何解決問題。在mysql中計算哪些點(緯度,經度)在一定距離內?

+1

1.如果我理解正確的話,你是

在此圖像中,你可以看到綠色的多邊形使用希爾伯特曲線發現尋找找到以點A爲中心並且其半徑R =(N + x + y)的圓內的所有點。 2.我假設你能夠計算R以外的MySQL。 這兩個假設是否正確? – 2012-01-06 15:08:57

+1

我不是陛下,但檢查這些Mysql函數[函數爲測試空間關係之間的幾何對象](http://dev.mysql.com/doc/refman/5.1/en/functions-for- testing-spatial-relations-between-geometric-objects.html) – 2012-01-06 19:05:35

回答

2

如果你正在尋找一個近似算法,我建議尋找一個k-means算法或一個層次聚類,特別是一個怪物曲線或空間填充曲線。首先,您可以計算圖的最小生成樹,然後刪除最長和最昂貴的邊。然後,樹會生成許多小樹,並且可以使用k-means來計算點羣,即羣集。

「單鏈路k聚類算法......恰恰是Kruskal算法......相當於尋找MST並刪除k-1最昂貴的邊緣。」例如參見:https://stats.stackexchange.com/questions/1475/visualization-software-for-clustering

怪物曲線的一個很好的例子就是希爾伯特曲線。這條曲線的基本形式是U形,將許多曲線複製在一起,並旋轉曲線填充euklidian空間。令人驚訝的是,灰色代碼可以幫助找出這個U形的方向。你可以查看尼克的空間索引四叉樹希爾伯特曲線blog article about more details。相反,如果要計算曲線的索引,可以像在bing地圖中一樣放置一個quadkey。 quadkey對於每個座標都是唯一的,它可以用於正常的字符串操作。鍵中的每個位置都是U形曲線的一部分,因此您可以從quadkey中從左至右部分選擇該點區域。

enter image description here

你可以在這裏找到我的PHP類:http://www.phpclasses.org/package/6202-PHP-Generate-points-of-an-Hilbert-curve.html

+0

+1雖然根據你的描述很難理解,但有一個工作示例展示如何實現這一點會更清楚(和哈哈)。 – Jasonw 2012-01-20 01:47:23

+0

@Jasonw:我在回答中添加了更多信息。圖像和綠色polygone是由我自己使用希爾伯特曲線完成的。找到旅行銷售問題可能很有用。 – Bytemain 2012-01-20 11:39:49

相關問題