| Mapping Toolbox™ | ![]() |
Surface area covered by nonzero values in binary data grid
a = areamat(BW,refvec)
a = areamat(BW,refvec,ellipsoid)
[a, cellarea] = areamat(...)
a = areamat(BW,refvec) returns the surface area covered by the elements of the binary regular data grid BW, which contain the value 1 (true). BW can be the result of a logical expression such as BW = (topo > 0). refvec is a 1-by-3 referencing vector containing elements [cells/degree north-latitude west-longitude] with latitude and longitude limits in degrees. The output a expresses surface area as a fraction of the surface area of the unit sphere (4*pi), so the result ranges from 0 to 1.
a = areamat(BW,refvec,ellipsoid) uses the input ellipsoid vector to describe the sphere or reference ellipsoid. ellipsoid has the form [semi-major-axis-length, eccentricity]. The units of the output, a, are the square of the length units in which the semi-major axis is provided. For example, if ellipsoid is replaced with almanac('earth','wgs84','kilometers'), then a is in square kilometers.
[a, cellarea] = areamat(...) returns a vector, cellarea, describing the area covered by the data cells in BW. Because all the cells in a given row are exactly the same size, only one value is needed per row. Therefore cellarea has size M-by-1, where M = size(BW,1) is the number of rows in BW.
Given a regular data grid that is a logical 0-1 matrix, the areamat function returns the area corresponding to the true, or 1, elements. The input data grid can be a logical statement, such as (topo>0), which is 1 everywhere that topo is greater than 0 meters, and 0 everywhere else. This is an illustration of that matrix:

This calculation is based on the areaquad function and is therefore limited only by the granularity of the cellular data.
load topo
area = areamat((topo>127),topolegend)
area =
0.2411Approximately 24% of the Earth has an altitude greater than 127 meters. What is the surface area of this portion of the Earth in square kilometers if a spherical ellipsoid is assumed? (Use the almanac function with the sphere as its reference body.)
earthgeoid = almanac('earth','ellipsoid','km','sphere');
area = areamat((topo>127),topolegend,earthgeoid)
area =
1.2299e+08To illustrate the cellarea output, consider a smaller map:
BW = ones(9,18);
refvec = [.05 90 0] % each cell 20x20 degrees
[area,cellarea] = areamat(BW,refvec)
area =
1.0000
cellarea =
0.0017
0.0048
0.0074
0.0091
0.0096
0.0091
0.0074
0.0048
0.0017Each entry of cellarea represents the portion of the unit sphere's total area a cell in that row of BW would contribute. Since the column extends from pole to pole in this case, it is symmetric.
![]() | areaint | areaquad | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |