在GIS的网格化数据开发中,数据按照一定的间隔进行分布,在网格点上的数据,这是很容易获得的,如果要获取不在网格点的数据值,这就需要根据此点所在位置周围点的数据,进行差值计算。
在使用气象数据中,根据某个点周边四个点,可以做一个简单的双线性差值。
根据GIS数据中的横坐标和纵坐标,计算提供点的所在网格横向和纵向的顺序,即所在的格子中,从而获取到四个角点的具体数值。
一个简单的示例图(来自于网络),通过每个网格中的差值,计算最大最小行列号:
算所求点和四个焦点之间的距离百分比,再通过简单的乘法和加法,计算出所求点的数据值。
一段简单的JavaScript示例代码:
x、y分别为在横轴和纵轴方向所占的百分比,gXX为周围四个点的具体数据值。
function bilinearInterpolate(x, y, g00, g10, g01, g11) {
var rx = (1 - x);
var ry = (1 - y);
return g00 * rx * ry + g10 * x * ry + g01 * rx * y + g11 * x * y;
}
注:网格化的数据大多用于存储气象类型数据,常见的数据格式有netcdf,grib。