乐于分享
好东西不私藏

WPS公式:三步实现反距离权重插值(IDW)

WPS公式:三步实现反距离权重插值(IDW)

一、从实际问题说起

前几天做一个项目的时候,有这样一个需求:根据一个测点周边的三个观测站的数据,插值测点位置的数据。

这个问题很典型——气象、地质、环境领域经常会遇到。答案就是反距离权重法

今天我就用WPS/Excel,手把手教你实现这个算法。

二、反距离权重法是什么?

简单说就是四个字:近大远小

离目标点越近的站点,对估算值影响越大;越远的站点,影响越小。

数学表达式就是:

估算值 = Σ(权重 × 已知值)权重 = (1/距离) / Σ(1/距离)

三、数据准备

这是我们的基础数据(虚构数据)

站点

经度°

纬度°

PM2.5浓度/μg·m⁻³

公园站

118.78

32.04

42.5

学校站

118.73

32.08

38.2

商业区站

118.82

32.01

56.7

需要估算的四个位置:

位置

经度°

纬度°

PM2.5浓度/μg·m⁻³

居民区A

118.76

32.05

居民区B

118.80

32.03

办公区

118.75

32.06

交通枢纽

118.78

32.02

四、核心公式逐层拆解

Step 1:认识LET函数

LET函数可以定义变量,让复杂公式变得清晰可读:

=LET(变量名1,值1,变量名2,值2,计算结果)

Step 2:计算距离

我们需要自定义一个「距离」函数,计算两点间的距离:

function 距离(a,b){function radians(k){return k*Math.PI/180.0}	r=6370  //unit:km    x1=radians(a.Item(1).Value2)    y1=radians(a.Item(2).Value2)    x2=radians(b.Item(1).Value2)    y2=radians(b.Item(2).Value2)    d=r*Math.acos(Math.sin(y1)*Math.sin(y2)+Math.cos(y1)*Math.cos(y2)*Math.cos(x1-x2))    return d}

参数a,b是两个点,每个点是相邻的两个单元格,一个经度,一个纬度

Step 3:最终公式

在D8单元格输入:

=LET(ckz,$B$2:$D$4,     zxd,B8:C8,     dd,BYROW(ckz,LAMBDA(x,距离(x,zxd))),     ddr,1/dd,     SUM(ddr/SUM(ddr)*TAKE(ckz,,-1)))

公式解读

  1. 输入区:固定引用观测站数据(ckz)

  2. 当前点:要估算的位置(zxd)

  3. 距离数组:计算到每个站点的距离(dd)

  4. 权重:距离的倒数(ddr)

  5. 标准化权重:所有权重之和为1

Step 4:拖动填充

选中D8单元格,向下拖动到D11,所有估算值一键生成!

五、计算结果

如果你在工作中也需要处理类似的空间插值问题,这个模板可以直接复制使用。

互动话题:你在工作中遇到过哪些需要复杂计算的场景?欢迎在评论区分享,我们一起探讨解决方案!

几例wps公式应用

电子表格公式:match与offset

wps表格自定义数组函数

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » WPS公式:三步实现反距离权重插值(IDW)

猜你喜欢

  • 暂无文章