Затенение рельефа поверхности

Вы можете сделать размерные монохромные затененно-рельефные карты с функцией surflm, что аналогично MATLAB® surfl функция. Эффект surflm аналогичен использованию огней, но функция моделирует само освещение (с одним «источником света», который вы задаете, когда вы вызываете его, но не можете изменить положение) путем взвешивания нормалей поверхности, а не с помощью световых объектов.

Затененные карты рельефа этого типа обычно отображаются двумерно, а не в виде перспективных отображений. surflm функция работает с любой проекцией, кроме globe.

surflm функция принимает только геолокированные сетки данных. Напомним, однако, что регулярные сетки данных являются подмножеством геолокированных сеток данных, в которые они могут быть преобразованы с помощью geographicGrid функция. Следующий пример иллюстрирует эту процедуру.

Создайте монохромную затененную карту рельефа

Симулируйте один источник света на рисунке, используя surflm. Во-первых, загрузите повышение данные и географические камеры ссылки объект для Корейского полуострова. Импортируйте векторные данные береговой линии с помощью shaperead. Создайте карту с соответствующими пределами широты и долготы с помощью worldmap.

load korea5c
latlim = korea5cR.LatitudeLimits;
lonlim = korea5cR.LongitudeLimits;
coastline = shaperead('landareas',...
    'UseGeoCoords', true,...
    'BoundingBox', [lonlim' latlim']);

worldmap(latlim,lonlim)

Отображение данных о береговой линии с помощью geoshow.

geoshow(coastline,'FaceColor','none')

Преобразуйте регулярную сетку данных в геолокированную сетку данных с помощью geographicGrid функция. Затем сгенерируйте затененную карту подреза с помощью surflm. По умолчанию направление подсветки 45 ° против часовой стрелки от направления обзора. Поэтому источник света находится на юго-востоке. Измените палитру на монохроматическую 'copper'.

[klat,klon] = geographicGrid(korea5cR);
s = surflm(klat,klon,korea5c);
colormap('copper')

Очистите карту. Затем отобразите заштрихованную карту рельефа с другим источником света путем определения азимута как 135 ° и повышения как 60 °. Поверхность освещается и имеет новый символ, потому что она освещается ближе к верхней части и с другого направления.

clmo(s)
s = surflm(klat,klon,korea5c,[135 60]);

Переместите свет на северо-запад, задав азимут равным -135º. Опустите свет до 40º над горизонтом. Более низкий источник света уменьшает общее отражение поверхности, если смотреть сверху. Поэтому задайте вектор 1 на 4 постоянных отражений, которые описывают относительные вклады окружающего света, диффузного отражения, зеркального отражения и коэффициента зеркального блеска.

clmo(s);
ht = surflm(klat,klon,korea5c,[-135 30],[0.65 0.4 0.3 10]);

Горные хребты, идущие с северо-востока на юго-запад, примерно перпендикулярны источнику света. Поэтому эти параметры демонстрируют соответствующую подсветку для местности.

Монохроматическая окраска в этом примере не дифференцирует землю от воды. Для примера, который отличает землю от воды, см. «Цветной поверхностный затененный рельеф».