geotiffwrite

Запись файла GeoTIFF

Описание

пример

geotiffwrite(filename,A,R) запишет изображение или сетку данных, A, пространственно привязка по R, в файл выхода, filename.

geotiffwrite(filename,X,cmap,R) записывает индексированное изображение в X и связанная с ним палитра, cmap, в filename. X пространственно ссылается на R.

пример

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)

Figure contains an axes. The axes contains an object of type image.

Импорт изображения 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 включает расширение, оно должно быть '.tif' или '.TIF'. Если вход, A, имеет размер не менее 160 на 160, выход файл представляет собой мозаичный файл GeoTIFF. В противном случае geotiffwrite организует файл выхода по строкам в относительных полосах.

Типы данных: char | string

Изображение или сетка данных 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

Пространственная ссылочная информация, заданная как географический объект растровой привязки типа GeographicCellsReference или GeographicPostingsReference, map объект растровой привязки типа MapCellsReference или MapPostingsReference, матрица привязки или ссылочный вектор.

Если вы работаете с координатами изображения в проективной системе координат и R является объектом растровой привязки map или матрицей привязки, задайте 'GeoKeyDirectoryTag' или 'CoordRefSysCode' соответственно.

geotiffwrite функция не использует информацию, содержащуюся в GeographicCRS собственность географических объектов растровой привязки или ProjectedCRS свойство map объектов растровой привязки.

Индексированные данные изображения, заданные как M -by N числовая матрица.

Типы данных: uint8 | uint16

Карта цвета связана с индексированным изображением X, заданный как c -by-3 числовая матрица. В карте цветов c цвета, каждый из которых представлен красным, зеленым и синим значением пикселя.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'CoordRefSysCode',26986

Код системы координат-ссылок для координат данных, заданный как разделенная разделенными запятой парами, состоящая из 'CoordRefSysCode' и положительное целое число, строковый скаляр или вектор символов. Можно задать координаты в географической или проективной системе координат. Если вы задаете систему координат с помощью строкового скаляра или вектора символов, включите 'EPSG:' префикс. Для поиска номеров кода смотрите реестр EPSG или спецификацию GeoTIFF в Советы разделе.

Если вы задаете оба GeoKeyDirectoryTag и CoordRefSysCode, код системы координат в CoordRefSysCode имеет приоритет над ключом системы координат, найденным в GeoKeyDirectoryTag. Если одно значение задает географическую систему координат, а другое - проективную систему координат, появляется ошибка.

Если вы не задаете значение для этого аргумента, значение по умолчанию 4326, что указывает на то, что координаты являются географическими и в 'WGS 84' географическая система координат.

Пример: 26986

Пример: 'EPSG:26986'

Тег директории GeoKey, заданный как разделенная разделенными запятой парами, состоящая из 'GeoKeyDirectoryTag' и структуру, которая задает систему координат GeoTIFF и метаинформацию. Структура содержит имена полей, которые совпадают с именами GeoKey в спецификации GeoTIFF. Имена полей нечувствительны к регистру. Структура может быть получена из информационной структуры GeoTIFF, возвращенной geotiffinfo, в поле, GeoTIFFTags.GeoKeyDirectoryTag.

если вы задаете GTRasterTypeGeoKey поле, geotiffwrite игнорирует его. Значение для этого GeoKey определяется как R. Если вы задаете определенные поля GeoKeyDirectoryTag для несогласованных настроек вы получаете сообщение об ошибке. Для образца, если R является географическим объектом растровой привязки или refvec, и вы задаете ProjectedCSTypeGeoKey или вы устанавливаете GTModelTypeGeoKey поле к 1 (проективная система координат), вы получаете ошибку. Точно так же, если R является картой объекта растровой привязки и вы не задаете ProjectedCSTypeGeoKey поле или CoordRefSysCode, или GTModelTypeGeoKey установлено значение 2 (географическая система координат), вы получаете сообщение об ошибке.

Значения для необязательного тега TIFF RPC, заданные как разделенная разделенными запятой парами, состоящая из 'RPCCoefficientTag' и RPCCoefficientTag объект.

