首页 > 解决方案 > 网格中的反距离加权插值(Python)

问题描述

我的问题设置如下:我有一个由单元格组成的网格,每个单元格都具有相同的尺寸。只有 4 个单元格被标记(包含一个度量)并在图像中由一些点指示。在我的 python 程序中,我有一个数据框,其中每一行代表一个网格单元格。每个单元格都有其协调的和一个标签(对于所有单元格,不包括包含度量的 4 个单元格,它是无)。

在此处输入图像描述

在此处输入图像描述

我想要做的是:使用逆加权插值来为我的网格中的每个未标记单元格获取一个度量(标签)。你对如何面对这个问题有什么建议,或者你知道是否有类似的代码示例可以做同样的事情。任何帮助表示赞赏。谢谢!

标签: pythonpandasinterpolation

解决方案


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

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 的函数,它使用标准公式应用反加权距离插值。之后,我能够为每个单元格获取一个标签,从而产生以下图像:

在此处输入图像描述


推荐阅读