Usenet Replayer



utf-8


Path:  news2.ip-mobilphone.net ! NNTPLoader.ip-mobilphone.net ! text.usenetserver.com ! out02b.usenetserver.com ! news.usenetserver.com ! in04.usenetserver.com ! news.usenetserver.com ! newsfeed.berkeley.edu ! ucberkeley ! news-hog.berkeley.edu ! 128.135.12.170.MISMATCH ! news.uchicago.edu ! nntp-server.caltech.edu ! news.jpl.nasa.gov ! Robert.G.Chamberlain
From:  rgc <Robert.G.Chamberlain@jpl.nasa.gov>
Newsgroups:  comp.infosystems.gis
Subject:  FAQ Q5.1 Distance Computation (very long)
Date:  Thu, 07 Feb 2008 13:58:53 -0800
Organization:  JPL
Lines:  705
Message-ID:  <Robert.G.Chamberlain-044111.13585307022008@news.jpl.nasa.gov>
NNTP-Posting-Host:  rgc.jpl.nasa.gov
X-Trace:  news.jpl.nasa.gov 1202421533 21482 137.78.81.34 (7 Feb 2008 21:58:53 GMT)
X-Complaints-To:  newsmaster@jpl.nasa.gov
NNTP-Posting-Date:  Thu, 7 Feb 2008 21:58:53 +0000 (UTC)
User-Agent:  MT-NewsWatcher/3.4 (PPC Mac OS X)
X-Received-Date:  Thu, 07 Feb 2008 17:01:02 EST (text.usenetserver.com)
Xref:  news2.ip-mobilphone.net comp.infosystems.gis:14311


Subject: (very long) comp.infosystems.gis FAQ Q5.1:
Computing The Distance Between Two Points on the Earth

The complete FAQ, which used to be hosted at the U.S. Census Bureau,
appears to be available now only in various archives.

Here is a slightly updated version of the answer I authored in 1996 and
have updated several times since. This update is dated 7 February 2008.
It includes discussions about the radius of the Earth posted by
Jacquelin Hardy on Feb 6 and Paul Cooper on Feb 7.

The hyperlinks were valid in February 2001, but they appear to be
obsolete. I don't have time to research them right now, but if anyone
wants to send me updated URLs, I will be happy to insert them and
repost this FAQ.

-------------------

Q5.1: What is the best way to calculate the distance between 2 points?

From: Bob Chamberlain <rgc@jpl.nasa.gov>


PRE-GEOMETRY DISCUSSION OF CALCULATING DISTANCES
ON THE EARTH'S SURFACE
(The professional-level discussion follows this brief summary.)

The Earth is round, but big, so we can consider it flat for short
distances. But, even though the circumference of the Earth is about
25,000 miles (40,000 kilometers), flat-Earth formulas for calculating
the distance between two points start showing noticeable errors when
the distance is more than about 12 miles (20 kilometers). Of course,
how much error is "noticeable" depends on how you are going to use the
result.

If lots of distances are going to be computed, the amount of
calculation has to be considered. I studied this issue because I was
working on a computer program to support U.S. Army training exercises
- our program typically calculated hundreds of thousands of distances
every hour.

Cartesian coordinates express distances in two different directions,
such as north-south for one direction and east-west for the other.
The straight line distance between two points can then be thought of
as the long side of a right triangle with one of the short sides being
the north-south distance between the points and the other being the
east-west distance. (A right triangle is one that has a square
corner.) The usual formula for computing the length of the long side
of a right triangle is the Pythagorean Theorem. Using this formula
from geometry requires knowing about square roots.

Near the North Pole and near the South Pole, the longitude lines,
which go north-south and are called the meridians, approach each other
noticeably - in fact, they meet at the pole. The latitude lines, which
go east-west, are circles around the pole. Treating differences in
locations along these directions as if they were the sides of a right
triangle leads to errors in the computation of distance. Very close
to the pole, the answer could be VERY wrong - but a different
flat-Earth approximation, obtained from plane trigonometry, can be
used for short distances: the Polar Coordinate Flat-Earth Formula.
Using this formula - and the others mentioned below - requires knowing
something about trigonometry.

