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

Можно преобразовать данные о векторе долготы широты в сетку в любом разрешении, вы принимаете решение сделать растровую базовую карту или слой сетки. Определенные инструменты Mapping Toolbox™ GUI помогают вам сделать часть этого, но можно также выполнить преобразования векторной графики в растровую из командной строки. Основной функцией для gridding векторных данных является vec2mtx, который выделяет линии сетке любого размера, вы указываете, отмечая линии 1 с и незанятые ячейки сетки с 0s. Сетка содержит, удваивается, но если вы хотите логическую сетку (см. Сетки Данных как Логические переменные), бросьте результат быть логическим массивом. Видеть пример, представление Creating Data Grids from Vector Data.

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

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

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

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

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

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

gridDensity = 40;
[inGrid, inRefVec] = vec2mtx(inLat, inLon, gridDensity);
whos
  Name               Size              Bytes  Class     Attributes

  gridDensity        1x1                   8  double              
  inGrid           165x137            180840  double              
  inLat              1x626              5008  double              
  inLon              1x626              5008  double              
  inRefVec           1x3                  24  double              
  indiana            1x1               11324  struct              

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

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

Настройте пределы карты.

[latlim, lonlim] = limitm(inGrid, inRefVec);
setm(gca, 'Flatlimit', latlim, 'FlonLimit', lonlim)
tightmap

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

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

Очистите и перерисуйте карту с помощью заполненной сетки.

meshm(inGrid3, inRefVec)

Постройте исходные векторы на сетке, чтобы видеть, как хорошо данные были растеризированы. Можно использовать инструмент Zoom на окне рисунка, чтобы исследовать результаты gridding более тесно.

plotm(inLat, inLon,'k')