Создайте аффинную пространственную матрицу привязки
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] | Количество строк ( С 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))
latlon2pix
| map2pix
| pix2latlon
| pix2map
| refvec2mat
| worldfileread
| worldfilewrite