Latitude and longitude are spherical coordinates, based on recognition
that the Earth is round. Their definition does not require that the
Earth be exactly spherical, but approximating the Earth as a sphere is
satisfactory for most needs. Converting from spherical coordinates to
flat (Cartesian) coordinates is what most map projections are all
about; a lot of calculation is sometimes needed. The easiest is to use
north-south for one direction and east-west for the other - but that
has problems near the poles, as I described above.

When you study spherical trigonometry, you learn a bunch of formulas.
One of them is called the Law of Cosines for Spherical Trigonometry.
It is a perfectly fine formula when it is used for the right purposes.
Solving for short distances on the surface of the Earth is not one of
those purposes. The problem is as follows: Suppose you have a right
triangle with a very small angle. The ratio between the looooooong
short side and the long side is very close to 1.0. The formula
computes that ratio first, then requires the computer to find the
angle that has that ratio. In principle, the computer can do so -
after all,the formula is mathematically correct - but ordinarily
computers approximate all numbers to some number of what are called
"significant digits". With 7 or 8 significant digits, the computer
cannot distinguish between the ratios for angles smaller than about a
minute of arc (a minute is 1/60 of a degree). Since the angle being
computed has its apex at the center of the Earth, a minute of arc
corresponds to about a mile on the surface.

Since the formula is mathematically correct, it can be manipulated
into other forms. The Haversine Formula is one result of such
manipulations. It has a similar problem, but it is "poorly
conditioned" when the two points are all the way around the Earth
from each other, rather than when they are close to each other. The
discussion below gives a second version of the haversine formula that
is easier to program on some computers.

It also discusses the fact that the Earth is not quite a sphere, and
gives several references for further reading. There is discussion of
where to look if even the ellipsoid approximation is too coarse. It
also has a pointer to one source of navigation formulas on the
Internet.


******** PROFESSIONAL-LEVEL DISCUSSION ********
CALCULATING DISTANCES ON THE SURFACE OF THE EARTH

Q5.1: What is the best way to calculate the distance between 2 points?

From: Bob Chamberlain <rgc@jpl.nasa.gov>

The distances considered here are along the surface of the Earth,
and deliberately ignore the effect of differences in elevation.
Distances on the surface of the terrain, whether geodesic, on roads,
or cross-country, depend on relief (including elevation differences),
the status of engineering projects, and perhaps even route selection.
Hence, computation is idiosyncratic and not well suited to simple
approximations.

If the distance is less than about 20 km (12 mi) and the locations of
the two points in Cartesian coordinates are X1,Y1 and X2,Y2 then the

Pythagorean Theorem

d = sqrt((X2 - X1)^2 + (Y2 - Y1)^2)

will require the least amount of computation and will be in error by
less than 30 meters (100 ft) for latitudes less than 70 degrees
less than 20 meters ( 66 ft) for latitudes less than 50 degrees
less than 9 meters ( 30 ft) for latitudes less than 30 degrees
(These error statements reflect both the convergence of the meridians
and the curvature of the parallels. The error is non-linear with
distance; shorter distances will have better percentage errors.)

The flat-Earth distance d will be expressed in the same units as the
coordinates.

If the locations are not already in Cartesian coordinates, the
computational cost of converting from spherical coordinates and then
using the flat-Earth model may exceed that of using the more accurate
spherical model.

Otherwise, presuming a spherical Earth with radius R (see below), and
the locations of the two points in spherical coordinates (longitude
and latitude) are lon1,lat1 and lon2,lat2 then the

Haversine Formula (from R.W. Sinnott, "Virtues of the Haversine",
Sky and Telescope, vol. 68, no. 2, 1984, p. 159):

dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2
c = 2 * arcsin(min(1,sqrt(a)))
d = R * c

will give mathematically and computationally exact results. The
intermediate result c is the great circle distance in radians. The
great circle distance d will be in the same units as R.

When the two points are antipodal (on opposite sides of the Earth),
the Haversine Formula is ill-conditioned (see the discussion below
the Law of Cosines for Spherical Trigonometry), but the error, perhaps
as large as 2 km (1 mi), is in the context of a distance near
20,000 km (12,000 mi). Further, there is a possibility that round-off
errors might cause the value of sqrt(a) to exceed 1.0, which would
cause the inverse sine to crash without the bulletproofing provided by
the min() function.

