Interpolates XYZ data to arbitrary XY coordinates using the inverse distance method.


INVDISTANCE(xy, z, ri, weights, radius)



A 2 column series, the X (horizontal) and Y (vertical) input values.



A single column series, the Z input height at coordinates X,Y.



A 2 column series, the desired output XY coordinates.



Optional. A series, the weights of distance function. Defaults to {0, 0, 1, 1, 1}.



Optional. A real, the maximum radius to include in the interpolation. Defaults to -1, all.


A series, the interpolated Z heights for the specified output coordinates.


xi = grand(100, 1)*2 - 1;

yi = grand(100, 1)*2 - 1;

zi = cos(xi*yi);

(x, y) = fxyvals(-1, 1, 0.1, -1, 1, 0.1);

xo = x[..];

yo = y[..];


z1 = invdistance(ravel(xi,yi),zi,ravel(xo,yo));

z2 = invdistance(ravel(xi,yi),zi,ravel(xo,yo),{0, 1});


W1: xyz(xi, yi, zi);points;setsym(14)

W2: xyz(xo[..], yo[..], z1);points;setsym(14)

W3: xyz(xo[..], yo[..], z2);points;setsym(14)


This example demonstrates the interpolation of random samples of the function cos(x*y) over the XY range of –1 to 1. xi, yi and zi contain the original XYZ samples. xo and yo specify the desired output interpolation locations. z1 contains the interpolated Z values using the default weighting scheme and z2 contains the interpolated result using the classical inverse distance weighting function. W1, W2 and W3 display the results as XYZ plots.


INVDISTANCE grids XYZ data over any arbitrary XY coordinates. However, a uniform grid is most useful for interpolating XYZ points to a surface. See IGRID to directly convert XYZ data to a surface by interpolating to a uniform grid.


The inverse distance method of gridding irregularly spaced XYZ data computes the new Z value at the specified output coordinates by computing the ratio of the known Z values to their distances from the desired output coordinate. If Z is the value to interpolate at point (x, y), then:




where Zi are the known values at (xi , yi). The weighting function is defined as:




p is an arbitrary value and the distance R is:




where (x, y) is the coordinate of the interpolation point and (xi , yi) are the coordinates of the known points. Thus R is the radius or distances from the interpolated value to the known input Z locations.


The new Z value is computed as a weighted sum of the distances from the desired location to the known locations. The weighting function varies from a value of 1.0 if the desired output point is located exactly at an input coordinate to a value approaching 0.0 as the distance from the desired output coordinate increases. Thus, the Z output values are most strongly influenced by samples located closest to the value being interpolated.


The classical technique, known as Shepard’s method, uses a single distance term with a typical value of p = 2, thus directly computing the inverse squared distance as the weighting function. By default, INVDISTANCE uses a linear combination of r-3 + r-4 + r-5 terms for better results. The optional WEIGHTS series specifies the weighting of the radius (distance) terms:


{r^-1, r^-2, r^-3, r^-4, ...}.


and default of {0, 0, 1, 1, 1} specifies a linear combination of r-3 + r-4 + r-5 terms and {0, 1} specifies the classical direct inverse squared distance weighting function.

See Also: