[R-sig-Geo] finding euclidean proximate points in two datasets

Alexander Shenkin ashenkin at ufl.edu
Thu May 20 17:29:26 CEST 2010


Hello All,

I posted this over on R-help, but was then directed here.

I've been pouring through the various spatial packages, but haven't come
across the right thing yet.

Given a set of points in 2-d space X, i'm trying to find the subset of
points in Y proximate to each point in X.  Furthermore, the proximity
threshold of each point in X differs (X$threshold).  I've constructed
this myself already, but it's horrificly slow with a dataset of 40k+
points in one set, and a 700 in the other.

A very inefficient example of what I'm looking for:

    X = data.frame(x=c(1,2,3), y=c(2,3,1), threshold=c(1,2,4))
    Y = data.frame(x=c(5,2,3,4,2,5,2,3), y=c(5,2,2,4,1,2,3,1))
    proximate=list()
    i=1
    for (pt in 1:length(X$x)) {
        proximate[[i]] <- sqrt((X[pt,]$x - Y$x)2 + (X[pt,]$y - Y$y)2)
                          > X[pt,]$threshold
        i=i+1
    }
    proximate

Perhaps crossdist() in spatstat is what I should use, and then code a
comparison with X$threshold after the cross-distances are computed.
However, I was wondering if there was another tool I should be
considering.  David Winsemius suggested I first compare on in each
coordinate to cull points outside the threshold on that axis first,
before computing distances, which will help.  Any and all thoughts are
very welcome.  Thanks in advance.

Thanks,
Allie
-- 
Alexander Shenkin
PhD Candidate
School of Natural Resources and Environment
University of Florida

http://snre.ufl.edu/people/students.asp



More information about the R-sig-Geo mailing list