[R-sig-Geo] inter-point distance calcs

Jim Bouldin jrbouldin at ucdavis.edu
Thu Aug 13 01:51:26 CEST 2009


Exactly what I was looking for.  Thank you very much.
Jim

> Jim Bouldin writes:
> 
> > Can anyone recommend a package that can calculate the distances between
> 
> > points (either all or a defined sample of) for x,y point locations
> listed
> 
> > in long format?
> 
> The package 'spatstat'  is optimised for this kind of thing.
> 
> If you have two vectors x,y containing point coordinates, first convert
> them to a point pattern using
> 
>       Z <- ppp(x, y, range(x), range(y))
> 
> Then to get the Euclidean distances between all pairs of points, returned
> as a matrix of distances, use
> 
>     D <- pairdist(X)
> 
> To get the distances between all pairs of points that are closer than a
> distance 'rmax', returned in 'long format', use
> 
>     C <- closepairs(X, rmax)
> 
> If you take rmax=diameter(as.owin(X)) then all pairs of points will be
> included.
> 
> The resulting object C is a list with entries i, j, xi, yi, xj, yj, dx,
> dy, d which are respectively
> 
>     i = index of point X[i]
> 
>     j = index of point X[j]
> 
>    xi, yi = coordinates of point X[i]
> 
>    xj, yj = coordinates of point X[j]
> 
>    dx, dy = vector difference X[j] - X[i]
> 
>    d = distance between X[i] and X[j].
> 
> You could convert this to a data frame using as.data.frame.
> 
> These algorithms are implemented in C and they appear to be at least as
> fast as anything else available.
> 
> There are separate algorithms for finding the nearest neighbour distance
> (nndist), identifying the nearest neighbour (nnwhich) etc etc.
> 
> Adrian Baddeley
> 

Jim Bouldin, PhD
Research Ecologist
Department of Plant Sciences, UC Davis
Davis CA, 95616
530-554-1740



More information about the R-sig-Geo mailing list