Можно преобразовать данные векторы широта-долгота в сетку при любом разрешении, которое вы выбираете, чтобы сделать растровую карту основы или слой сетки. Некоторые инструменты 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)
Установите пределы карты.
setm(gca,'Flatlimit',R.LatitudeLimits,'FlonLimit',R.LongitudeLimits) tightmap
Задайте точку seed и начальное значение. Чтобы заполнить (перекодировать) внутреннюю часть Индианы, вам нужна seed точка (которая должна быть идентифицирована строкой и столбцом) и seed значение (должно быть выделено всем камерам в многоугольник). Выберите среднюю строку и столбец сетки и выберите значение индекса 3, чтобы идентифицировать территорию при вызове encodem
чтобы сгенерировать новую сетку. Последний аргумент (1) идентифицирует код для граничных камер, где заполнение должно остановиться.
inPt = round([size(inGrid)/2,3]); inGrid3 = encodem(inGrid,inPt,1);
Очистить и перерисовать карту можно используя заполненную сетку.
meshm(inGrid3,R)
Постройте график исходных векторов на сетке, чтобы увидеть, как хорошо растрировались данные. Для более тщательного анализа результатов сетки можно использовать инструмент масштабирования окна рисунка.
plotm(inLat,inLon,'k')