在两个x,y,z点之间线性插值高程

问题描述

我正在尝试获取x,y,z点之间的高程值。像这样使用scipy.interpolate.interp2d:

x = np.array((140.865,140.863))
y = np.array((59.8817,59.8814))
z = np.array((121,127))
f = scipy.interpolate.interp2d(x,y,z,kind="linear")
z_new = f(140.864,59.58816)

我收到以下错误

TypeError: m >= (kx+1)(ky+1) must hold

我没有找到关于此类型错误的清晰文档。也许我为interp2d使用的数据点太少了?

解决方法

根据文档here

插值所需的最小数据点数 轴为(k + 1)** 2,其中k = 1表示线性,k = 3表示三次,k = 5表示 五次插值。

并且由于您使用linear,所以(1 + 1)** 2 = 4,很遗憾,您仅提供了两个数据点。