2016-05-04 60 views
0

在.NET/C#項目我已經relativley隨機排列座標和分配權重KPI像這樣他們每個人:3D插值排列座標值

Weight | Lat  | Long 
---------+-----------+----------- 
1,123444 | 54,219367 | 9,696117 
1,067940 | 51,950265 | 11,692274 
1,054050 | 52,131392 | 13,216249 
1,044820 | 52,636704 | 9,845077 
1,023757 | 50,118346 | 7,308953 
1,006427 | 53,612651 | 12,429595 
1,002610 | 51,433237 | 7,661594 
0,988619 | 49,396423 | 7,022961 
0,955858 | 51,010989 | 10,845346 
0,943669 | 50,652052 | 9,162438 
0,938015 | 51,104541 | 13,201738 
0,863415 | 48,790447 | 11,497889 
0,835913 | 48,661604 | 9,350134 

我不是專家,當來到數學或統計學。我需要做的是根據之前計算的地理座標權重來插入其他任何給定的地理座標權重(參見上文)。

我找到的所有3D插值算法都假設座標必須以矩形形狀排列,這在我的szenario中是不可能的。

有沒有適合我需要的算法?指出我們在同一個項目中使用了一些R.NET funktionality可能是有幫助的,所以使用R的解決方案將會非常好。

+0

目前尚不清楚你在問什麼。你想插入什麼,重量或座標?你能舉個例子來澄清一下嗎? – Sorin

+0

@sorin改爲在給定的緯度/經度下將「重量」視爲表面的「高度」;那麼,假設表面是「光滑的」(某種意義上),則可以在任意新的latlong上獲得高度。這是你的意思嗎,噴油嘴? – AakashM

+0

@AakasahM是的,我想給算法新的協調(緯度/經度)和接收插值權重。對不起,如果不清楚! – nozzleman

回答

1

有不同的插值方法,它們會給你稍微不同的結果。你應該嘗試一對夫婦,看看你的方案最適合什麼。

其中一種方法是將所有數據點都放在一定的半徑上。計算到每個的距離,然後使用距離作爲權重計算其高度的加權平均值。這將允許您在點之間進行線性插值。

如果你想要一些更波浪的東西,你可以做同樣的事情,但不使用距離作爲體重,而是使用距離^ 2或距離^ 3。這將給予最近點更多的重量並使表面更加彎曲。你甚至可以把它們結合起來,就像a*distance^2 + b*distance,但我會盡可能簡單。

如果你不想使用半徑,因爲分佈不均勻,你可以採取最接近的K點(用K試驗,看看最好)。

這些都是非常通用的,但它們在許多情況下工作得相當好。

注意:如果點相對接近,則可以計算3D空間中的距離,但是如果距離較遠,則應計算球體上的距離(弧的長度)。

+0

感謝您的回答。抽象地說,我想知道是否有任何方法可以獲得圍繞給定座標形成三角形的3個最近點,並計算這些點的加權平均值。你知道這種算法嗎? – nozzleman

+0

@nozzleman https://en.wikipedia.org/wiki/Nearest_neighbor_search,但除非你的觀點有點均勻分佈,否則你可以發現在相似距離你有3點以上的情況。這就是爲什麼我建議半徑內的所有點。 – Sorin

+0

花了一些時間;) – nozzleman