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]
или 3 2 ссылающаяся матрица, которая преобразовывает растровые индексы строки и столбца к/от географическим координатам согласно:
[lon lat] = [row col 1] * R1
Если R1 является матрицей ссылки, он должен задать (невращательный, нескошенный) отношение, в котором каждый столбец сетки данных падает вдоль меридиана и каждой строки падения вдоль параллели. С этим синтаксисом вывод R равен R1 и может быть ссылочным объектом, вектором или матрицей.

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

Примечания

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

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

Примеры

Пример 1

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

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))

Пример 2

Объедините два отдельных вызова 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))

Смотрите также

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