网格中的逆距离加权插值(Python)

时间:2018-04-27 21:08:13

标签: python pandas interpolation

我的问题设置如下: 我有一个由细胞组成的网格,每个细胞都有相同的尺寸。 仅标记4个单元格(包含度量)并在图像中通过某些点指示。 在我的python程序中,我有一个数据帧,其中每一行代表一个网格单元格。每个单元格都有一个协调的标签(对于除了包含一个度量的4个单元格之外的所有单元格都是None)。

enter image description here

enter image description here

我想要做的是:使用反向加权插值,以获得网格中每个未标记单元格的度量(标签)。 您对如何解决此问题有任何建议,或者您知道是否有类似的代码示例执行相同的操作。任何帮助表示赞赏。 谢谢!

1 个答案:

答案 0 :(得分:0)

我想出了如何解决它。 首先,我使用此函数计算每个标记细胞和每个未标记细胞之间的距离

def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points 
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians 
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula 
dlon = lon2 - lon1 
dlat = lat2 - lat1 
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a)) 
# Radius of earth in kilometers is 6371
km = 6371* c
return km

然后我创建了一个名为iwd的函数,它使用标准公式应用逆加权距离插值。 之后,我能够获得每个单元格的标签,从而产生以下图像:

enter image description here