Запись файла GeoTIFF
geotiffwrite(___,
записывает изображение или сетку данных с одним или несколькими Name,Value
)Name,Value
пара аргументов, которые управляют различными характеристиками выходного файла.
Чтение изображения JPEG из файла.
basename = 'boston_ovr'; imagefile = [basename '.jpg']; RGB = imread(imagefile);
Выведите файл привязки имя из имени файла изображения, прочтите файл привязки и создайте пространственный объект привязки.
worldfile = getworldfilename(imagefile);
R = worldfileread(worldfile, 'geographic', size(RGB));
Запись изображений и ссылок на данные в файл GeoTIFF.
filename = [basename '.tif'];
geotiffwrite(filename, RGB, R)
Создайте пустые оси карты и отобразите карту.
figure usamap(RGB, R) geoshow(filename)
Преобразуйте классический файл TIFF с привязкой к местоположению в мозаичный файл BigTIFF путем извлечения информации из классического файла TIFF. Во-первых, импортируйте классическое изображение TIFF Бостона и ссылочный объект камер карты. Получите метаданные из файла с помощью geotiffinfo
.
infilename = 'boston.tif';
[A,R] = readgeoraster(infilename);
info = geotiffinfo(infilename);
Укажите теги для включения в файл с мозаикой BigTIFF. Для этого извлеките тег директории GeoKey из метаданных. Затем создайте теги, указывающие длину и ширину плиток.
geoTags = info.GeoTIFFTags.GeoKeyDirectoryTag; tiffTags = struct('TileLength',1024,'TileWidth',1024);
Запись данных в новый файл GeoTIFF. Укажите формат файла как BigTIFF с помощью 'TiffType'
Пара "имя-значение". Включите теги путем определения 'GeoKeyDirectoryTag'
и 'TiffTags'
Пары "имя-значение".
outfilename = 'boston_bigtiff.tif'; geotiffwrite(outfilename,A,R,'TiffType','bigtiff', ... 'GeoKeyDirectoryTag',geoTags, ... 'TiffTags',tiffTags)
Проверьте, что вы написали файл BigTIFF, прочитав файл и запросив теги.
biginfo = geotiffinfo(outfilename); biginfo.GeoTIFFTags.GeoKeyDirectoryTag
ans = struct with fields:
GTModelTypeGeoKey: 1
GTRasterTypeGeoKey: 1
ProjectedCSTypeGeoKey: 26986
PCSCitationGeoKey: 'State Plane Zone 2001 NAD = 83'
ProjLinearUnitsGeoKey: 9003
t = Tiff(outfilename);
getTag(t,'TileLength')
ans = 1024
getTag(t,'TileWidth')
ans = 1024
close(t)
Чтение данных с сервера WMS.
nasaLayers = wmsfind('nasa', 'SearchField', 'serverurl'); layerName = 'bluemarbleng'; layer = refine(nasaLayers, layerName, 'SearchField', 'layername', ... 'MatchType', 'exact'); [A, R] = wmsread(layer(1));
Запись данных в файл GeoTIFF.
filename = [layerName '.tif'];
geotiffwrite(filename, A, R)
Просмотр данных в файле.
figure
worldmap world
geoshow(filename)
Прочитайте два соседних ортофота и объедините их.
X_west = imread('concord_ortho_w.tif'); X_east = imread('concord_ortho_e.tif'); X = [X_west X_east];
Создайте объекты привязки для ортофотоса и для их комбинации.
R_west = worldfileread('concord_ortho_w.tfw', 'planar', size(X_west)); R_east = worldfileread('concord_ortho_e.tfw', 'planar', size(X_east)); R = R_west; R.XLimWorld = [R_west.XLimWorld(1) R_east.XLimWorld(2)]; R.RasterSize = size(X);
Запишите комбинированное изображение в файл GeoTIFF. Используйте номер кода 26986, указывающий на PCS_NAD83_Massachusetts Проективную систему координат.
coordRefSysCode = 26986; filename = 'concord_ortho.tif'; geotiffwrite(filename, X, R, 'CoordRefSysCode', coordRefSysCode);
Отобразите карту.
figure mapshow(filename)
Импорт изображения GeoTIFF и ссылочного объекта камер карты для области вокруг Бостона с помощью readgeoraster
.
[A,RA] = readgeoraster('boston.tif');
Обрезать данные до пределов, заданных xlimits
и ylimits
использование mapcrop
.
xlimits = [764318 767678]; ylimits = [2951122 2954482]; [B,RB] = mapcrop(A,RA,xlimits,ylimits);
Получите информацию об изображении GeoTIFF с помощью geotiffinfo
. Извлеките тег директории GeoKey из информации.
info = geotiffinfo('boston.tif');
key = info.GeoTIFFTags.GeoKeyDirectoryTag;
Запишите обрезанные данные и тег директории GeoKey в файл. Проверьте, что обрезанные данные записаны в файл, отобразив их.
filename = 'boston_subimage.tif'; geotiffwrite(filename,B,RB,'GeoKeyDirectoryTag',key) figure mapshow(filename)
Запишите данные по повышению для области вокруг Южного Боулдера-Пик в Колорадо в файл GeoTIFF. Во-первых, импортируйте данные повышения и объект ссылки географических проводок.
[Z,R] = readgeoraster('n39_w106_3arc_v2.dt1','OutputType','double');
Укажите в качестве структуры сведения о марке директории GeoKey для файла GeoTIFF. Укажите данные в системе географических координат путем определения GTModelTypeGeoKey
поле как 2. Укажите, что объект ссылки использует проводки (а не камеры) путем определения GTRasterTypeGeoKey
поле как 2. Укажите, что данные ссылаются на географическую систему координат путем определения GeographicTypeGeoKey
поле как 4326.
key.GTModelTypeGeoKey = 2; key.GTRasterTypeGeoKey = 2; key.GeographicTypeGeoKey = 4326;
Запишите данные и тег директории GeoKey в файл.
filename = 'southboulder.tif'; geotiffwrite(filename,Z,R,'GeoKeyDirectoryTag',key)
Проверьте, что данные записаны в файл, отобразив их на карте.
usamap([39 40],[-106 -105]) g = geoshow(filename,'DisplayType','mesh'); demcmap(g.CData)
Данные по повышению, используемые в этом примере, предоставлены Геологической службой США.
Создайте пример TIFF файла с метаданными RPC. Для этого создайте массив нулей и связанную с ним ссылку объект.
A = zeros(180,360); latlim = [-90 90]; lonlim = [-180 180]; RA = georefcells(latlim,lonlim,size(A));
Затем создайте RPCCoefficientTag
объект метаданных и установите некоторые поля с типичными значениями. The RPCCoefficientTag
объект представляет метаданные RPC в читаемой форме.
rpctag = map.geotiff.RPCCoefficientTag; rpctag.LineOffset = 1; rpctag.SampleOffset = 1; rpctag.LineScale = 2; rpctag.SampleScale = 2; rpctag.GeodeticHeightScale = 500;
Запишите изображение, связанный объект привязки и RPCCoefficientTag
объект в файл.
geotiffwrite('myfile',A,RA,'RPCCoefficientTag',rpctag)
В этом примере показано, как записать метаданные коэффициента RPC в файл TIFF. В реальном рабочем процессе вы бы создали метаданные коэффициента RPC в соответствии со спецификацией расширения TIFF. Этот пример не показывает специфику создания допустимых метаданных RPC. Чтобы симулировать необработанные метаданные RPC, в примере создается образец файла TIFF с метаданными RPC, а затем используются imfinfo
для чтения метаданных RPC в необработанной, необработанной форме из файла. Затем пример записывает эти необработанные метаданные RPC в файл, использующий geotiffwrite
функция.
Создание необработанных метаданных коэффициентов RPC
Чтобы симулировать необработанные метаданные RPC, создайте простой тестовый файл и запишите некоторые метаданные RPC в файл. Для этого тестового файла создайте игрушечное изображение и объект привязки, сопоставленный с изображением.
myimage = zeros(180,360); latlim = [-90 90]; lonlim = [-180 180]; R = georefcells(latlim,lonlim,size(myimage));
Создайте RPCCoefficientTag
метаданные объекта и устанавливают некоторые из полей. Тулбокс использует RPCCoefficientTag
объект для представления метаданных RPC в считываемой человеком форме.
rpctag = map.geotiff.RPCCoefficientTag; rpctag.LineOffset = 1; rpctag.SampleOffset = 1; rpctag.LineScale = 2; rpctag.SampleScale = 2; rpctag.GeodeticHeightScale = 500;
Запишите изображение, связанный объект привязки и RPCCoefficientTag
объект в файл.
geotiffwrite('myfile',myimage,R,'RPCCoefficientTag',rpctag)
Чтение необработанных метаданных коэффициента RPC
Считайте метаданные коэффициента RPC из тестового файла с помощью imfinfo
функция. Когда он сталкивается с незнакомыми метаданными, imfinfo
возвращает необработанные данные в UnknownTags
поле. Обратите внимание, что UnknownTags
поле содержит массив из 92 двойных чисел. Это необработанные метаданные коэффициента RPC, считанные из файла в необработанной форме.
info = imfinfo('myfile.tif');
info.UnknownTags
ans = struct with fields:
ID: 50844
Offset: 10676
Value: [1x92 double]
Запись необработанных метаданных RPC в файл
Запись необработанных метаданных RPC в файл. Сначала извлеките метаданные коэффициента RPC из информационной структуры.
value = info.UnknownTags.Value;
Затем создайте RPCCoefficientTag
объект, передающий необработанные метаданные RPC (массив из 92 двойных значений) в качестве аргумента.
rpcdata = map.geotiff.RPCCoefficientTag(value)
rpcdata = RPCCoefficientTag with properties: BiasErrorInMeters: -1 RandomErrorInMeters: -1 LineOffset: 1 SampleOffset: 1 GeodeticLatitudeOffset: 0 GeodeticLongitudeOffset: 0 GeodeticHeightOffset: 0 LineScale: 2 SampleScale: 2 GeodeticLatitudeScale: 1 GeodeticLongitudeScale: 1 GeodeticHeightScale: 500 LineNumeratorCoefficients: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] LineDenominatorCoefficients: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] SampleNumeratorCoefficients: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] SampleDenominatorCoefficients: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
Передайте RPCCoefficientTag
объект для geotiffwrite
и запишите метаданные RPC в файл.
geotiffwrite('myfile2',myimage,R,'RPCCoefficientTag',rpcdata)
Чтобы убедиться, что данные были записаны в файл, прочтите метаданные RPC из файла TIFF с помощью geotiffinfo
. Сравните возвращенные метаданные RPC с метаданными, записанными в тестовый файл.
ginfo = geotiffinfo('myfile2');
ginfo.GeoTIFFTags.RPCCoefficientTag
ans = RPCCoefficientTag with properties: BiasErrorInMeters: -1 RandomErrorInMeters: -1 LineOffset: 1 SampleOffset: 1 GeodeticLatitudeOffset: 0 GeodeticLongitudeOffset: 0 GeodeticHeightOffset: 0 LineScale: 2 SampleScale: 2 GeodeticLatitudeScale: 1 GeodeticLongitudeScale: 1 GeodeticHeightScale: 500 LineNumeratorCoefficients: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] LineDenominatorCoefficients: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] SampleNumeratorCoefficients: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] SampleDenominatorCoefficients: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
filename
- Имя и местоположение выходного файлаИмя и расположение выхода файла в виде строкового скаляра или вектора символов. Если ваш filename
включает расширение, оно должно быть '.tif'
или '.TIF'
. Если вход, A
, имеет размер не менее 160 на 160, выход файл представляет собой мозаичный файл GeoTIFF. В противном случае geotiffwrite
организует файл выхода по строкам в относительных полосах.
Типы данных: char
| string
A
- Географическое изображение или сетка данныхИзображение или сетка данных Georeferenced, заданные как одно из следующего:
M -by N числовая матрица, представляющая полутоновое изображение или сетку данных
M -by N -by - P числовой массив, представляющий цветное изображение, мультиспектральное изображение, гиперспектральное изображение или сетку данных
Координаты A
географические и в 'WGS 84'
система координат, если вы не задаете 'GeoKeyDirectoryTag'
или 'CoordRefSysCode'
и указать другую систему координат.
Типы данных: double
| single
| uint8
| uint16
| uint32
| uint64
| int8
| int16
| int32
| int64
| logical
R
- Пространственная ссылочная информацияПространственная ссылочная информация, заданная как географический объект растровой привязки типа GeographicCellsReference
или GeographicPostingsReference
, map объект растровой привязки типа MapCellsReference
или MapPostingsReference
, матрица привязки или ссылочный вектор.
Если вы работаете с координатами изображения в проективной системе координат и R
является объектом растровой привязки map или матрицей привязки, задайте 'GeoKeyDirectoryTag'
или 'CoordRefSysCode'
соответственно.
geotiffwrite
функция не использует информацию, содержащуюся в GeographicCRS
собственность географических объектов растровой привязки или ProjectedCRS
свойство map объектов растровой привязки.
X
- Индексированное изображениеИндексированные данные изображения, заданные как M -by N числовая матрица.
Типы данных: uint8
| uint16
cmap
- Цветовая картаКарта цвета связана с индексированным изображением X
, заданный как c -by-3 числовая матрица. В карте цветов c цвета, каждый из которых представлен красным, зеленым и синим значением пикселя.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'CoordRefSysCode',26986
'CoordRefSysCode'
- Код системы координат-ссылок4326
(по умолчанию) | положительное целое число | строковый скаляр | символьный векторКод системы координат-ссылок для координат данных, заданный как разделенная разделенными запятой парами, состоящая из 'CoordRefSysCode'
и положительное целое число, строковый скаляр или вектор символов. Можно задать координаты в географической или проективной системе координат. Если вы задаете систему координат с помощью строкового скаляра или вектора символов, включите 'EPSG:'
префикс. Для поиска номеров кода смотрите реестр EPSG или спецификацию GeoTIFF в Советы разделе.
Если вы задаете оба GeoKeyDirectoryTag
и CoordRefSysCode
, код системы координат в CoordRefSysCode
имеет приоритет над ключом системы координат, найденным в GeoKeyDirectoryTag
. Если одно значение задает географическую систему координат, а другое - проективную систему координат, появляется ошибка.
Если вы не задаете значение для этого аргумента, значение по умолчанию 4326
, что указывает на то, что координаты являются географическими и в 'WGS 84'
географическая система координат.
Пример: 26986
Пример: 'EPSG:26986'
'GeoKeyDirectoryTag'
- тег директории GeoKeyТег директории GeoKey, заданный как разделенная разделенными запятой парами, состоящая из 'GeoKeyDirectoryTag'
и структуру, которая задает систему координат GeoTIFF и метаинформацию. Структура содержит имена полей, которые совпадают с именами GeoKey в спецификации GeoTIFF. Имена полей нечувствительны к регистру. Структура может быть получена из информационной структуры GeoTIFF, возвращенной geotiffinfo
, в поле, GeoTIFFTags.GeoKeyDirectoryTag
.
если вы задаете GTRasterTypeGeoKey
поле, geotiffwrite
игнорирует его. Значение для этого GeoKey определяется как R
. Если вы задаете определенные поля GeoKeyDirectoryTag
для несогласованных настроек вы получаете сообщение об ошибке. Для образца, если R
является географическим объектом растровой привязки или refvec, и вы задаете ProjectedCSTypeGeoKey
или вы устанавливаете GTModelTypeGeoKey
поле к 1 (проективная система координат), вы получаете ошибку. Точно так же, если R
является картой объекта растровой привязки и вы не задаете ProjectedCSTypeGeoKey
поле или CoordRefSysCode
, или GTModelTypeGeoKey
установлено значение 2 (географическая система координат), вы получаете сообщение об ошибке.
'RPCCoefficientTag'
- тег рациональных полиномиальных коэффициентов (RPC)RPCCoefficientTag
объект Значения для необязательного тега TIFF RPC, заданные как разделенная разделенными запятой парами, состоящая из 'RPCCoefficientTag'
и RPCCoefficientTag
объект.
'TiffTags'
- Теги TIFFЗначения для тегов TIFF в файле выхода, заданные как разделенная запятой пара, состоящая из 'TiffTags'
и структуру. Имена полей структуры совпадают с именами тегов TIFF, поддерживаемыми классом Tiff. Имена полей нечувствительны к регистру.
Вы не можете задать большинство тегов TIFF, используя вход структуры.
TiffTags
Исключения
BitsPerSample | SubFileType | GeoAsciiParamsTag |
SampleFormat | SubIFD | GeoDoubleParamsTag |
SamplesPerPixel | TileByteCounts | GeoKeyDirectoryTag |
StripByteCounts | TileOffsets | ModelPixelScaleTag |
StripOffsets | ImageLength | ModelTiepointTag |
ColorMap | ImageWidth | ModelTransformationTag |
Функция устанавливает несколько тегов TIFF. Имена полей, соответствующие тегу TIFF, их соответствующие значения, установленные функцией, их допустимые значения (если они отличаются от класса Tiff) и их тип данных указаны в следующей таблице.
Автоматические теги TIFF
Имя поля | Описание |
---|---|
Compression
|
Тип сжатия изображений. Значение по умолчанию является Числовые значения, |
PhotometricInterpretation |
Тип фотометрической интерпретации. Имя поля может быть сокращено до |
Software | Производитель программного обеспечения файла. Значение устанавливается на значение |
RowsPerStrip
|
Скаляр положительное целое число, задающее требуемые строки на полосу в файле выхода. Если размер A меньше |
TileWidth
|
Скалярное положительное целое число и кратное 16, определяющее ширину плиток. |
TileLength
|
Скалярное положительное целое число и кратное 16, определяющее длину плиток. |
'TiffType'
- Тип файла TIFF'classictiff'
(по умолчанию) | 'bigtiff'
Тип файла TIFF, заданный как разделенная разделенными запятой парами, состоящая из 'TiffType'
и любой из них 'classictiff'
или 'bigtiff'
. The 'classictiff'
значение создает файл Classic TIFF. The 'bigtiff'
значение создает файл BigTIFF. В формате BigTIFF файлы могут быть больше 4 ГБ.
При использовании 'bigtiff'
формат позволяет вам создать файлы размером более 4 ГБ, данные, которые вы хотите записать, должны помещаться в памяти.
Если вы работаете с координатами изображения в проективной системе координат и R
является объектом растровой привязки map или матрицей привязки, задайте GeoKeyDirectoryTag
или CoordRefSysCode
аргумент, соответственно.
Проверьте спецификацию GeoTIFF на значения следующих параметров:
'CoordRefSysCode'
значение для географических систем координат
'CoordRefSysCode'
значение для проективных систем координат
Имена полей GeoKey для 'GeoKeyDirectoryTag'
geotiffinfo
| imread
| imwrite
| readgeoraster
| RPCCoefficientTag
| Tiff
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.