[R-sig-Geo] Computing polygon area with decimal degree coordinates

Adrian Baddeley adrian at maths.uwa.edu.au
Fri Jun 2 04:01:11 CEST 2006

I may be misunderstanding the discussion about polygon area,

At the risk of restating a well-known fact, it's not mathematically complicated
to compute the area of a polygonal region (consisting of one or more separate
regions bounded by polygons, possibly including holes) on any oriented two-dimensional 
surface (a plane, a sphere, a blob) using any measure of area, provided we
have the following information:
     - a list of all edges, in any order, oriented so that the interior is to the left of each edge
      (the edges are traversed anticlockwise on the exterior,
      clockwise for a hole, etc);
     - the area (in the sense you want) of the trapezium bounded by an edge,
       meridians through the two endpoints, and a fixed baseline which is outside the polygon. 

No information is required about how the edges fit together.
No decomposition or geometric manipulation of the polygon is required,
because area is additive with respect to sets. 

For example in the flat plane, we can define meridians to be vertical lines
and the baseline to be the x-axis. Just shift the polygon so that it is above
the x-axis. Then associate with each edge the trapezium bounded by the edge,
two vertical lines that go through the endpoints, and the x-axis. Compute the area
of each trapezium. Add these areas with the appropriate sign, and you get the 
polygon area. This is just the `discrete Green's formula'. [This algorithm is
implemented in package 'spatstat'.]

On a sphere, or a sphere-like surface, in any coordinate system, 
define meridians to be the lines of constant longitude coordinate, and the baseline can be
the south pole (a point, but that's OK). Then all we need to know is the 
area (in the sense we want) of the triangular region delineated by an edge
and the two meridians that stretch from the edge's endpoints to the 
south pole. Sum these areas (with the appropriate sign) and we get the 
polygon area. [Other choices of baseline can be used if you only have
a local coordinate system.]

Adrian Baddeley

More information about the R-sig-Geo mailing list