比方說,我有一系列的位置和它們的X,Y座標:查找節點定列表最接近的節點,並協調
L1(X1,Y1) L2(X2,Y2) L3(X3,Y3 ) ... L10000(10000倍,Y10000)
我有一個返回2點位置之間的距離的函數:(L1,L2)=5英里
對於給定的位置的距離,我怎麼找到100英里內的所有地點?或者如果它更容易,50個最近的位置
我們的設置是一個位置及其郵政編碼的SQL Server表。該功能需要2個郵政編碼,查找每個緯度和經度並返回距離。我們可以緩存結果,因爲它們不會經常更改。
看到這個問題:http://stackoverflow.com/questions/1751698/sql-query-for-total-points-within-radius-of-a-location/我沒有時間斷言如果兩個問題是重複的,但我相信你可以找到很好的線索解決上述問題。 – mjv
我認爲你正在尋找的可能是SQL Server的[空間索引](http://msdn.microsoft.com/zh-cn/library/default.aspx)。COM/EN-US /庫/ bb933876%28V = SQL.105%29.aspx)。從算法上來說,你可以做的很少,以防止沒有特殊索引支持的O(n)(半徑內的所有點)或O(n lg k)(k個最近點)時間。 –
使用空間索引(他們使用[R-Tree的](http://en.wikipedia.org/wiki/R-tree)) – goat