[R-sig-Geo] nearest neighbor 3d point pattern

Rolf Turner r.turner at auckland.ac.nz
Fri Jun 28 01:34:39 CEST 2013


On 27/06/13 23:40, Carsten Neumann wrote:
> Dear list members,
>
> after searching R mailing lists, I wonder if there is a R function that
> can find the nearest neighbor/or just euclidean distance of points in
> one 3D coordinate system to points in another 3D coordinate system. The
> function nncross {spatstat} can only deal with 2D point pattern. Any
> idea or experiences with such procedures?
>
> ######################Test Data############################
> point1<-array(c(seq(0,1,0.1),seq(0,1,0.1),seq(0,1,0.1)),dim=c(11,11,11))
> point2<-array(c(0.8,0.3,0.5),dim=c(1,1,1))
> #########################################################
> question: where is point2 in point1?

You are correct in that nncross() has not (yet) been extended to three
dimensional point patterns.  However a workaround can be found by
using crossdist.pp3().

E.g.:

     set.seed(42)
     X     <- ppx(data.frame(x=rnorm(20),y=rnorm(20),z=rnorm(20)))
     Y      <- ppx(data.frame(x=0,y=0,z=0))
     M     <- crossdist(Y,X)
     min(M)
     which.min(M)

This will tell you that the nearest point in X to c(0,0,0) is point 
number 15
and the distance from c(0,0,0) to this point is 0.5299162.

I'm afraid I could not comprehend your example.  The object point1 is
a 3-dimensional array (11 x 11 x 11).  How is this to be interpreted as
a 3-dimensional *point pattern*?  And point2 is a single number --- 0.8,
and not actually a point in 3-space.

Furthermore what does the question "where is point2 in point1?" mean?
I cannot parse this question.

Perhaps (quite possibly) I am just being stupid.  If so, please 
enlighten me.

     cheers,

         Rolf Turner



More information about the R-sig-Geo mailing list