Площадь поверхности покрыта ненулевыми значениями в сетке двоичных данных
A = areamat(BW,R)
A = areamat(BW,refvec,ellipsoid)
[A, cellarea] = areamat(...)
A = areamat(BW,R) возвращает площадь поверхности, покрытую элементами бинарной обычной сетки данных BW, которые содержат значение 1 (true). BW может быть результатом логического выражения, такого как BW = (topo > 0). R может быть географическим растровым объектом ссылки, вектором ссылки или матрицей ссылки.
Если R является географическим растровым объектом ссылки, его свойство RasterSize должно быть сопоставимо с size(BW), и его RasterInterpretation должен быть 'cells'.
Если R является вектором ссылки, это должно быть 1 3 с элементами:
[cells/degree northern_latitude_limit western_longitude_limit]
Если R является матрицей ссылки, это должно быть 3 2 и преобразовать растровые индексы строки и столбца к или от географических координат согласно:
[lon lat] = [row col 1] * R
Если R является матрицей ссылки, он должен задать (невращательный, нескошенный) отношение, в котором каждый столбец сетки данных падает вдоль меридиана и каждой строки падения вдоль параллели. Интерполяция ближайшего соседа используется по умолчанию. NaN возвращен для точек вне пределов сетки или для которого lat или lon содержат NaN. Все углы находятся в модулях степеней.
Вывод A выражает площадь поверхности как часть площади поверхности сферы единичного радиуса (4*pi), таким образом, диапазоны результата от 0 до 1.
A = areamat(BW,refvec,ellipsoid) вычисляет площадь поверхности на эллипсоид или сферу, заданную входом ellipsoid, который может быть referenceSphere, referenceEllipsoid, или объектом oblateSpheroid или вектором формы [semimajor_axis eccentricity]. Модули вывода, A, являются квадратом единиц длины, в которых обеспечивается полуглавная ось. Например, если ellipsoid заменяется wgs84Ellipsoid('kilometers'), то A находится в квадратных километрах.
[A, cellarea] = areamat(...) возвращает вектор, cellarea, описывая область, покрытую по условию ячейки BW. Поскольку все ячейки в данной строке являются точно тем же размером, только одно значение необходимо на строку. Поэтому cellarea имеет размер M-by-1, где M = size(BW,1) является количеством строк в BW.
load topo
area = areamat((topo>127),topolegend)
area =
0.2411Приблизительно 24% Земли имеют высоту, больше, чем 127 метров. Площадь поверхности этого фрагмента Земли в квадратных километрах, если сферический эллипсоид:
earth = referenceSphere('earth', 'km');
area = areamat((topo>127),topolegend,earth)
area =
1.2299e+08Чтобы проиллюстрировать cellarea вывод, рассмотрите меньшую карту:
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.0017Каждая запись cellarea представляет фрагмент общей площади сферы единичного радиуса, которую внесла бы ячейка в той строке BW. Поскольку столбец расширяет от полюса до полюса в этом случае, это симметрично.
Учитывая обычную сетку данных, которая является логической матрицей 0-1, функция areamat возвращает область, соответствующую истине, или 1, элементы. Сетка входных данных может быть логическим оператором, таким как (topo>0), который равняется 1 везде, что topo еще больше, чем 0 метров, и 0 везде. Это - рисунок той матрицы:

Это вычисление основано на функции areaquad и поэтому ограничивается только гранулярностью сотовых данных.