Можно преобразовать данные о векторе долготы широты в сетку в любом разрешении, вы принимаете решение сделать растровую базовую карту или слой сетки. Определенные инструменты 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')