反距离权重加权插值的理解及Python实现
IDW(反距離里加權(quán)插值)
假設(shè) 距離較近的事物要比距離較遠(yuǎn)的事物更相似。
當(dāng)為任何未測(cè)量的位置預(yù)測(cè)值時(shí),反距離權(quán)重法會(huì)采用預(yù)測(cè)位置周圍的測(cè)量值與距離預(yù)測(cè)位置較遠(yuǎn)的測(cè)量值相比,距離預(yù)測(cè)位置最近的測(cè)量值對(duì)預(yù)測(cè)值的影響更大。反距離權(quán)重法假定每個(gè)測(cè)量點(diǎn)都有一種局部影響,而這種影響會(huì)隨著距離的增大而減小。由于這種方法為距離預(yù)測(cè)位置最近的點(diǎn)分配的權(quán)重較大,而權(quán)重卻作為距離的函數(shù)而減小,因此稱之為反距離權(quán)重法。
原理:
1.計(jì)算所有離散數(shù)據(jù)點(diǎn)與所求網(wǎng)格點(diǎn)的距離,在二維平面空間,離散點(diǎn)(xi,yi)到網(wǎng)格(A,B)的距離Di為:
2.找出離網(wǎng)格點(diǎn)(A,B)最近的N個(gè)離散點(diǎn)的距離,則網(wǎng)格點(diǎn)(A,B)上的估算值為:
其中,Zi為離散點(diǎn)i上的觀測(cè)值,Z(A,B)為網(wǎng)格點(diǎn)(A,B)上的估算值。
設(shè)網(wǎng)格點(diǎn)的x,y 分別為lon,lat,離散采樣點(diǎn)的集合為:lst
def get_h(lon, lat, lst):p0 = [lon, lat]sum0 = 0sum1 = 0temp = []# 遍歷獲取該點(diǎn)距離所有采樣點(diǎn)的距離for point in lst:if lon == point[0] and lat == point[1]:return point[2]Di = distance(p0, point)# new出來一個(gè)對(duì)象,不然會(huì)改變?cè)瓉韑st的值ptn = copy.deepcopy(point)ptn.append(Di)temp.append(ptn)# 根據(jù)上面ptn.append()的值由小到大排序temp1 = sorted(temp, key=lambda point: point[3])# 遍歷排序的前15個(gè)點(diǎn),根據(jù)公式求出sum0 and sum1for point in temp1[0:15]:sum0 += point[2] / point[3]sum1 += 1 / point[3]return sum0 / sum1# 計(jì)算兩點(diǎn)間的距離 def distance(p, pi):dis = (p[0] - pi[0]) * (p[0] - pi[0]) + (p[1] - pi[1]) * (p[1] - pi[1])m_result = math.sqrt(dis)return m_result參考:
https://my.oschina.net/u/4581316/blog/4815801
https://www.freesion.com/article/948976203/
https://cloud.tencent.com/developer/article/1763070
總結(jié)
以上是生活随笔為你收集整理的反距离权重加权插值的理解及Python实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 多源代码文件编译
- 下一篇: python-opencv图像处理之SI