
116
|
Chapter 3, Mapping Your World
#27 Calculate the Distance Between Points on the Earth’s Surface
HACK
Running this we get:
$ perl utm_example.pl -122.829027 38.402528
easting: 514928.556644582 northing: 4250491.70355821 zone: 10S
latitude: 38.4025280009781 longitude: -122.829026999993
For more on lat/long conversions, see “Work with Multiple Lat/Long For-
mats”
[Hack #25]
HACK
f
#27
Calculate the Distance Between Points on the
Earth’s Surface Hack #27
A little spherical trigonometry can go a long way.
The task of calculating the distance between two points on the Earth’s sur-
face is not quite as simple as it might seem. At first, we might be inclined to
dust off the well-known Pythagorean Theorem from high school algebra,
which calculates the length of the hypotenuse of a right triangle.
a
2
+ b
2
= c
2
If we have two points (x1, y1) and (x2, y2), then the difference between our
two x-coordinates and the difference between our two y-coordinates are the
legs of our right triangle, and the hypotenuse measures the distance between
the points:
c = sqrt( (x2 - x1)
2
+ (y2 - y1)
2
)
One hitch to this approach is that the distance between lines of longitude
decreases as you head toward the poles, which is a symptom of the fact that,
in contrast to our right triangle, the Earth isn’t flat. (Damn you, Columbus!)
Worse, over distances greater than 20 kilometers or so, the curvature of the
Earth turns our straight hypotenuse ...