空间插值是将离散点数据转换为连续表面的重要技术,在气象、环境、地质等领域应用广泛。本文系统介绍三种常用插值方法。
一、反距离权重法(IDW)
IDW基于"距离越近影响越大"的假设,计算公式简单直观。
from scipy.interpolate import Rbf
import numpy as np
def idw_interpolation(x, y, z, x_grid, y_grid, power=2):
from scipy.spatial.distance import cdist
points = np.column_stack([x, y])
grid_points = np.column_stack([x_grid.ravel(), y_grid.ravel()])
dist = cdist(grid_points, points)
weights = 1.0 / (dist ** power + 1e-10)
z_grid = np.sum(weights * z, axis=1) / np.sum(weights, axis=1)
return z_grid.reshape(x_grid.shape)
二、克里金插值(Kriging)
克里金插值是地统计学中最优无偏估计方法,考虑了空间自相关性。
from pykrige.ok import OrdinaryKriging
OK = OrdinaryKriging(x, y, z, variogram_model="gaussian")
z_grid, ss = OK.execute("grid", x_grid, y_grid)
三、方法对比
- IDW:简单快速,但不考虑空间结构
- 克里金:统计最优,但计算量大,需拟合变异函数
- 样条函数:平滑效果好,适合渐变表面
选择插值方法时需要综合考虑数据特征、精度要求和计算效率。