Distances between two datasets of x and y co-ordinates

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Distances between two datasets of x and y co-ordinates

Andrew McFadden

Hi all

I am trying to determine the distances between  two datasets of x and y
points. The number of points in dataset One is very small i.e. perhaps
5-10. The number of points in dataset Two is likely to be very large
i.e. 20,000-30,000. My initial approach was to append the first dataset
to the second and then carry out the calculation:

dists <- as.matrix(dist(gis data from 2 * datasets))

However, the memory of the computer is not sufficient. A lot of
calculations carried out in this situation are unnecessary as I only
want approx 5 * 20,000 calculations versus 20,000 *20,000.

x <- c(2660156,2663703,2658165,2659303,2661531,2660914)
y <- c(6476767,6475013,6475487,6479659,6477004,6476388)
data2<-cbind(x,y)

x <- c(266500,2611111)
y <- c(6478767,6485013)
data1<-cbind(x,y)

Any suggestions on how to do this would be appreciated.

Regards

Andrew

Phone 04 894 5600 Fax 04 894 4973 Mobile 029 894 5611 Postal address:
Investigation and Diagnostic Centre- Wallaceville Box 40742 Ward St
Upper Hutt



########################################################################
This email message and any attachment(s) is intended solely for the
addressee(s) named above. The information it contains is confidential
and may be legally privileged.  Unauthorised use of the message, or the
information it contains, may be unlawful. If you have received this
message by mistake please call the sender immediately on 64 4 8940100
or notify us by return email and erase the original message and
attachments. Thank you.

The Ministry of Agriculture and Forestry accepts no responsibility for
changes made to this email or to any attachments after transmission from
the office.
########################################################################

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: Distances between two datasets of x and y co-ordinates

Sundar Dorai-Raj


Andrew McFadden said the following on 3/12/2008 1:47 PM:

> Hi all
>
> I am trying to determine the distances between  two datasets of x and y
> points. The number of points in dataset One is very small i.e. perhaps
> 5-10. The number of points in dataset Two is likely to be very large
> i.e. 20,000-30,000. My initial approach was to append the first dataset
> to the second and then carry out the calculation:
>
> dists <- as.matrix(dist(gis data from 2 * datasets))
>
> However, the memory of the computer is not sufficient. A lot of
> calculations carried out in this situation are unnecessary as I only
> want approx 5 * 20,000 calculations versus 20,000 *20,000.
>
> x <- c(2660156,2663703,2658165,2659303,2661531,2660914)
> y <- c(6476767,6475013,6475487,6479659,6477004,6476388)
> data2<-cbind(x,y)
>
> x <- c(266500,2611111)
> y <- c(6478767,6485013)
> data1<-cbind(x,y)
>
> Any suggestions on how to do this would be appreciated.
>
> Regards
>
> Andrew

If you're trying to find only the closest point in data1 to data2, then
use knn (or knn1) in the 'class' package:

library(class)
nn <- knn1(data2, data1, 1:nrow(data2))

which gives you the rows in data1 closest to each row in data2. Then
compute the distance:

rowSums((data2[nn, ] - data1)^2)^0.5

HTH,

--sundar

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: Distances between two datasets of x and y co-ordinates

Bill.Venables
In reply to this post by Andrew McFadden
Here's what I would try.  Suppose x1, y1 and x2, y2 are the two data
sets.

z1 <- complex(real = x1, imaginary = y1)
z2 <- complex(real = x2, imaginary = y2)
dMat <- outer(z1, z2, function(z1, z2) Mod(z1-z2))

Bill Venables
CSIRO Laboratories
PO Box 120, Cleveland, 4163
AUSTRALIA
Office Phone (email preferred): +61 7 3826 7251
Fax (if absolutely necessary):  +61 7 3826 7304
Mobile:                         +61 4 8819 4402
Home Phone:                     +61 7 3286 7700
mailto:[hidden email]
http://www.cmis.csiro.au/bill.venables/ 

-----Original Message-----
From: [hidden email] [mailto:[hidden email]]
On Behalf Of Andrew McFadden
Sent: Thursday, 13 March 2008 6:47 AM
To: [hidden email]
Subject: [R] Distances between two datasets of x and y co-ordinates


Hi all

I am trying to determine the distances between  two datasets of x and y
points. The number of points in dataset One is very small i.e. perhaps
5-10. The number of points in dataset Two is likely to be very large
i.e. 20,000-30,000. My initial approach was to append the first dataset
to the second and then carry out the calculation:

dists <- as.matrix(dist(gis data from 2 * datasets))

However, the memory of the computer is not sufficient. A lot of
calculations carried out in this situation are unnecessary as I only
want approx 5 * 20,000 calculations versus 20,000 *20,000.

x <- c(2660156,2663703,2658165,2659303,2661531,2660914)
y <- c(6476767,6475013,6475487,6479659,6477004,6476388)
data2<-cbind(x,y)

x <- c(266500,2611111)
y <- c(6478767,6485013)
data1<-cbind(x,y)

Any suggestions on how to do this would be appreciated.

Regards

Andrew

Phone 04 894 5600 Fax 04 894 4973 Mobile 029 894 5611 Postal address:
Investigation and Diagnostic Centre- Wallaceville Box 40742 Ward St
Upper Hutt



########################################################################
This email message and any attachment(s) is intended solely for the
addressee(s) named above. The information it contains is confidential
and may be legally privileged.  Unauthorised use of the message, or the
information it contains, may be unlawful. If you have received this
message by mistake please call the sender immediately on 64 4 8940100
or notify us by return email and erase the original message and
attachments. Thank you.

The Ministry of Agriculture and Forestry accepts no responsibility for
changes made to this email or to any attachments after transmission from
the office.
########################################################################

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.