Haversine and Vincenty are two algorithms for solving different
problems. Haversine computes the great circle distance on a sphere
while Vincenty computes the shortest (geodesic) distance on the surface of an
ellipsoid of revolution. So the answer to your question can be broken
into 2 parts:
- Do you want to compute the distance on a sphere on an ellipsoid?
- How accurate is Haversine or Vincenty at calculating the given problem?
For terrestrial applications, an ellipsoid of revolution is a reasonable
approximation to "mean sea level"; the error is ± 100 m. The
flattening of this ellipsoid is small, about 1/300, and so can be
approximated by a sphere (of equal volume, for example).
Great circle distances differ from geodesic distances by up to 0.5%. In
some applications, e.g., what's the distance from the Cape to Cairo?,
this error can be neglected. In other applications, e.g., determining
maritime boundaries, it is far too large (it's 5 m over a distance of 1
km). In general, you're safer using the geodesic distance.
If you're interested is distance traveled (by car, boat, or plane),
there are lots of constraints on the path taken and neither the great
circle or geodesic distance, which measure the length of shortest paths
on an ideal surface, would be appropriate.
On the question of whether the algorithms are accurate:
Haversine is accurate to round-off unless the points are nearly
antipodal. Better formulas are given in the
Wikipedia article on great-circle distances.
Vincenty is usually accurate to about 0.1 mm. However if the points are
nearly antipodal, the algorithm fails to converge and the error is
much larger. I give a better algorithm for solving the geodesic problem
in Algorithms for geodesics. See also the
Wikipedia article on geodesics on an ellipsoid.
Solving the geodesic problem is slower than solving for the
great-circle. But it's still very fast (about 1 μs per calculation), so
this shouldn't be a reason to prefer great circle distances.
ADENDUM
Here is the Java package which implements my algorithm
for finding geodesic distances. Unlike Vincenty's method, this is accurate
to round-off and converges everywhere.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…