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-диафрагмы), заполняет область вне многоугольников значением два вместо значения нуль.

Примечания

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

Возможно применение 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);

Создайте объект географической растровой ссылки.

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
Для просмотра документации необходимо авторизоваться на сайте