gradientm

Вычислите градиент, наклон и аспект сетки данных

Синтаксис

[ASPECT, SLOPE, gradN, gradE] = gradientm(Z, R)
[...] = gradientm(lat, lon, Z)
[...] = gradientm(..., ellipsoid)
[...] = gradientm(lat, lon, Z, ellipsoid, units)

Описание

[ASPECT, SLOPE, gradN, gradE] = gradientm(Z, R) вычисляет наклон, аспект и северные и восточные компоненты градиента для обычной сетки данных Z относительно ссылочного R. Если сетка содержит повышения в метрах, получившийся аспект и наклон находятся в модулях степеней по часовой стрелке от севера и от горизонтали. Северные и восточные компоненты градиента являются изменением в переменной карты на метр расстояния в северных и восточных направлениях. Вычисление использует конечные разности для переменной карты на наземном эллипсоиде по умолчанию.

R может быть географическим растровым объектом ссылки, вектором ссылки или матрицей ссылки.

Если R является географическим растровым объектом ссылки, его свойство RasterSize должно быть сопоставимо с size(Z).

Если 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. Все углы находятся в модулях степеней.

[...] = gradientm(lat, lon, Z) делает вычисление для определенной геолокацию сетки данных. lat и lon, широты и долготы точек геолокации, в градусах.

[...] = gradientm(..., ellipsoid) использует ссылочный эллипсоид, заданный входом ellipsoid, который может быть referenceSphere, referenceEllipsoid, или объектом oblateSpheroid или вектором формы [semimajor_axis eccentricity]. Если карта содержит повышения в тех же единицах длины как полуглавная ось эллипсоида, наклон и аспект находятся в модулях степеней. Эта форма вызова является самой полезной для вычислений на телах кроме земли.

[...] = gradientm(lat, lon, Z, ellipsoid, units) задает угловые модули входных параметров широты и долготы. Значением по умолчанию является 'degrees'. Для карт повышения в тех же модулях как ellipsoid(1) получившийся наклон и аспект находятся в заданных модулях. Компоненты градиента являются изменением в переменной карты на единицу длины, с помощью той же единицы длины в качестве полуглавной оси эллипсоида.

Примеры

свернуть все

Вычислите и отобразите наклон для 30 арксекунд (10 км) данные о повышении Кореи. Наклоны в Японском море являются до 12 градусов в этом разрешении сетки.

load korea
[aspect,slope,gradN,gradE] = gradientm(map,refvec);
worldmap(slope,refvec)
geoshow(slope,refvec,'DisplayType','texturemap')
cmap = cool(10);
demcmap('inc',slope,1,[],cmap)
colorbar
latlim = getm(gca,'maplatlimit');
lonlim = getm(gca,'maplonlimit');
land = shaperead('landareas',...
  'UseGeoCoords',true,'BoundingBox',[lonlim' latlim']);
geoshow(land,'FaceColor','none')

set(gca,'Visible','off')

Советы

Крупные цифровые модели повышения могут значительно недооценить локальный наклон. Для предыдущей карты точки повышения разделяются приблизительно на 10 километров. Ландшафт между двумя смежными точками моделируется как линейное изменение, в то время как фактический ландшафт может отличаться намного более резко по такому расстоянию.

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