| nncross {spatstat} | R Documentation |
Given two point patterns X and Y,
finds the nearest neighbour in Y of each point of X.
Alternatively Y may be a line segment pattern.
nncross(X, Y, iX=NULL, iY=NULL)
X |
Point pattern (object of class "ppp"). |
Y |
Either a point pattern (object of class "ppp")
or a line segment pattern (object of class "psp"). |
iX, iY |
Optional identifiers, applicable only in the case where
Y is a point pattern, used to determine whether a point in
X is identical to a point in Y. See Details |
Given two point patterns X and Y this
function finds, for each point of X,
the nearest point of Y. The distance between these points
is also computed.
Alternatively if X is a point pattern and Y is a line
segment pattern, the function finds the nearest line segment to each point
of X, and computes the distance.
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
from the 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 Y.)
Note that this function is not symmetric in X and Y.
To find the nearest neighbour in X of each point in Y,
where Y is a point pattern, use nncross(Y,X).
The arguments iX and iY are used when
the two point patterns X and 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 X, and iY
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.
A data frame with two columns:
dist |
Nearest neighbour distance |
which |
Nearest neighbour index in Y |
Adrian Baddeley adrian@maths.uwa.edu.au http://www.maths.uwa.edu.au/~adrian/ and Rolf Turner r.turner@auckland.ac.nz
link{nndist} for nearest neighbour
distances in a single point pattern.
# two different point patterns
X <- runifpoint(15)
Y <- runifpoint(20)
N <- nncross(X,Y)$which
# note that length(N) = 15
plot(superimpose(X=X,Y=Y), main="nncross", cols=c("red","blue"))
arrows(X$x, X$y, Y[N]$x, Y[N]$y, length=0.15)
# two patterns with some points in common
Z <- runifpoint(50)
X <- Z[1:30]
Y <- Z[20:50]
iX <- 1:30
iY <- 20:50
N <- nncross(X,Y, iX, iY)$which
plot(superimpose(X=X, Y=Y), main="nncross", cols=c("red","blue"))
arrows(X$x, X$y, Y[N]$x, Y[N]$y, length=0.15)
# point pattern and line segment pattern
X <- runifpoint(15)
Y <- rpoisline(10)
N <- nncross(X,Y)