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