exponenta event banner

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 Спроецированную систему координат (Projected Coordinate System).

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 и задайте некоторые поля с типовыми значениями. 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

Изображение с географической привязкой или сетка данных, заданная как одно из следующих значений:

  • Числовая матрица M-на-N, представляющая изображение в градациях серого или сетку данных

  • Числовой массив M-by-N-by-P, представляющий цветное изображение, многоспектральное изображение, гиперспектральное изображение или сетку данных

Координаты A географические и в 'WGS 84' система координат, если не указано 'GeoKeyDirectoryTag' или 'CoordRefSysCode' и укажите другую систему координат.

Типы данных: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64 | logical

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

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

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

Индексированные данные изображения, заданные как числовая матрица 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 - это объект географической растровой ссылки или ссылочный объект, и вы указываете ProjectedCSTypeGeoKey или вы устанавливаете GTModelTypeGeoKey в поле 1 (спроецированная система координат) появляется ошибка. Аналогично, если R является объектом растровой ссылки карты, и вы не указываете ProjectedCSTypeGeoKey поле или CoordRefSysCode, или GTModelTypeGeoKey установлено значение 2 (географическая система координат), выдается сообщение об ошибке.

Значения для необязательного тега RPC TIFF, указанного как разделенная запятыми пара, состоящая из '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'. 'classictiff' значение создает классический файл TIFF. 'bigtiff' значение создает файл BigTIFF. В формате BigTIFF размер файлов может превышать 4 ГБ.

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

Совет

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

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

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