Surface area of polygon on sphere or ellipsoid

`area = areaint(lat,lon)`

area = areaint(lat,lon,ellipsoid)

area = areaint(lat,lon,* units*)

area = areaint(lat,lon,ellipsoid,

`units`

`area = areaint(lat,lon)`

calculates
the spherical surface area of the polygon specified by the input vectors `lat`

and `lon`

.
The calculation uses a line integral approach. The output, `area`

,
is the fraction of surface area covered by the polygon on a unit sphere.
To supply multiple polygons, separate the polygons by NaNs in the
input vectors. Accuracy of the integration method is inversely proportional
to the distance between lat/lon points.

`area = areaint(lat,lon,ellipsoid)`

calculates
the surface area of the polygon on the ellipsoid or sphere defined
by the input `ellipsoid`

, which can be a `referenceSphere`

, `referenceEllipsoid`

, or `oblateSpheroid`

object, or a vector
of the form `[semimajor_axis eccentricity]`

. The
output, `area`

, is in squares units corresponding
to the units of `ellipsoid`

.

`area = areaint(lat,lon,`

uses
the units defined by the input string * units*)

`units`

`area = areaint(lat,lon,ellipsoid,`

uses
both the inputs * units*)

`ellipsoid`

and `units`

Consider the area enclosed by a 30º lune from pole to pole
and bounded by the prime meridian and 30ºE. You can use the function `areaquad`

to
get an exact solution:

area = areaquad(90,0,-90,30) area = 0.0833

This is 1/12 the spherical area. The more points used to define
this polygon, the more integration steps `areaint`

takes,
improving the estimate. This first attempt takes a point every 30º
of latitude:

lats = [-90:30:90,60:-30:-60]'; lons = [zeros(1,7), 30*ones(1,5)]'; area = areaint(lats,lons) area = 0.0792

Now, calculate a better estimate, with one point every 1º of latitude:

lats = [-90:1:90,89:-1:-89]'; lons = [zeros(1,181), 30*ones(1,179)]'; area = areaint(lats,lons) area = 0.0833

Was this topic helpful?