Построение геолокированной сетки на регулярной сетке данных с помощью отображения текстур

В этом примере показано, как создать новую регулярную сетку данных, которая охватывает область геолокированной сетки данных, а затем встройте значения цветовых данных в новую матрицу. Новая матрица, возможно, должна иметь несколько более низкое разрешение, чем исходное, чтобы гарантировать, что каждая камера в новой карте получит значение. Пример объединяет различные сетки данных путем создания новой регулярной сетки данных, которая охватывает область 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)

Figure contains an axes. The axes contains an object of type surface.

Применить L1 матрица как текстурная карта непосредственно на поверхность с помощью set функция. Область, не охваченная [lt1,lg1,map1] геолокированная сетка данных выглядит темно-синей, потому что соответствующие элементы L1 были установлены на -Inf.

h.CData = L1;
h.FaceColor = 'texturemap';
material shiny 
camlight
lighting gouraud
axis tight

Figure contains an axes. The axes contains an object of type surface.