Given two point patterns
Y on a linear network,
finds the nearest neighbour in
Y of each point of
using the shortest path in the network.
1 2 3 4 5 6 7
Point patterns on a linear network (objects of class
Optional identifiers, used to determine whether a point in
Character string specifying what information should be returned.
Either the nearest neighbour distance (
Integer, or integer vector. The algorithm will compute the distance to the
Internal use only.
Given two point patterns
Y on the same linear
network, this function finds, for each point of
the nearest point of
Y, measuring distance by the shortest path
in the network. The distance between these points
is also computed.
The return value is a data frame, with rows corresponding to
the points of
X. The first column gives the nearest neighbour
distances (i.e. the
ith entry is the distance
ith point of
X to the nearest element of
Y). The second column gives the indices of the nearest
neighbours (i.e.\ the
ith entry is the index of
the nearest element in
what="dist" then only the vector of distances is returned.
what="which" then only the vector of indices is returned.
Note that this function is not symmetric in
To find the nearest neighbour in
X of each point in
iY are used when
the two point patterns
Y have some points in
common. In this situation
nncross(X, Y) would return some zero
distances. To avoid this, attach a unique integer identifier to
each point, such that two points are identical if their
identifying numbers are equal. Let
iX be the vector of
identifier values for the points in
the vector of identifiers for points in
Y. Then the code
will only compare two points if they have different values of the
identifier. See the Examples.
By default (if
what=c("dist", "which") and
a data frame with two columns:
Nearest neighbour distance
Nearest neighbour index in
what="dist", a vector of nearest neighbour distances.
what="which", a vector of nearest neighbour indices.
k is a vector of integers, the result is a matrix
with one row for each point in
giving the distances and/or indices of the
nndist.lpp for nearest neighbour
distances in a single point pattern.
nnwhich.lpp to identify which points are nearest
neighbours in a single point pattern.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# two different point patterns X <- runiflpp(3, simplenet) Y <- runiflpp(5, simplenet) nn <- nncross(X,Y) nn plot(simplenet, main="nncross") plot(X, add=TRUE, cols="red") plot(Y, add=TRUE, cols="blue", pch=16) XX <- as.ppp(X) YY <- as.ppp(Y) i <- nn$which arrows(XX$x, XX$y, YY[i]$x, YY[i]$y, length=0.15) # nearest and second-nearest neighbours nncross(X, Y, k=1:2) # two patterns with some points in common X <- Y[1:2] iX <- 1:2 iY <- 1:5 nncross(X,Y, iX, iY)