makerefmat

Создайте аффинную пространственно ссылающуюся матрицу

Синтаксис

R = makerefmat(x11, y11, dx, dy)
R = makerefmat(lon11, lat11, dlon, dlat)
R = makerefmat(param1, val1, param2, val2, ...)

Описание

R = makerefmat(x11, y11, dx, dy), со скалярами dx и dy, создает матрицу ссылки, которая выравнивает изображение или строки сетки данных к карте x и столбцам к карте y. Скаляры x11 и y11 задают местоположение карты центра первого (1,1) пиксель в изображении или первом элементе сетки данных, так, чтобы

 [x11 y11] = pix2map(R,1,1)

dx является различием в x (или долгота) между пикселями в последовательных столбцах, и dy является различием в y (или широта) между пикселями в последовательных строках. Более абстрактно R задан таким образом что

[x11 + (col-1) * dx, y11 + (row-1) * dy] = pix2map(R, row, col)

Пиксели покрывают квадраты на карте когда abs(dx) = abs(dy). Чтобы достигнуть самого типичного вида выравнивания, где увеличения x от столбца до столбца и уменьшений y от строки до строки, делают dx положительным и dy отрицательный. В порядке задать такое выравнивание наряду с квадратными пикселями, сделайте dx положительным и сделайте dy равным -dx:

 R = makerefmat(x11, y11, dx, -dx)

R = makerefmat(x11, y11, dx, dy), с двухэлементными векторами dx и dy, создает самый общий вид из ссылки на матрицу, для который

[x11 + ([row col]-1) * dx(:), y11 + ([row col]-1) * dy(:)] ... 

 = pix2map(R, row, col)

В этом общем случае каждый пиксель может стать параллелограммом на карте ни с каким ребром, обязательно выровненным к карте x или y. Векторный [dx(1) dy(1)] является различием в местоположении карты между пикселем в одной строке и ее соседом в предыдущей строке. Аналогично, [dx(2) dy(2)] является различием в местоположении карты между пикселем в одном столбце и его соседом в предыдущем столбце.

Чтобы задать пиксели, которые являются прямоугольными или квадратными (но возможно вращаемый), выберите dx и dy, таким образом что prod(dx) + prod(dy) = 0. Чтобы задать квадрат (но возможно вращаемый) пиксели, выберите dx и dy, таким образом, что матричный [dx(:) dy(:)] 2 на 2 является скалярным кратным ортогональная матрица (то есть, ее два собственных значения являются действительными, ненулевыми, и равными в абсолютном значении). Это составляет или вращение, зеркальное отображение или комбинацию обоих. Обратите внимание на то, что для скаляров dx и dy,

R = makerefmat(x11, y11, [0 dx], [dy 0])

эквивалентно

R = makerefmat(x11, y11, dx, dy)

R = makerefmat(lon11, lat11, dlon, dlat), с широтой предшествования долготы, создает матрицу ссылки для использования с географическими координатами. В этом случае,

[lat11,lon11] = pix2latlon(R,1,1),
[lat11+(row-1)*dlat,lon11+(col-1)*dlon] = pix2latlon(R,row,col)

для скалярного dlat и dlon, и

[lat11+[row col]-1)*dlat,lon11+([row col]-1)*dlon] = ...
pix2latlon(R, row,col)

для векторного dlat и dlon. Изображения или сетки данных, выровненные с широтой и долготой, могут уже иметь векторы ссылки. В этом случае можно использовать функциональный refvec2mat, чтобы преобразовать в матрицу ссылки.

R = makerefmat(param1, val1, param2, val2, ...) пары "имя-значение" параметра использования, чтобы создать матрицу ссылки для изображения или растровой сетки, к которой ссылаются и выравнивают с географической системой координат. Не может быть никакого вращения или скоса: каждый столбец должен упасть вдоль меридиана, и каждая строка должна упасть вдоль параллели. Каждое название параметра должно быть задано точно как показано, включая случай.

'ParameterName' Тип данныхЗначение
RasterSizeДвухэлементный вектор размера [M N]

Количество строк (M) и столбцы (N) растра или изображения, которое будет использоваться с матрицей ссылки.