Значения для тегов TIFF в файле выхода, заданные как разделенная запятой пара, состоящая из 'TiffTags' и структуру. Имена полей структуры совпадают с именами тегов TIFF, поддерживаемыми классом Tiff. Имена полей нечувствительны к регистру.

Вы не можете задать большинство тегов TIFF, используя вход структуры.

TiffTags Исключения

BitsPerSampleSubFileTypeGeoAsciiParamsTag
SampleFormatSubIFDGeoDoubleParamsTag
SamplesPerPixelTileByteCountsGeoKeyDirectoryTag
StripByteCountsTileOffsetsModelPixelScaleTag
StripOffsetsImageLengthModelTiepointTag
ColorMapImageWidthModelTransformationTag

Функция устанавливает несколько тегов TIFF. Имена полей, соответствующие тегу TIFF, их соответствующие значения, установленные функцией, их допустимые значения (если они отличаются от класса Tiff) и их тип данных указаны в следующей таблице.

Автоматические теги TIFF

Имя поляОписание
Compression

Тип сжатия изображений. Значение по умолчанию является 'PackBits'. Другие допустимые значения 'LZW', 'Deflate', и 'none'.

Числовые значения, Tiff.Compression.LZW, Tiff.Compression.PackBits, Tiff.Compression.Deflate, или Tiff.Compression.None можно также использовать.

PhotometricInterpretation

Тип фотометрической интерпретации. Имя поля может быть сокращено до Photometric. Значение устанавливается на основе характеристики входного изображения, используя следующий алгоритм: Если A является [M-by-N-by-3] и является типом класса uint8 или uint16, затем значение 'RGB'. Для всех других размеров и типов данных значение 'MinIsBlack'. Если на X, CMAP передается синтаксис, значение 'Palette'. Если значение установлено на 'RGB' и A не [M-by-N-by-3]выдается ошибка. Допустимые значения 'MinIsBlack', 'RGB', 'Palette', 'Separated'. Числовые значения, Tiff.Photometric.MinIsBlack, Tiff.Photometric.RGB, Tiff.Photometric.Palette, Tiff.Photometric.Separated можно также использовать.

Software

Производитель программного обеспечения файла. Значение устанавливается на значение 'MATLAB, Mapping Toolbox, The MathWorks, Inc.'. Чтобы удалить значение, установите тег на пустую строку или вектор символов ('').

RowsPerStrip

Скаляр положительное целое число, задающее требуемые строки на полосу в файле выхода. Если размер A меньше [160-by-160], geotiffwrite устанавливает RowsPerStrip по 1. Если вы задаете RowsPerStrip и TileWidth, с или без TileLength, geotiffwrite выдает ошибку.

TileWidth

Скалярное положительное целое число и кратное 16, определяющее ширину плиток. TileWidth устанавливается, если размер A больше [160-by-160]. Если это так, значение таково, что максимум [10-by-10] создаются плитки. Если вы задаете оба RowsPerStrip и TileWidth, geotiffwrite выдает ошибку.

TileLength

Скалярное положительное целое число и кратное 16, определяющее длину плиток. TileLength устанавливается, если размер A больше [160-by-160]. Если это так, значение таково, что максимум [10-by-10] создаются плитки. Если вы задаете оба RowsPerStrip и TileLength, geotiffwrite выдает ошибку.

Тип файла TIFF, заданный как разделенная разделенными запятой парами, состоящая из 'TiffType' и любой из них 'classictiff' или 'bigtiff'. The 'classictiff' значение создает файл Classic TIFF. The 'bigtiff' значение создает файл BigTIFF. В формате BigTIFF файлы могут быть больше 4 ГБ.

При использовании 'bigtiff' формат позволяет вам создать файлы размером более 4 ГБ, данные, которые вы хотите записать, должны помещаться в памяти.

Совет

  • Если вы работаете с координатами изображения в проективной системе координат и R является объектом растровой привязки map или матрицей привязки, задайте GeoKeyDirectoryTag или CoordRefSysCode аргумент, соответственно.

  • Проверьте спецификацию GeoTIFF на значения следующих параметров:

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