R: Pointwise Bivariate Interpolation for Irregular Data
interpp
R Documentation
Pointwise Bivariate Interpolation for Irregular Data
Description
If ncp is zero, linear
interpolation is used in the triangles bounded by data points.
Cubic interpolation is done if partial derivatives are used.
If extrap is FALSE, z-values for points outside the convex hull are
returned as NA.
No extrapolation can be performed if ncp is zero.
The interpp function handles duplicate (x,y) points in different ways. As default it will stop with an error message. But
it can give duplicate points an unique z value according to the
parameter duplicate (mean,median or any other user defined function).
The triangulation scheme used by interp works well if x and y have
similar scales but will appear stretched if they have very different
scales. The spreads of x and y must be within four orders of magnitude
of each other for interpp to work.
vector of x-coordinates of data points or a
SpatialPointsDataFrame object.
Missing values are not accepted.
y
vector of y-coordinates of data points.
Missing values are not accepted.
If left as NULL indicates that x should be a
SpatialPointsDataFrame and z names the variable of
interest in this dataframe.
z
vector of z-coordinates of data points or a character variable
naming the variable of interest in the
SpatialPointsDataFramex.
Missing values are not accepted.
x, y, and z must be the same length
(execpt if x is a SpatialPointsDataFrame) and may contain no fewer
than four points. The points of x and y
cannot be collinear, i.e, they cannot fall on the same line (two vectors
x and y such that y = ax + b for some a, b will not be
accepted).
xo
vector of x-coordinates of points at which to evaluate the interpolating
function. If x is a SpatialPointsDataFrame this has
also to be a SpatialPointsDataFrame.
yo
vector of y-coordinates of points at which to evaluate the interpolating
function.
If operating on SpatialPointsDataFrames this is left as NULL
linear
logical – indicating wether linear or spline
interpolation should be used. supersedes old ncp parameter
ncp
deprecated, use parameter linear. Now only used by
interpp.old().
meaning was:
number of additional points to be used in computing partial
derivatives at each data point.
ncp must be either 0 (partial derivatives are not used, =
linear interpolation), or at
least 2 but smaller than the number of data points (and smaller than 25).
extrap
logical flag: should extrapolation be used outside of the
convex hull determined by the data points?
duplicate
indicates how to handle duplicate data points. Possible values are
"error" - produces an error message, "strip" - remove
duplicate z values, "mean","median","user" -
calculate mean , median or user defined function of duplicate z
values.
dupfun
this function is applied to duplicate points if duplicate="user"
Value
list with 3 components:
x
vector of x-coordinates of output points, the same as the input
argument xo.
y
vector of y-coordinates of output points, the same as the input
argument yo.
z
fitted z-values. The value z[i] is computed
at the x,y point x[i], y[i].
If input is SpatialPointsDataFrame than an according
SpatialPointsDataFrame is returned.
NOTE
Use interp if interpolation on a regular grid is wanted.
The two versions interpp.old and interpp.new refer to
Akimas Fortran code from 1978 and 1996 resp. The call wrapper interpp
chooses interpp.old for linear and interpp.new for cubic
spline interpolation.
Earlier versions (pre 0.5-1) of interpp used the parameter
ncp to choose between linear and cubic interpolation, this is now done
by setting the logical parameter linear. Use of ncp is still
possible, but is deprecated.
References
Akima, H. (1978). A Method of Bivariate Interpolation and
Smooth Surface Fitting for Irregularly Distributed Data Points.
ACM Transactions on Mathematical Software,
4, 148-164.
Akima, H. (1996). Algorithm 761: scattered-data surface fitting that has
the accuracy of a cubic polynomial.
ACM Transactions on Mathematical Software,
22, 362-371.
data(akima)
# linear interpolation at points (1,2), (5,6) and (10,12)
akima.lip<-interpp(akima$x, akima$y, akima$z,c(1,5,10),c(2,6,12))
akima.lip$z
# spline interpolation
akima.sip<-interpp(akima$x, akima$y, akima$z,c(1,5,10),c(2,6,12),
linear=FALSE)
akima.sip$z
## Not run:
## interaction with sp objects:
library(sp)
## take 30 sample points out of meuse grid:
data(meuse.grid)
m0 <- meuse.grid[sample(1:3103,30),]
coordinates(m0) <- ~x+y
## interpolate on this 30 points:
## note: both "meuse" and "m0" are sp objects
## (SpatialPointsDataFrame) !!
## arguments z and xo have to named, y has to be omitted!
ipp <- interpp(meuse,z="zinc",xo=m0)
spplot(ipp)
## End(Not run)