С 'RasterSize' можно также обеспечить вектор размера, имеющий больше чем два элемента. Это включает использование, такое как:

R = makerefmat('RasterSize', ...
   size(RGB), ...)
где RGB является M-by-N-by-3. Однако в случаях как это, только первые два элемента вектора размера будут на самом деле использоваться. Выше (непространственные) размерности будут проигнорированы. Значение по умолчанию [1 1].

LatitudeLimitsДвухэлементный вектор - строка из формы: [southern_limit, northern_limit], в модулях степеней.Пределы в широте географического четырехугольника, ограничивающего растр, на который геоссылаются. Значение по умолчанию [0 1].
LongitudeLimitsДвухэлементный вектор - строка из формы: [western_limit, eastern_limit], в модулях степеней. Пределы в долготе географического четырехугольника, ограничивающего растр, на который геоссылаются. Элементы вектора 'LongitudeLimits' должны возрастать в значении. Другими словами, пределы должны быть развернуты. Значение по умолчанию [0 1].
ColumnsStartFromПредставьте в виде строки скаляр или вектор символовУказывает на направление столбца растра (юг на север по сравнению с севером на юг) с точки зрения ребра, с которого начинает индексация строки. Значениями является 'south' или 'north', и они могут быть сокращены и нечувствительные к регистру. В типичной сетке ландшафта индексация строки запускается в южном ребре. В изображениях индексация строки запускается в северном ребре. Значением по умолчанию является 'south'.
RowsStartFromПредставьте в виде строки скаляр или вектор символовУказывает на направление строки растра (запад на восток по сравнению с востоком на запад) с точки зрения ребра, с которого начинает индексация столбца. Значения: 'west' или 'east' и они могут быть сокращены и нечувствительные к регистру. Строки, почти всегда запускаемые с запада на восток. Значением по умолчанию является 'west'.

Примеры

Создайте матрицу ссылки для изображения с квадратом, четырехметровыми пикселями и с его левым верхним углом (в системе координат карты) в x = 207 000 метров, y = 913 000 метров. Изображение следует за типичной ориентацией: x увеличивающийся от столбца до столбца и y, уменьшающегося от строки до строки.

x11 = 207002;  % Two meters east of the upper left corner
y11 = 912998;  % Two meters south of the upper left corner
dx =  4;
dy = -4;
R = makerefmat(x11, y11, dx, dy)

Создайте матрицу ссылки для глобальной сетки геоида.

% Add array 'geoid' to the workspace:
load geoid  

%'geoid' contains a model of the Earth's geoid sampled in 
% one-degree-by-one-degree cells. Each column of 'geoid'
% contains geoid heights in meters for 180 cells starting 
% at latitude -90 degrees and extending to +90 degrees, for 
% a given longitude. Each row contains geoid heights for 360 
% cells starting at longitude 0 and extending 360 degrees. 
geoidR = makerefmat('RasterSize', size(geoid), ...
   'Latlim', [-90 90], 'Lonlim', [0 360])

% At its most extreme, the geoid reaches a minimum of slightly 
% less than -100 meters. This minimum occurs in the Indian Ocean 
% at approximately 4.5 degrees latitude, 78.5 degrees longitude.
% Check the geoid height at its most extreme by using latlon2pix
% with the referencing matrix.
[row, col] = latlon2pix(geoidR, 4.5, 78.5)
geoid(round(row),round(col)) 

Больше о

свернуть все

Пространственная матрица ссылки

Пространственный ссылающийся матричный R связывает индексы строки и столбца изображения или обычной сетки данных к 2D координатам карты или к географическим координатам (долгота и геодезическая широта). R является 3 2 матрицей аффинного преобразования. R любой преобразовывает пиксельные индексы (строка, столбец), чтобы сопоставить координаты (x, y) согласно

[x y] = [row col 1] * R

или преобразовывает пиксельные индексы к/от географическим координатам согласно

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

Чтобы создать матрицу ссылки для использования с географическими координатами, используйте долготу вместо X и широту вместо Y, как показано в синтаксисе R = makerefmat(X11, Y11, dx, dy). Это - одно из нескольких мест, где долгота предшествует широте в вызове функции.