##### Interpolation function

This function currently implements piecewise linear interpolation (=barycentric interpolation).

##### Usage

```
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")
```

##### Arguments

- x
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\)-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`

.- xo
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.- yo
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`

.- input
text, possible values are

`"grid"`

(not yet implemented) and`"points"`

(default).This is used to distinguish between regular and irregular gridded data.

- output
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.- linear
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!- method
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`

.- extrap
logical, indicates if extrapolation outside the convex hull is intended, will not work for piecewise linear interpolation!

- duplicate
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.

- dupfun
a function, applied to duplicate points if

`duplicate= "user"`

.- nx
dimension of output grid in x direction

- ny
dimension of output grid in y direction

- deltri
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 package`deldir`

).

##### Value

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"`

.

##### References

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.

##### See Also

##### Examples

```
# 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))
}
# }
```

*Documentation reproduced from package interp, version 1.0-33, License: GPL (>= 2)*