python - 网格中的反距离加权插值(Python)
问题描述
我的问题设置如下:我有一个由单元格组成的网格,每个单元格都具有相同的尺寸。只有 4 个单元格被标记(包含一个度量)并在图像中由一些点指示。在我的 python 程序中,我有一个数据框,其中每一行代表一个网格单元格。每个单元格都有其协调的和一个标签(对于所有单元格,不包括包含度量的 4 个单元格,它是无)。
我想要做的是:使用逆加权插值来为我的网格中的每个未标记单元格获取一个度量(标签)。你对如何面对这个问题有什么建议,或者你知道是否有类似的代码示例可以做同样的事情。任何帮助表示赞赏。谢谢!
解决方案
我想出了如何解决它。首先,我使用这个函数计算了每个标记单元格和每个未标记单元格之间的距离
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 的函数,它使用标准公式应用反加权距离插值。之后,我能够为每个单元格获取一个标签,从而产生以下图像:
推荐阅读
- postgresql - Debezium:Postgres - 没有自动创建主题
- python - 我正在使用 Tkinter 创建一个形状,我的目标是不断将形状移动到画布右侧直到屏幕外(并重复)
- python - 使用“Python 3.9.5 64-bit”运行单元需要安装 ipykernel 或需要更新
- android - 如何第二次手动调用 ViewModel 观察者?
- javascript - 如何扩大和缩小Box div?
- django - Django Oscar Promotions 未将推广页面页面呈现到主页
- instruction-set - IA64 实现应该如何处理格式错误的指令组?
- angular-material - 如何组合来自 mat-table Angular Materiel 的单元格?
- reactjs - 页面被渲染并迅速消失以显示错误:超过最大更新深度
- python - 按位置循环遍历二维数组