Documentation Center |
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,units) uses the units defined by the input string units. If omitted, default units of degrees are assumed.
area = areaint(lat,lon,ellipsoid,units) uses both the inputs ellipsoid and units in the calculation.
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.0833This 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.0792Now, 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