Преобразование векторных данных в растровый формат

Можно преобразовать данные векторы широта-долгота в сетку при любом разрешении, которое вы выбираете, чтобы сделать растровую карту основы или слой сетки. Некоторые инструменты Mapping Toolbox™ GUI помогают вам сделать кое-что из этого, но можно также выполнить преобразование вектора в растр из командной строки. Основной функцией для данных вектора сетки является vec2mtx, который выделяет линии для сетки любого размера, который вы указываете, помечая линии 1с и незанятые камеры сетки 0с. Сетка содержит двойные значения, но если вы хотите, чтобы логическая сетка (см. «Сетки данных как логические переменные») приводила результат к логическому массиву. Чтобы увидеть пример, просмотрите Создание сетки данных из векторных данных.

Если векторные данные состоят из многоугольников ( закрашенных фигур), сетчатые контуры все являются пустыми. Вы можете дифференцировать их, используя encodem функция, вызывающая его с массивом строк, столбцов и начальных значений, чтобы создать новую сетку, содержащую полигональные области, заполненные начальными значениями, чтобы заменить двоичные значения, сгенерированные vec2mtx. Чтобы увидеть пример, просмотрите Rasterize Polygons интерактивно.

Создание сетки данных из векторных данных

В этом примере показано, как преобразовать векторные данные в растровые данные с помощью vec2mtx функция. В примере используются закрашенные фигуры данных для Индианы из usastatehi shapefile. Для получения дополнительной информации смотрите Преобразование векторных данных в растровый формат.

Использование shaperead для получения данных закрашенной фигуры для контура.

indiana = shaperead('usastatehi.shp',...
    'UseGeoCoords', true,...
    'Selector', {@(name)strcmpi('Indiana',name),'Name'});
inLat = indiana.Lat;
inLon = indiana.Lon;

Преобразуйте векторы в регулярную сетку данных с помощью vec2mtx. Установите плотность сетки в 40 камеры на степень. Растеризуйте контур и сгенерируйте для него географический объект растровой привязки.

gridDensity = 40;
[inGrid,R] = vec2mtx(inLat,inLon,gridDensity);

Составьте карту сетки данных в контрастных цветах.

figure
axesm eqdcyl
meshm(inGrid,R)
colormap jet(4)

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

Установите пределы карты.

setm(gca,'Flatlimit',R.LatitudeLimits,'FlonLimit',R.LongitudeLimits)
tightmap

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

Задайте точку seed и начальное значение. Чтобы заполнить (перекодировать) внутреннюю часть Индианы, вам нужна seed точка (которая должна быть идентифицирована строкой и столбцом) и seed значение (должно быть выделено всем камерам в многоугольник). Выберите среднюю строку и столбец сетки и выберите значение индекса 3, чтобы идентифицировать территорию при вызове encodem чтобы сгенерировать новую сетку. Последний аргумент (1) идентифицирует код для граничных камер, где заполнение должно остановиться.

inPt = round([size(inGrid)/2,3]);
inGrid3 = encodem(inGrid,inPt,1);

Очистить и перерисовать карту можно используя заполненную сетку.

meshm(inGrid3,R)

Figure contains an axes. The axes contains 2 objects of type surface.

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

plotm(inLat,inLon,'k')

Figure contains an axes. The axes contains 3 objects of type surface, line.