Most computers require the arguments of trigonometric functions to be
expressed in radians. To convert lon1,lat1 and lon2,lat2 from degrees,
minutes, and seconds to radians, first convert them to decimal
degrees. To convert decimal degrees to radians, multiply the number
of degrees by pi/180 = 0.017453293 radians/degree.

Inverse trigonometric functions return results expressed in radians.
To express c in decimal degrees, multiply the number of radians by
180/pi = 57.295780 degrees/radian. (But be sure to multiply the number
of RADIANS by R to get d.)

The Haversine Formula can be expressed in terms of a two-argument
inverse tangent function, atan2(y,x), instead of an inverse sine
as follows (no bulletproofing is needed for an inverse tangent):

dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2
c = 2 * atan2( sqrt(a), sqrt(1-a) )
d = R * c

In this context, a one-argument inverse tangent function would also
work: replace "atan2( sqrt(a), sqrt(1-a) )" by "arctan( sqrt(a) /
sqrt(1-a) )", but insert a test to ensure you will not divide by
zero if a = 1. (In the case a = 1, c = pi radians = 180 degrees,
and d is halfway around the Earth = 3.14159265... * R.)

The problem of determining the great circle distance on a sphere has
been around for hundreds of years, as have both the Law of Cosines
solution (given below but not recommended) and the Haversine Formula.
Sinnott gets the credit here because he was quoted by Snyder (cited
below). Perhaps someone will provide the truly seminal reference so
the proper attribution can be given?

The Pythagorean flat-Earth approximation assumes that meridians are
parallel, that the parallels of latitude are negligibly different from
great circles, and that great circles are negligibly different from
straight lines. Close to the poles, the parallels of latitude are not
only shorter than great circles, but indispensably curved. Taking this
into account leads to the use of polar coordinates and the planar law
of cosines for computing short distances near the poles: The

Polar Coordinate Flat-Earth Formula

a = pi/2 - lat1
b = pi/2 - lat2
c = sqrt( a^2 + b^2 - 2 * a * b * cos(lon2 - lon1) )
d = R * c

is computationally only a little more expensive than the Pythagorean
Theorem and will give smaller maximum errors for higher latitudes and
greater distances. The maximum errors, which depend upon azimuth in
addition to separation distance, are equal at 80 degrees latitude when
the separation is 33 km (20 mi), 82 degrees at 18 km (11 mi),
84 degrees at 9 km (5.4 mi). But even at 88 degrees the polar error
can be as large as 20 meters (66 ft) when the distance between the
points is 20 km (12 mi).

The latitudes lat1 and lat2 must be expressed in radians (see above);
pi/2 = 1.5707963. Again, the intermediate result c is the distance in
radians and the distance d is in the same units as R.

An UNRELIABLE way to calculate distance on a spherical Earth is the

Law of Cosines for Spherical Trigonometry
** NOT RECOMMENDED **

a = sin(lat1) * sin(lat2)
b = cos(lat1) * cos(lat2) * cos(lon2 - lon1)
c = arccos(a + b)
d = R * c

Although this formula is mathematically exact, it is unreliable for
small distances because the inverse cosine is ill-conditioned. Sinnott
(in the article cited above) offers the following table to illustrate
the point:
cos (5 degrees) = 0.996194698
cos (1 degree) = 0.999847695
cos (1 minute) = 0.9999999577
cos (1 second) = 0.9999999999882
cos (0.05 sec) = 0.999999999999971
A computer carrying seven significant figures cannot distinguish the
cosines of any distances smaller than about one minute of arc.
The function min(1,(a + b)) could replace (a + b) as the argument for
the inverse cosine to guard against possible round-off errors, but
doing so would be to "polish a cannonball".



5.1a: What value should I use for the radius of the spherical Earth?

The historical definition of a "nautical mile" is "one minute of arc
of a great circle of the earth". Since the earth is not a perfect
sphere, that definition is ambiguous. However, the internationally
accepted (SI) value for the length of a nautical mile is (exactly, by
definition) 1.852 km or exactly 1.852/1.609344 international miles
(that is, approximately 1.15078 miles - either "international" or
"U.S. statute"). Thus, the implied "official" circumference is 360
degrees times 60 minutes/degree times 1.852 km/minute = 40003.2 km.
The implied radius is the circumference divided by 2 pi:

R = 6367 km = 3956 mi

