Pointwise Bivariate Interpolation for Irregular Data
These functions implement bivariate interpolation onto a set of points
for irregularly spaced input data. These functions are only for
backward compatibility, use interpp
instead.
If linear
is \codeTRUE, linear
interpolation is used in the triangles bounded by data points, otherwise
cubic interpolation is done.
If extrap
is FALSE
, z-values for points outside the
convex hull are returned as NA
. No extrapolation can be
performed for linear interpolation.
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.
interpp(x, y=NULL, z, xo, yo=NULL, linear=TRUE, extrap=FALSE, duplicate = "error", dupfun = NULL, jitter = 10^-12, jitter.iter = 6, jitter.random = FALSE)
x |
vector of x-coordinates of data points or a
|
y |
vector of y-coordinates of data points. Missing values are not accepted. If left as NULL indicates that |
z |
vector of z-coordinates of data points or a character variable
naming the variable of interest in the
Missing values are not accepted.
|
xo |
vector of x-coordinates of points at which to evaluate the interpolating
function. If |
yo |
vector of y-coordinates of points at which to evaluate the interpolating function. If operating on |
linear |
logical – indicating wether linear or spline interpolation should be used. |
extrap |
logical flag: should extrapolation be used outside of the convex hull determined by the data points? Not possible for linear interpolation. |
duplicate |
indicates how to handle duplicate data points. Possible values are
|
dupfun |
this function is applied to duplicate points if |
jitter |
Jitter of amount of Note that the jitter is not generated randomly unless
|
jitter.iter |
number of iterations to retry with jitter, amount
will be increased in each iteration by |
jitter.random |
logical, see |
list with 3 components:
x |
vector of x-coordinates of output points, the same as the input
argument |
y |
vector of y-coordinates of output points, the same as the input
argument |
z |
fitted z-values. The value |
If input is SpatialPointsDataFrame
than an according
SpatialPointsDataFrame
is returned.
Use interp
if interpolation on a regular grid is wanted.
See interp
for more details.
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.
R. J. Renka (1996). Algorithm 751: TRIPACK: a constrained two-dimensional Delaunay triangulation package. ACM Transactions on Mathematical Software. 22, 1-8.
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)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.