[R-sig-Geo] Calculating distance to nest with spDistsN1

St John Brown st_john_brown at yahoo.com
Tue Sep 30 03:04:08 CEST 2014


Anna-Marie,

If you look at the documentation for spDistsN1 (i.e. run "?spDistsN1"), you will see that the second argument is suppose to be a single 2D point, and not many 2D points. As per the documentation descripttion, "the function returns a vector of distances between a matrix of 2D points ... and a single 2D point."

I am not 100% sure I understand what you are trying to do, but I think what you are looking for is the spDists function. Compare the results of my output from using spDistsN1 versus spDists.

I hope this helps.

St. John

make_locations = function(n){
  lon = runif(n=n,min=7,max=8)
  lat = runif(n=n,min=50,max=60)
  locations = matrix(append(lon, lat), nrow=n, ncol=2)
  colnames(locations) = c("lon", "lat")
  rownames(locations) = 1:n
  return(locations)
}

set.seed(1)
flight_locations = make_locations(n=3)
nest_locations = make_locations(n=3)

flight_locations
nest_locations

spDistsN1(flight_locations, nest_locations[1,], longlat=T)
spDists(flight_locations, nest_locations, longlat=T)


On Monday, September 29, 2014 5:47 AM, Anna-Marie Corman <annajess at gmx.de> wrote:



Dear list,

I have a question regarding the spDistsN1 function. I want to calculate 
the distance of each flight position to the relevant nest position. My 
dataset consists of several birds with a differing number of trips. 
There is a unique trip_id with the first number regarding to the bird 
and the second number regarding to the trip.

          coordinates       Date     Time Speed Direction col_lat col_long dist_col
1 (7.87248, 54.1866) 04.07.2014 09:25:00  0.02    314.57 54.1866   7.8724      0.0
2 (7.87148, 54.1869) 04.07.2014 09:30:00 19.11      1.31 54.1866   7.8724      0.1
3  (7.87166, 54.185) 04.07.2014 09:35:00 14.98    224.79 54.1866   7.8724      0.2
4 (7.88635, 54.1569) 04.07.2014 09:40:00 11.44    136.97 54.1866   7.8724      3.4
5 (7.92096, 54.1363) 04.07.2014 09:45:00  0.28    262.14 54.1866   7.8724      6.4
6  (7.91931, 54.136) 04.07.2014 09:50:00  0.42    218.89 54.1866   7.8724      6.4
   trip_no bird_id trip_id                  DT           date_time
1       1       1     1.1 04.07.2014 09:25:00 2014-07-04 09:25:00
2       1       1     1.1 04.07.2014 09:30:00 2014-07-04 09:30:00
3       1       1     1.1 04.07.2014 09:35:00 2014-07-04 09:35:00
4       1       1     1.1 04.07.2014 09:40:00 2014-07-04 09:40:00
5       1       1     1.1 04.07.2014 09:45:00 2014-07-04 09:45:00
6       1       1     1.1 04.07.2014 09:50:00 2014-07-04 09:50:00



Formerly, when I only had one bird and so only one nest position (here 
col_lat & col_long), I did the following:

spDistsN1(coordinates(dat at coords), matrix(c(8.3495235,54.7042698), nrow 
= 1), longlat = T)

and this worked fine.

But now I want to calculate the distance from nest for each bird 
simultaneously. Must be simple, but I do not get it. I thought I could 
simply use

spDistsN1(coordinates(dat at coords), matrix(c(dat$col_long,dat$col_lat), 
nrow = 1), longlat = T)

instead, but it does not work.

Do you have any idea how to solve the "problem"?

Thanks a lot in advance.

Best,
Anna

    [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo at r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo



More information about the R-sig-Geo mailing list