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