В этом примере показано, как создать новую регулярную сетку данных, которая охватывает область геолокированной сетки данных, а затем встройте значения цветовых данных в новую матрицу. Новая матрица, возможно, должна иметь несколько более низкое разрешение, чем исходное, чтобы гарантировать, что каждая камера в новой карте получит значение. Пример объединяет различные сетки данных путем создания новой регулярной сетки данных, которая охватывает область z-данных геолокированной сетки данных. Этот подход имеет то преимущество, что для регулярных сетей данных доступно больше вычислительных функций, чем для геолокированных таковых. Цветовые и вертикальные сетки не должны быть одинаковыми по размеру. Если разрешения двух сеток данных различны, можно создать поверхность как трехмерную карту повышения, а затем применить цвета как текстурную карту. Вы делаете это, задавая поверхность CData
свойство, содержащее цветовую матрицу и устанавливающее цвет грани поверхности равным 'texturemap'
.
Загрузка повышения растровых данных и географических камер ссылки объекта из topo60c.mat
. Получите отдельные переменные, содержащие данные местности из mapmtx.mat
.
load topo60c load mapmtx lt1 lg1 map1
Определите географические пределы геолокированной сетки, которая была загружена из mapmtx
.
latlim(1) = 2*floor(min(lt1(:))/2); lonlim(1) = 2*floor(min(lg1(:))/2); latlim(2) = 2*ceil(max(lt1(:))/2); lonlim(2) = 2*ceil(max(lg1(:))/2);
Обрезать глобальные данные о повышении до прямоугольной области, охватывающей меньшую сетку.
[topo1,topo1R] = geocrop(topo60c,topo60cR,latlim,lonlim);
Распределите регулярную сетку, заполненную равномерно -Inf
, для получения текстурных данных.
L1R = georefcells(latlim,lonlim,2,2); L1 = zeros(L1R.RasterSize); L1 = L1 - Inf;
Перезаписать L1
использование imbedm
, преобразовав его из геолокированной сетки в регулярную сетку, в которой значения происходят от дискретного лапласиана повышения сетки map1
.
L1 = imbedm(lt1,lg1,del2(map1),L1,L1R);
Настройте оси карты с проекцией Миллера и используйте meshm
для отображения обрезанных данных. Отобразите рисунок как вид 3-D с азимута 20 степеней и высоты 30 степеней и преувеличьте вертикальную размерность в 200 раз. Рельеф поверхности и окраска представляют собой топографическое повышение.
figure axesm miller h = meshm(topo1,topo1R,size(topo1),topo1); view(20,30) daspectm('m',200)
Применить L1
матрица как текстурная карта непосредственно на поверхность с помощью set
функция. Область, не охваченная [lt1,lg1,map1]
геолокированная сетка данных выглядит темно-синей, потому что соответствующие элементы L1 были установлены на -Inf
.
h.CData = L1; h.FaceColor = 'texturemap'; material shiny camlight lighting gouraud axis tight