exponenta event banner

vec2mtx

Преобразование векторов широты-долготы в обычную сетку данных

Синтаксис

[Z,R] = vec2mtx(lat,lon,density)
[Z,R] = vec2mtx(lat,lon,density,latlim,lonlim)
[Z,R] = vec2mtx(lat,lon,Z1,R1)
[Z,R] = vec2mtx(...,'filled')

Описание

[Z,R] = vec2mtx(lat,lon,density) создает регулярную сетку данных Z из векторных данных, помещая их в ячейки сетки, пересекаемые вектором, и обнуляет их в другом месте. R - объект растровой ссылки для вычисляемой сетки. lat и lon - векторы одинаковой длины, содержащие географические местоположения в единицах градусов. density указывает количество ячеек сетки на единицу широты и долготы (значение 10 указывает, например, 10 ячеек на градус) и должно иметь скалярное значение. Всякий раз, когда имеется пространство, на каждой из четырех сторон сетки включается буфер из двух ячеек сетки. Буфер уменьшается по мере необходимости, чтобы поддерживать широтные пределы в пределах [-90 90] и поддерживать разницу в пределах долготы от более 360 градусов.

[Z,R] = vec2mtx(lat,lon,density,latlim,lonlim) использует двухэлементные векторы latlim и lonlim для определения пределов широты и долготы сетки.

[Z,R] = vec2mtx(lat,lon,Z1,R1) использует ранее существовавшую сетку данных Z1, с географической привязкой R1, для определения пределов и плотности выходной сетки. R1 может быть ссылочным вектором, ссылочной матрицей или объектом географической растровой ссылки.

Если R1 - объект географической растровой ссылки, RasterSize свойство должно быть совместимым с size(Z1) и его RasterInterpretation должно быть 'cells'.

Если R1 является ссылочным вектором, он должен быть вектором 1 на 3, содержащим следующие элементы:

[cells/degree northern_latitude_limit western_longitude_limit]

Если R1 является ссылочной матрицей, она должна быть 3 на 2 и преобразовывать индексы растровых строк и столбцов в географические координаты или из них в соответствии с этим уравнением:

[lon lat] = [row col 1] * R1

Матрица должна определять (без вращения, без перекоса) соотношение, в котором каждый столбец сетки данных падает вдоль меридиана, а каждая строка - вдоль параллели.

При таком синтаксисе выходные данные R равно R1и может быть ссылочным объектом, вектором или матрицей.

[Z,R] = vec2mtx(...,'filled'), где lat и lon сформировать один или несколько замкнутых многоугольников (с NaN-separators), заполняет область за пределами многоугольников значением два вместо нуля.

Примечания

Пустой lat,lon массивы вершин приведут к ошибке, если не будут явно указаны пределы сетки (через latlim,lonlim или Z1,R1). В случае явных ограничений, Z будет полностью заполнен 0, если 'filled' параметр опущен и 2s, если он включен.

Возможно применение vec2mtx к наборам многоугольников, которые без перекрытия покрывают область, как в примере 1 ниже, но с использованием 'filled' с многоугольниками, которые фактически перекрываются, может привести к путанице относительно того, какие области находятся внутри, а какие снаружи.

Примеры

свернуть все

Преобразование многоугольников широты-долготы в обычную сетку данных и отображение в виде карты.

states = shaperead('usastatelo', 'UseGeoCoords', true);
lat = [states.Lat];
lon = [states.Lon];
[Z,R] = vec2mtx(lat,lon,5,'filled');
figure 
worldmap(Z,R)
geoshow(Z,R,'DisplayType','texturemap')
colormap(flag(3))

Объединение двух отдельных вызовов для vec2mtx для создания 4-цветной растровой карты, показывающей внутренние участки суши, береговые линии, океаны и реки мира.

load coastlines
[Z,R] = vec2mtx(coastlat,coastlon,1, ...
                [-90 90],[-90 270],'filled');

rivers = shaperead('worldrivers.shp','UseGeoCoords',true);
A = vec2mtx([rivers.Lat],[rivers.Lon],Z,R);
Z(A == 1) = 3;
figure
worldmap(Z,R)
geoshow(Z,R,'DisplayType','texturemap')
colormap([.45 .60 .30; 0 0 0; 0 0.5 1; 0 0 1])

Импорт контуров штатов США.

states = shaperead('usastatelo', 'UseGeoCoords', true);
lat = [states.Lat];
lon = [states.Lon];

Выберите географические пределы.

latlim = [  15  75];
lonlim = [-190 -65];

Задайте сетку с 5 ячейками на градус.

density = 5;

Вычислить размер растра. (M и N оба получаются целыми числами.)

M = density * diff(latlim);
N = density * diff(lonlim);

Создайте объект Geographic Raster Reference.

R = georasterref('RasterSize', [M N], ...
    'ColumnsStartFrom', 'north', 'Latlim', latlim, ...
		'Lonlim', lonlim);

Создание пустой сетки, совместимой с R по размеру. vec2mtx требуется сетка данных в качестве входных данных.

Z = zeros(R.RasterSize);

Переписать Z с новой сеткой, включающей контуры состояния и интерьеры.

Z = vec2mtx(lat, lon, Z, R, 'filled');

Постройте график географической сетки.

figure; worldmap(Z, R);
geoshow(Z, R, 'DisplayType', 'texturemap')
colormap(flag(3))

Вопросы совместимости

развернуть все

В R2021a изменилось поведение

См. также

Функции

Объекты

Представлен до R2006a