This function currently implements piecewise linear interpolation (=barycentric interpolation).
interp(x, y = NULL, z, xo = seq(min(x), max(x), length = nx),
yo = seq(min(y), max(y), length = ny),
linear = (method == "linear"), extrap = FALSE,
duplicate = "error", dupfun = NULL,
nx = 40, ny = 40, input="points", output = "grid",
method = "linear", deltri = "shull")
vector of \(x\)-coordinates of data points or a
SpatialPointsDataFrame
object.
Missing values are not accepted.
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.
vector of \(z\)-values at data points or a character variable
naming the variable of interest in the
SpatialPointsDataFrame
x
.
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
should not be collinear, i.e, they should not fall on the same line
(two vectors x
and y
such that y = ax + b
for
some a
, b
will not produce menaningful results).
interp
is
meant for cases in which you have \(x\), \(y\) values
scattered over a plane and a \(z\) value for each. If, instead,
you are trying to evaluate a mathematical function, or get a
graphical interpretation of relationships that can be described by a
polynomial, try outer
.
If output="grid"
(default): sequence of \(x\) locations for
rectangular output grid, defaults to nx
points between
min(x)
and max(x)
.
If output="points"
: vector of \(x\) locations for output points.
If output="grid"
(default): sequence of \(y\) locations for
rectangular output grid, defaults to ny
points between
min(y)
and max(y)
.
If output="points"
: vector of \(y\) locations for output
points. In this case it has to be same length as xo
.
text, possible values are "grid"
(not yet implemented) and
"points"
(default).
This is used to distinguish between regular and irregular gridded data.
text, possible values are "grid"
(=default) and
"points"
.
If "grid"
is choosen then xo
and yo
are
interpreted as vectors spanning a rectangular grid of points
\((xo[i],yo[j])\), \(i=1,...,nx\), \(j=1,...,ny\). This
default behaviour matches how akima::interp
works.
In the case of "points"
xo
and yo
have to be
of same length and are taken as possibly irregular spaced output
points \((xo[i],yo[i])\), \(i=1,...,no\) with
no=length(xo)
. nx
and ny
are ignored in this
case. This case is meant as replacement for the pointwise
interpolation done by akima::interpp
. If the input x
is a SpatialPointsDataFrame
and output="points"
then
xo
has to be a SpatialPointsDataFrame
, yo
will
be ignored.
logical, only for backward compatibility with akima::interp
,
indicates if piecewise linear interpolation or Akima splines should be
used. Warning: in this release only linear=TRUE
is
implemented!
Please use the new method
argument instead!
text, possible methods are (currently only, more is under
developement) "linear"
(piecewise linear interpolation within
the triangles of the Delauney triangulation, also
referred to as barycentric interpolation based on barycentric
coordinates).
This replaces the old linear
argument of akima::interp
.
logical, indicates if extrapolation outside the convex hull is intended, will not work for piecewise linear interpolation!
character string indicating 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 (dupfun
) of duplicate
\(z\) values.
a function, applied to duplicate points if
duplicate= "user"
.
dimension of output grid in x direction
dimension of output grid in y direction
triangulation method used, this argument will later be moved
into a control set together with others related to the spline
interpolation! Possible values are "shull"
(default, sweep
hull algorithm) and "deldir"
(uses packagedeldir
).
a list with 3 components:
If output="grid"
:
vectors of \(x\)- and \(y\)-coordinates of output grid, the same
as the input
argument xo
, or yo
, if present. Otherwise, their
default, a vector 40 points evenly spaced over the range of the
input x
and y
.
If output="points"
: vectors of \(x\)- and \(y\)-coordinates of
output points as given by xo
and yo
.
If output="grid"
:
matrix of fitted \(z\)-values. The value z[i,j]
is computed
at the point \((xo[i], yo[j])\). z
has
dimensions length(xo)
times length(yo)
.
If output="points"
: a vector with the calculated z values for
the output points as given by xo
and yo
.
If the input was a SpatialPointsDataFrame
a
SpatialPixelsDataFrame
is returned for output="grid"
and a SpatialPointsDataFrame
for output="points"
.
Moebius, A. F. (1827) Der barymetrische Calcul. Verlag v. Johann Ambrosius Barth, Leipzig, https://books.google.at/books?id=eFPluv_UqFEC&hl=de&pg=PR1#v=onepage&q&f=false
Franke, R., (1979). A critical comparison of some methods for interpolation of scattered data. Tech. Rep. NPS-53-79-003, Dept. of Mathematics, Naval Postgraduate School, Monterey, Calif.
# NOT RUN {
### Use all datasets from Franke, 1979:
data(franke)
for(i in 1:5)
for(j in 1:3){
FR <- franke.data(i,j,franke)
IL <- with(FR, interp(x,y,z,method="linear"))
image(IL)
contour(IL,add=TRUE)
with(FR,points(x,y))
}
# }
Run the code above in your browser using DataLab