Given the latitude and longitude of cities 'A' and 'B', the following line of MATLAB code will calculate the distance between the two coordinates "as the crow flies" (technically, the "great circle distance"), in kilometers:

*DistanceKilometers = round(111.12 * acosd(cosd(LongA - LongB) * cosd(LatA) * cosd(LatB) + sind(LatA) * sind(LatB)));*

Note that latitude and longitude are expected as decimal degrees. If your data is in degrees/minutes/seconds, a quick conversion will be needed.

I've checked this formula against a second source and quickly verified it using a few pairs of cities:

*% 'A' = New York*

*% 'B' = Atlanta*

*% Random on-line reference: 1202km*

*LatA = 40.664274;*

*LongA = -73.9385;*

*LatB = 33.762909;*

*LongB = -84.422675;*

*DistanceKilometers = round(111.12 * acosd(cosd(LongA - LongB) * cosd(LatA) * cosd(LatB) + sind(LatA) * sind(LatB)))*

DistanceKilometers =

1202

*% 'A' = New York*

*% 'B' = Los Angeles*

*% Random on-line reference: 3940km (less than 0.5% difference)<0 .5="" br="" difference="">*

*LatA = 40.664274;*

*LongA = -73.9385;*

*LatB = 34.019394;*

*LongB = -118.410825;*

*DistanceKilometers = round(111.12 * acosd(cosd(LongA - LongB) * cosd(LatA) * cosd(LatB) + sind(LatA) * sind(LatB)))*

DistanceKilometers =

3955

**References:**

"How Far is Berlin?", by Alan Zeichick, published in the Sep-1991 issue of "Computer Language" magazine. Note that Zeichick credits as his source an HP-27 scientific calculator, from which he reverse-engineered the formula above.

"Trigonometry DeMYSTiFieD, 2nd edition", by Stan Gibilisco (ISBN: 978-0-07-178024-7)

## No comments:

Post a Comment