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