If four significant figures is not sufficiently accurate for your
needs, see the shorter and/or longer answers for a non-spherical
Earth radius given in 5.1b1 and 5.1b2 below.



5.1b: When is it NOT okay to assume the Earth is a sphere?

A quick (?) test is: Compare the results produced by using the two
extreme values of the radius of curvature for the Earth:

minimum radius of curvature: 6336 km (3937 mi)
maximum radius of curvature: 6399 km (3976 mi)

in your application. If the results are different enough to cause you
to change your action (or your recommendation, or your interpretation
of the implication of the results, etc.), then assuming the Earth is
spherical is NOT okay.


5.1b1: Non-spherical Earth radius - The shorter answer

On 31 January 2008, Poster Matt asked the following question on the
comp.infosystems.gis newsgroup:
The mean radius of the Earth is approximately 6,372 km, but what
formula is used to calculate the radius of the Earth for any given
latitude?

The discussion was lively, but Jacquelin Hardy posted a nice summary
on 6 February 2008, which I have edited (with no intentional change
in content):

If you are a seaman, you are looking for a seaman's answer.
If you are a geodesist, you are looking for a geodesist's answer.
If you are a mathematician, you are looking for a mathematical
answer.

Here are some possible answers:

The geoid:

The hypothetical surface of the Earth that coincides everywhere
with mean sea level and is perpendicular, at every point, to the
direction of gravity. The geoid is used as a reference surface for
astronomical measurements and for the accurate measurement of
elevations on the Earth's surface.

From that point of view, there is no formula to calculate the
radius of Earth, just readings from surveys.

The reference ellipsoid:

In geodesy, a reference ellipsoid is a mathematically-defined
surface that approximates the geoid, the truer figure of the Earth,
or other planetary body. Because of their relative simplicity,
reference ellipsoids are used as a preferred surface on which
geodetic network computations are performed and point coordinates
such as latitude, longitude, and elevation are defined.

If you take WGS84 as a reference ellipsoid, the Earth is
flattened by 1/298.257. Then you can calculate the radius for each
latitude. [See the longer answer given below. - rgc]

Seamen use the great circle for long planning routes. They assume,
without large errors, that the Earth is spherical.

On 7 February 2008, Paul Cooper elaborated on Jacquelin's answer,
which I have also edited with no intentional change in content:

Jacquelin is quite correct. I haven't bothered getting involved in
this discussion because, as Jacquelin says, the answer is "it
depends on your application". The original poster was being
confused by attempting to compute distances in a projected
coordinate system,which is a necessarily inaccurate way of carrying
out the measurement. (I know, it IS accurate if you are doing
distance from the pole of projection of an equidistant projection,
but typically that isn't the case, and wasn't the case for the
original poster). In fact I suspect that the simple cosine rule
formula was quite accurate enough for his or her needs; the
difference between spherical geometry, ellipsoidal geometry and
surveyed distance on a geoid is only likely to bother a surveyor
looking for closure in a survey. Over long distances, the
difference is less than a kilometre - and that's for distances
between Antarctica and Europe.

A practical solution: if you want a good geodetic distance
calculator, then use geod which is bundled with proj. That is
a) robust, b) written by an expert in the field of geodesy (Gerry
Evenden), c) accurate, and d) free! As far as I'm concerned, this
is the gold standard for great circle calculations on the
ellipsoid; it avoids all the computationally nasty things that can
happen if you roll your own! And as Jacquelin has pointed out, you
can't compute distance on the geoid analytically - but I think the
difference would be less than a millimetre! It is worth noting that
the maximum vertical distance between sphere and ellipsoid is about
11 km. The maximum vertical distance between ellipsoid and geoid is
+85 metres to -106 metres); the ellipsoid is a fantastically
accurate approximation of the shape of the Earth.


5.1b2: Non-spherical Earth radius - The longer answer

The shape of the Earth is well approximated by an oblate spheroid. The
radius of curvature varies with direction and latitude. According to
formulas given on pages 24 and 25 of the book by Snyder,

"Map Projections - A Working Manual", by John P. Snyder,
U.S. Geological Survey Professional Paper 1395,
United States Government Printing Office, Washington DC, 1987,

the radius of curvature of an ellipsoidal Earth in the plane of the
meridian is given by

R' = a * (1 - e^2) / (1 - e^2 * (sin(lat))^2)^(3/2)

