geodDist {oce} | R Documentation |
Compute geodesic distance on surface of earth.
geodDist(longitude1, latitude1=NULL, longitude2=NULL, latitude2=NULL, alongPath=FALSE)
longitude1 |
longitude or a vector of longitudes, or a
|
latitude1 |
latitude or vector of latitudes (ignored if |
longitude2 |
optional longitude or vector of longitudes (ignored if
|
latitude2 |
optional latitude or vector of latitudes (ignored if
|
alongPath |
boolean indicating whether to compute distance along the
path, as opposed to distance from the reference point. If
|
This calculates geodesic distance between points on the earth, i.e. distance measured along the (presumed ellipsoidal) surface. The method involves the solution of the geodetic inverse problem, using T. Vincenty's modification of Rainsford's method with Helmert's elliptical terms.
The function may be used in several different ways.
Case 1: longitude1
is a section
object. The values of
latitude1
, longitude2
, and latitude2
arguments are
ignored, and the behaviour depends on the value of the alongPath
argument. If alongPath=FALSE
, the return value contains the geodetic
distances of each station from the first one. If alongPath=TRUE
, the
return value is the geodetic distance along the path connecting the stations,
in the order in which they are stored in the section.
Case 2: longitude1
is a vector. If longitude2
and
latitude2
are not given, then the return value is a vector containing
the distances of each point from the first one, or the distancce along
the path connecting the points, according to the value of alongPath
.
On the other hand, if both longitude2
and latitude2
are
specified, then the return result depends on the length of these arguments.
If they are each of length 1, then they are taken as a reference point, from
which the distances to longitude1
and latitude1
are calculated
(ignoring the value of alongPath
). However, if they are of the same
length as longitude1
and latitude1
, then the return value is the
distance between corresponding (longitude1
,latitude1
) and
(longitude2
,latitude2
) values.
Vector of distances in kilometres.
Dan Kelley based this on R code sent to him by Darren Gillis, who in 2003 had modified Fortran code that, according to comments in the source, had been written in 1974 by L. Pfeifer and J. G. Gergen.
T. Vincenty, "Direct and Inverse Solutions of Ellipsoid on the Ellipsoid with Application of Nested Equations", Survey Review, April 1975. (As of early 2009, this document is available at http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf.)
library(oce) km <- geodDist(100, 45, 100, 46) data(section) geodDist(section) geodDist(section, alongPath=TRUE)