areamat

Площадь поверхности покрыта ненулевыми значениями в сетке двоичных данных

Синтаксис

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

Смотрите также

|

Представлено до R2006a