Compute the nearest neighbour function of a point pattern on a linear network.
# S3 method for lpp
nnfun(X, ..., k=1, value=c("index", "mark"))
A point pattern on a linear network
(object of class "lpp"
).
Integer. The algorithm finds the k
th nearest neighbour in
X
from any spatial location.
String (partially matched) specifying whether to return the
index of the neighbour (value="index"
, the default)
or the mark value of the neighbour (value="mark"
).
Other arguments are ignored.
A function
in the R language, with arguments x,y
and optional
arguments seg,tp
.
It also belongs to the class "linfun"
which has methods
for plot
, print
etc.
The (geodesic) nearest neighbour function of a
point pattern X
on a linear network L
tells us which point of X
is closest to
any given location.
If X
is a point pattern on a linear network L
,
the nearest neighbour function of X
is the mathematical function \(f\) defined for any
location \(s\) on the network by f(s) = i
, where
X[i]
is the closest point of X
to the location s
measured by the shortest path. In other words the value of f(s)
is the identifier or serial number of the closest point of X
.
The command nnfun.lpp
is a method for the generic command
nnfun
for the class "lpp"
of point patterns on a linear network.
If X
is a point pattern on a linear network,
f <- nnfun(X)
returns a function
in the R language, with arguments x,y, …
, that represents the
nearest neighbour function of X
. Evaluating the function f
in the form v <- f(x,y)
, where x
and y
are any numeric vectors of equal length containing coordinates of
spatial locations, yields a vector of identifiers or serial numbers of
the data points closest to these spatial locations.
More efficiently f
can take the arguments
x, y, seg, tp
where seg
and tp
are the local
coordinates on the network.
The result of f <- nnfun(X)
also belongs to the class
"linfun"
.
It can be printed and plotted immediately as shown in the Examples.
It can be converted to a pixel image
using as.linim
.
To compute the distance to the nearest neighbour, see
distfun.lpp
.
# NOT RUN {
X <- runiflpp(3, simplenet)
f <- nnfun(X)
f
plot(f)
plot(nnfun(chicago, value="m"))
# }
Run the code above in your browser using DataLab