我想使用python执行blinear插值。
我要插入高度的gps点示例是:
B = 54.4786674627
L = 17.0470721369
使用具有已知坐标和高度值的四个相邻点:
n = [(54.5, 17.041667, 31.993), (54.5, 17.083333, 31.911), (54.458333, 17.041667, 31.945), (54.458333, 17.083333, 31.866)]
z01 z11
z
z00 z10
我的原始尝试是:
import math
z00 = n[0][2]
z01 = n[1][2]
z10 = n[2][2]
z11 = n[3][2]
c = 0.016667 #grid spacing
x0 = 56 #latitude of origin of grid
y0 = 13 #longitude of origin of grid
i = math.floor((L-y0)/c)
j = math.floor((B-x0)/c)
t = (B - x0)/c - j
z0 = (1-t)*z00 + t*z10
z1 = (1-t)*z01 + t*z11
s = (L-y0)/c - i
z = (1-s)*z0 + s*z1
其中z0和z1
z01 z0 z11
z
z00 z1 z10
我得到31.964,但从其他软件我得到31.961。
我的剧本对吗?
你能提供另一种方法吗?
灵感来自here,我想出了下面的片段。API经过优化,可多次重复使用同一个表:
你可以这样使用它:
此版本没有错误检查,如果尝试在索引边界(或索引边界以外)使用它,则会遇到问题。有关代码的完整版本(包括错误检查和可选外推),请查看here。
不确定这是否有多大帮助,但我在使用scipy进行线性插值时得到了不同的值:
这里有一个可重用的函数。它包括文档测试和数据验证:
您可以通过添加以下内容来运行测试代码:
在数据集上运行插值会产生:
相关问题 更多 >
编程相关推荐