I believe I mentioned Math::Trig to you. It is in the standard perl distribution. From the pod:
GREAT CIRCLE DISTANCES
You can compute spherical distances, called great circle distances, by
importing the "great_circle_distance" function:
use Math::Trig 'great_circle_distance'
$distance = great_circle_distance($theta0, $phi0, $theta1, $phi1, [, $rho]);
The great circle distance is the shortest distance between two points on a
sphere. The distance is in "$rho" units. The "$rho" is optional, it
defaults to 1 (the unit sphere), therefore the distance defaults to radi
ans.
If you think geographically the theta are longitudes: zero at the Green
which meridian, eastward positive, westward negative--and the phi are lat
itudes: zero at the North Pole, northward positive, southward negative.
NOTE: this formula thinks in mathematics, not geographically: the phi zero
is at the North Pole, not at the Equator on the west coast of Africa (Bay
of Guinea). You need to subtract your geographical coordinates from pi/2
(also known as 90 degrees).
$distance = great_circle_distance($lon0, pi/2 - $lat0,
$lon1, pi/2 - $lat1, $rho);
The pod goes on with an example.
After Compline, Zaxo
| [reply] |
| [reply] |
go north zero (or less) units ;P
~Particle *accelerates*
| [reply] [d/l] |
| [reply] |
I recently found the need to take two coordinates and find the distance between them
The distance between two points is usually given as the "great sphere" distance, which is calculated using spherical trigonometry. The direct distance is seldom used, since crows can't fly underground. A quick google search for "calculate great sphere distance" finds this page, which details the calculation.
| [reply] |
I'd also like to plug my own code, as I show four different methods of varying accuracys for finding the distance between two sets of coordinates (including Math::Trig), as well as providing some useful off site links.
C-. | [reply] |
I don't know about existing perl code, but my GIS FAQ has a detailed discussion on calculating the distance between two points on the globe. See Section 5.1. | [reply] |
many thanks! jcwren especially
"Sanity is the playground of the unimaginative"
-Unknown | [reply] |