Площадь поверхности покрыта ненулевыми значениями в сетке двоичных данных
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
и поэтому ограничивается только гранулярностью сотовых данных.