Calculating area enclosed by arbitrary polygon on Earth's surface

Paul A. Hoadley picture Paul A. Hoadley · Aug 27, 2009 · Viewed 26.2k times · Source

Say I have an arbitrary set of latitude and longitude pairs representing points on some simple, closed curve. In Cartesian space I could easily calculate the area enclosed by such a curve using Green's Theorem. What is the analogous approach to calculating the area on the surface of a sphere? I guess what I am after is (even some approximation of) the algorithm behind Matlab's areaint function.

Answer

tom10 picture tom10 · Aug 27, 2009

There several ways to do this.

1) Integrate the contributions from latitudinal strips. Here the area of each strip will be (Rcos(A)(B1-B0))(RdA), where A is the latitude, B1 and B0 are the starting and ending longitudes, and all angles are in radians.

2) Break the surface into spherical triangles, and calculate the area using Girard's Theorem, and add these up.

3) As suggested here by James Schek, in GIS work they use an area preserving projection onto a flat space and calculate the area in there.

From the description of your data, in sounds like the first method might be the easiest. (Of course, there may be other easier methods I don't know of.)

Edit – comparing these two methods:

On first inspection, it may seem that the spherical triangle approach is easiest, but, in general, this is not the case. The problem is that one not only needs to break the region up into triangles, but into spherical triangles, that is, triangles whose sides are great circle arcs. For example, latitudinal boundaries don't qualify, so these boundaries need to be broken up into edges that better approximate great circle arcs. And this becomes more difficult to do for arbitrary edges where the great circles require specific combinations of spherical angles. Consider, for example, how one would break up a middle band around a sphere, say all the area between lat 0 and 45deg into spherical triangles.

In the end, if one is to do this properly with similar errors for each method, method 2 will give fewer triangles, but they will be harder to determine. Method 1 gives more strips, but they are trivial to determine. Therefore, I suggest method 1 as the better approach.