Further to my SpatialPoints TimeOrderedRecords interest: sp has a
function spDistsN1 to calculate distances
between 1 and many other locations - I would like to calculate distances
between succesive locations.
Currently I use this with a clunky dispatch method of my own for great
circle (sphere) versus Euclidean, where a and b are
subset matrices with the first and last row removed respectively, i.e.
x <- matrix(c(159, 143, 168, -43, -42, -54), ncol =2)
dist.gc(x[-1,], x[-nrow(x),])
## great circle (sphere)
dist.gc <- function(a, b) {
r <- cos(pi/180 * a[, 2]) * cos(pi/180 * b[, 2]) * cos(pi/180 *
(b[, 1] - a[, 1])) + sin(pi/180 * a[, 2]) * sin(pi/180 *
b[, 2])
6378.137 * acos(pmin(r, 1))
}
## Euclidean
dist <- function(a, b) {
sqrt(rowSums((a - b)^2))
}
Is there plans for a more general distance function in sp, or should I
work towards incorporating these functions - they usually suffice
for my purposes but the sphere is not always going to be enough.
spDistsN1 seems quite specific to a particular need.
Cheers, Mike.