Turf的INTERPOLATION模块中的interpolate
函数,用于在给定的一组点和一组值的情况下,对于任意给定的点,依据其距离前后最近的已知点,计算出该点对应的值。
point
:任意点的GeoJSON格式(Point)points
:GeoJSON格式的点(FeatureCollection<Point>);这些点需要按照地理距离的顺序排列values
:值(Array);长度必须与points
中的元素数量相等。没有数据的点可以用null
补位。var point = turf.point([-75.596, 40.038]);
var points = turf.featureCollection([
turf.point([-75.587, 40.031]),
turf.point([-75.600, 40.027]),
turf.point([-75.605, 40.032]),
turf.point([-75.597, 40.042])
]);
var values = [0, 10, null, 15];
var result = turf.interpolate(point, points, values);
// result = 8.93003715543488
Number
:计算出的插值结果points
参数传入的FeatureCollection中的元素数量为0,函数将抛出异常。values
参数传入的数组长度与points
参数传入的FeatureCollection中的点的数量不相等,函数将抛出异常。距离计算默认使用Haversine公式。如果需要使用其他距离公式,请在调用本函数前设置Turf的距离计算方法。如果没有设置,将使用默认的Haversine公式进行距离计算。
在实际场景中,如果空值出现在values
数组的中间,或缺少部分值,则最终的计算结果可能会受到一定程度的影响。建议在数据填充、清洗阶段确保每个点都有一个合理的值,或者使用更高级的插值方法。