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 будет заполнено полностью 0s если '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 = readgeotable("usastatelo.shp");
T = geotable2table(states,["Latitude" "Longitude"]);
[lat,lon] = polyjoin(T.Latitude',T.Longitude');

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

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