Calculate the distances between subsequent 2-D coordinates using Euclidean or Great Circle distance (WGS84 ellipsoid) methods.

trackDistance(x1, y1, x2, y2, longlat = TRUE, prev = FALSE)

Arguments

x1

trip object, matrix of 2-columns, with x/y coordinates OR a vector of x start coordinates

y1

vector of y start coordinates, if x1 is not a matrix

x2

vector of x end coordinates, if x1 is not a matrix

y2

vector of y end coordinates, if x1 is not a matrix

longlat

if FALSE, Euclidean distance, if TRUE Great Circle distance

prev

if TRUE and x1 is a trip, the return value has a padded end value (\"prev\"ious), rather than start (\"next\")

Value

Vector of distances between coordinates.

Details

If x1 is a trip object, arguments x2, x3, y2 are ignored and the return result has an extra element for the start point of each individual trip, with value 0.0.

The prev argument is ignore unless x1 is a trip.

Distance values are in the units of the input coordinate system when longlat is FALSE, and in kilometres when longlat is TRUE.

This originally used spDistsN1, then implemented the sp gcdist source directly in R, and now uses geodist.

References

Original source taken from sp package, but now using Helmert from Karney (2013) see the geodist package.

Examples

d <- data.frame(x=1:10, y=rnorm(10), tms=Sys.time() + 1:10, id=gl(2, 5)) sp::coordinates(d) <- ~x+y ## this avoids complaints later, but these are not real track data (!) sp::proj4string(d) <- sp::CRS("+proj=laea +ellps=sphere", doCheckCRSArgs = FALSE) tr <- trip(d, c("tms", "id")) ## the method knows this is a trip, so there is a distance for every ## point, including 0s as the start and at transitions between ## individual trips trackDistance(tr)
#> 11 1.2 1.3 1.4 1.5 21 2.7 2.8 #> 0.000000 1.807158 3.199252 4.543217 2.088737 0.000000 1.062335 1.675079 #> 2.9 2.10 #> 1.036348 1.178340
## the default method does not know about the trips, so this is ##(n-1) distances between all points ## trackDistance(coordinates(tr), longlat = FALSE) ## we get NA at the start, end and at transitions between trips if (FALSE) { angles <- trackAngle(walrus818) }