Hi, I have a question about computing shortest Euclidean distances between two data frames of spatial points... I have 2 dataframes (not yet converted to spatial class) >Sewers<-data.frame(x=c(10,20,35,50),y=c(100,150,200,300)) >transect <- data.frame(x=seq(from=0, to=50, by=1),y=seq(from=100, to=150, by=1)) I would like to be able to compute the shortest distance from the transect points the nearest sewer (Euclidean distance) I've tried a number of different loops, but so far ave had no luck. Any help would be appreciated
minimum distances
2 messages · Dave Depew, Ben Bolker
Dave Depew <ddepew <at> sciborg.uwaterloo.ca> writes:
Hi, I have a question about computing shortest Euclidean distances between two data frames of spatial points... I have 2 dataframes (not yet converted to spatial class)
>Sewers<-data.frame(x=c(10,20,35,50),y=c(100,150,200,300)) >transect <- data.frame(x=seq(from=0, to=50, by=1),y=seq(from=100,
to=150, by=1)) I would like to be able to compute the shortest distance from the transect points the nearest sewer (Euclidean distance) I've tried a number of different loops, but so far ave had no luck. Any help would be appreciated
Sewers<-data.frame(x=c(10,20,35,50),y=c(100,150,200,300))
transect <- data.frame(x=0:50,y=100:150)
dist <- sqrt((outer(Sewers$x,transect$x,"-"))^2+
(outer(Sewers$y,transect$y,"-"))^2)
mindist = apply(dist,2,min)
closest = apply(dist,2,which.min)
library(MASS)
eqscplot(Sewers,pch=16,col=1:4)
points(transect,col=closest)