Convert one or two rectangular objects containing lon-lat coordinates into vector or matrix of geodesic distances in metres.
geodist( x, y, paired = FALSE, sequential = FALSE, pad = FALSE, measure = "cheap" )
Rectangular object (matrix,
Optional second object which, if passed, results in distances
calculated between each object in
One of "haversine" "vincenty", "geodesic", or "cheap" specifying desired method of geodesic distance calculation; see Notes.
x passed and
sequential = FALSE, a square
symmetric matrix containing distances between all items in
x; If only
x passed and
sequential = TRUE, a vector of sequential
distances between rows of
x; otherwise if
y is passed, a matrix
nrow(x) rows and
nrow(y) columns. All return values are
distances in metres.
measure = "cheap" denotes the mapbox cheap ruler
measure = "geodesic"
denotes the very accurate geodesic methods given in Karney (2013)
"Algorithms for geodesics" J Geod 87:43-55, and as provided by the
n <- 50 # Default "cheap" distance measure is only accurate for short distances: x <- cbind (runif (n, -0.1, 0.1), runif (n, -0.1, 0.1)) y <- cbind (runif (2 * n, -0.1, 0.1), runif (2 * n, -0.1, 0.1)) colnames (x) <- colnames (y) <- c ("x", "y") d0 <- geodist (x) # A 50-by-50 matrix d1 <- geodist (x, y) # A 50-by-100 matrix d2 <- geodist (x, sequential = TRUE) # Vector of length 49 d2 <- geodist (x, sequential = TRUE, pad = TRUE) # Vector of length 50 d0_2 <- geodist (x, measure = "geodesic") # nanometre-accurate version of d0