where a is the equatorial radius,
b is the polar radius, and
e is the eccentricity of the ellipsoid = sqrt(1 - b^2/a^2)

and the radius of curvature in a plane perpendicular to the meridian
and perpendicular to a plane tangent to the surface is given by

N = a/sqrt(1-e^2*(sin(lat)^2))

A Swedish book by Ilmar Ussisoo, _Kartprojektioner_ [map projections]
(published by the National Land Survey, Sweden, Professional papers
1977/6) suggests use of the geometric mean of these two radii of
curvature for all azimuths, as it produces errors of order of
magnitude 0.1% for distances within 500 km (300 mi) at 60 degrees
latitude. The formula for that average is no more complicated than
either of its components. That is, r = sqrt(R' * N) becomes

r = a * sqrt(1 - e^2) / (1 - e^2 * (sin(lat))^2)

Using these formulas with

a = 6378 km (3963 mi) Equatorial radius (surface to center distance)
b = 6357 km (3950 mi) Polar radius (surface to center distance)
e = 0.081082 Eccentricity

gives the following table of values for the

Radii of Curvature:

latitude___________r___________________R'__________________N__________
00 degrees . 6357 km (3950 mi) . 6336 km (3937 mi) . 6378 km (3963 mi)
15 degrees . 6360 km (3952 mi) . 6340 km (3940 mi) . 6379 km (3964 mi)
30 degrees . 6367 km (3957 mi) . 6352 km (3947 mi) . 6383 km (3966 mi)
45 degrees . 6378 km (3963 mi) . 6367 km (3957 mi) . 6389 km (3970 mi)
60 degrees . 6388 km (3970 mi) . 6383 km (3966 mi) . 6394 km (3973 mi)
75 degrees . 6396 km (3974 mi) . 6395 km (3974 mi) . 6398 km (3975 mi)
90 degrees . 6399 km (3976 mi) . 6399 km (3976 mi) . 6399 km (3976 mi)

Note that the radius of curvature for an ellipsoid is not the same as
the distance from the surface of the ellipsoid to the center. In fact,
the radius of curvature increases as the radius decreases. Also, be
aware that a variety of ellipsoids with slightly different parameters
have been fit to the Earth; the preferred ellipsoid may depend on the
region in which you are most interested.

Cliff Tiedemann, at the University of Illinois at
Chicago pointed out that spherical earth computations will provide
underestimates of real world distances measured in the direction of
the equator (and especially for trans-equatorial links) and
overestimates for those measured in the direction of the poles (and
especially for trans-polar ones).

For most purposes, it is quite satisfactory to treat the Earth as a
sphere. If not, an ellipsoid can provide a better approximation.
Some standard textbooks that may be helpful follow (reviews are by
Steve Robertson, of Tangent Survey Systems in Canada):

Bomford, Guy 1980 _Geodesy_ Clarendon Press, Oxford
ISBN 0-19-851946-X

Review: For geodetic computations, this is pretty well the standard in
English. It's a cookbook and offers no development, however.

Vanicek, Petr, and Krakiwsky, Edward 1986 _Geodesy, the Concepts_
North-Holland, Amsterdam
ISBN 0-444-87775-4

Review: This offers a great, but quite involved, discussion of the
concepts behind geometrical (and all other) geodesy.

Torge, Wolfgang 1980 _Geodesy_ de Gruyter, Berlin (translated to
English by C. Jekeli)
ISBN 3-11-007232-7

Review: This concentrates mostly on gravimetric geodesy, but has some
geometrical stuff, well explained without too much mathematics.

Software for solving distance and azimuth problems on the ellipsoid
can be obtained (as of 10/10/96) by anonymous ftp from several
sources, two of which are listed below:

The URL of the National Geodetic Survey (of the National Oceanic and
Atmospheric Administration in the US Department of Commerce) is:

http://www.ngs.noaa.gov/ (Who's computer is this?)

Review (by Ronald C. McConnell of Bellcore):
They have Fortran source and PC executable versions of both the normal
"inverse" great circle calculations (two lat/long pairs to distance
and bearing), and the less used "forward" calculation (one lat/long
pair plus bearing and distance to the second lat/long pair). They have
both 2-dimensional and 3-dimensional versions of each. The inverse
program works to within a few seconds or a few minutes, depending on
the Fortran compiler, of the antipodal points. The forward program
seems immune to any and all problem locations and pairs of locations.
You can choose among a couple of dozen ellipsoids.

See their read.me file for explanations. The NGS software directory
may contain other listing of interest. Its URL is (used to be):

http://www.ngs.noaa.gov/PC_PROD/pc_prod.shtml/ (Who's computer is this?)

(Case is relevant in many URLs - e.g.: this one.)

The NGS has (had? a public BBS at 301-713-4181 and provides (used to
provide) FTP access at:

ftp://ftp.ngs.noaa.gov/pub/pcsoft (Who's computer is this?)

Another anonymous ftp source for ellipsoid software is the US
Geological Survey (of the US Department of the Interior). Their
Proj.4 software used to be available at:

http://kai.er.usgs.gov/pub/Proj.4/ (Who's computer is this?)

Again, see their readme.txt file for explanations. The URL for the
USGS home page is:

http://www.usgs.gov/ (Who's computer is this?)



5.1c: When is it NOT okay to assume the Earth is an ellipsoid?

The shape the Earth would assume if it were all measured at mean sea
level is called the geoid. The geoid varies no more than about a
hundred meters above or below a well-fitting ellipsoid, a variation
far less than the ellipsoid varies from the sphere. Terrain relief is
reported relative to the geoid. (Paraphrased from p. 11 of the book by
Snyder cited above.)

Distances on the surface of the geoid are not particularly meaningful.
However, there are applications, such as long-term prediction of
orbits of Earth satellites, that require better approximations than
are provided by an ellipsoid. Astrodynamics texts, such as

Kaula, William M. 1966 _Theory of Satellite Geodesy_ Blaisdell
Publishing Co., Waltham, MA (This book may be out of print.)

Battin, Richard H. 1964 _Astronautical Guidance_ McGraw-Hill,
New York (There may be later editions.)

may be consulted for further information.



5.1d: Where can I find formulas for great circle navigation problems,
like what course to follow and where will I be after following a known
azimuth for a given distance?

See Ed Williams' navigation formulas, containing solutions to just
about any spherical trigonometry problem you can imagine, at

http://www.best.com/~williams/avform.htm (Who's computer is this?)

which can also be accessed by clicking on 'FAQ Lists' at

http://vancouver-webpages.com/peter/#faq (Who's computer is this?)



5.1e: How can I calculate distance on an ellipsoid.

On May 18, 1999, Steven Michael Robbins
posted a discussion of this issue. He said:

About two weeks ago, I posted the following question:

I need to compute the distance between two points on the surface of
an ellipsoid. I'm looking for the distance *on* the surface. In
short, I'm after the length of the shortest geodesic curve joining
the points.

I was naively expecting a nice solution, akin to the "great circles"
on a sphere. I was soon disabused of this notion.

A big thanks to all who replied. Here is a summary of the responses.

I found two approaches to this problem.

One approach involves computing a discretized approximation to a
geodesic. This works on any ellipsoid. The first two software
pointers follow this approach. As far as I can tell, all the other
references follow the second approach.

The second approach is designed for the Earth, exploiting two special
features: (1) it is an ellipsoid of revolution, and (2) it is nearly
spherical. These properties allow one to construct a solution as a
power series in the small "flattening" parameter. One truncates the
series depending upon the accuracy required.

I was looking for a solution that works for any ellipsoid. Most of
what follows is geodesy-centric, so I have only explored a handful of
the suggestions listed below. Also --- as one person noted --- a web
search with key words of "ellipsoid & distance & arc" will generate a
list of hundreds of sites. (All dealing with the Earth, I might add).

What follows is heavily cut'n'pasted from the responses or from web
pages. Don't take these as advice or endorsement from me -- these are
not my words below!

Available Software on the net:
(Warning: I did not check the validity of these URLs when I posted
the 2/7/08 update. - Bob Chamberlain.)

http://www.magic-software.com/gr_surf.htm (Who's computer is this?)

The code here computes a polygonal approximation to a geodesic and
then refines it until the geodesic curvature vanishes at each vertex
on the path.

http://www.netlib.org/ode/geodesic/ (Who's computer is this?)

Similar to the above, except that it actually works on any manifold --
you supply a routine to compute the metric at any point, etc.

ftp://kai.er.usgs.gov/pub/PROJ.4/ (Who's computer is this?)

Well-proven code, forward and inverse problem.

ftp://ftp.ngs.noaa.gov/pub/pcsoft/for_inv.3d (Who's computer is this?)

From the (U.S.) National Geodetic Survey:

INVERSE/FORWARD3D (Version 1.0)
Comprises four programs - Inverse (Version 2.0) which computes the
geodetic azimuth and distance between two points, given their
geographic positions; Forward (Version 2.0) which computes the
geographic position of a point, given the geodetic azimuth and
distance from a point with known geographic position; and the
three-dimensional versions of these programs . INVERS3D (Version 1.0)
and FORWRD3D (Version 1.0), which include the height component.

ftp://mapping.usgs.gov/pub/software/current_software/w5501 (Who's computer is this?)

This program will solve either the geodetic position or inverse
problems in any quadrant of the Earth using the parameters of one of
five commonly-used ellipsoids.

http://www.globalserve.net/~nac/products.html (Who's computer is this?)

A product called NACNav (60USD/license) which can calculate the
shortest distance between two points anywhere on the earth surface and
the angle between the direction and the magnetic north (determined by
local magnetic declination).

Suggested References

If you need very high accuracy, I suggest reading B.R. Bowring, "Total
Inverse Solution for the Geodesic and Great Elliptic", Survey Review,
33, 261 (July 1996).

If you are satisfied with the relative error of the square of the
Earth's flattening, then see J. Meeus, Astronomical Algorithms, 1991.

Two people recommended: Bomford, G., 1952, Geodesy: London, England,
Oxford University Press.

Clark, D., 1963, Plane and Geodetic Surveying, II: London, England,
Constable & Co., Ltd.

Hosmer, G.L., 1930, Geodesy: New York, New York, John Wiley & Sons, Inc.

Lambert, W.D. and Swick, C.H.,1935, Formulas and Tables for the
Computation of Geodetic Positions on the International Ellipsoid:
U.S. Coast and Geodetic Survey Special Publication No. 200.

U.S.C.& G.S., Formulas and Tables for the Computation of Geodetic
Positions, U.S. Coast and Geodetic Survey Special Publication No. 8.

"Direct and Inverse Solutions of Geodesics on the Ellipsoid with
Application of Nested Equations", T. Vincenty, Survey Review 22, April
1975.

Thomas, Paul D., 1965, Geodesic arc-length on the reference ellipsoid
to second-order terms in the flattening, Journal of Geophysical
Research, vol.70(14), 3331-3340.



========================

This answer was prepared by Robert G. Chamberlain of Caltech (JPL),
<rgc@jpl.nasa.gov>, and reviewed on the comp.infosystems.gis newsgroup
in Oct 1996. It was revised in November 1997 and February 1998.
Formatting was updated and the hyperlinks were checked in January
2000. Minor cosmetic changes were made and hyperlinks were updated
in February 2001. Some of the hyperlinks appeared to be obsolete when
checked on 7 February 2008.

The inverse tangent formula and the pointer to Ed Williams' formulas
were added in November 1997, and the "min(1,sqrt(a))" bulletproofing
was removed from the haversine formula.

Mikael Rittri, pointed out that the
simple approximation to the radius of the Earth estimated the distance
between the surface and the center, rather than the radius of
curvature. This approximation (and the associated warning) were
removed in February 1998; the azimuth-averaged radius was offered in
its stead, as he suggested. Mikael also noted that the inverse tangent
formula does not need an adjustment for quadrant, which allowed
simplification of that formula. He also convinced me that it _might_
be possible for the "sqrt(a)" term in the haversine formula to exceed
1 due to round-off errors, so I reinstated the "min(1,sqrt(a))"
bulletproofing, ugly though it is.

Steven Michael Robbins' discussion of distance computation on an
ellipsoid was added in May 1999.

The pre-geometry summary was added in January 2000 in response to a
request from Karen Kast, who was seeking information that might be
useful to a 6th grade student doing a science project.

The discussions about the radius of the Earth posted by Jacquelin
Hardy on 6 February 2008 and Paul Cooper on 7 February 2008 were
added on 7 February 2008. I also removed the inclusion of personal
email addresses (except that I left my own).

#####



Where you can get the newsgroup comp.infosystems.gis