geotiffwrite

Запишите файл GeoTIFF

Синтаксис

geotiffwrite(filename,A,R)
geotiffwrite(filename,X,cmap,R)
geotiffwrite(___,Name,Value)

Описание

пример

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 в рабочую область.

infilename = 'boston.tif';
[A,R] = geotiffread(infilename);

Получите метаданные из файла. Вы передаете это в новую версию BigTIFF файла.

info = geotiffinfo(infilename);

Извлеките значение поля GeoKeyDirectoryTag от структуры info, возвращенной geotiffinfo. Установите значение двух тегов TIFF, которые задают длину и ширину мозаик.

geoTags = info.GeoTIFFTags.GeoKeyDirectoryTag;
tiffTags = struct('TileLength',1024,'TileWidth',1024);

Запишите данные в новый файл GeoTIFF, с помощью параметра TiffType, чтобы задать формат файла как 'bigtiff'. Включайте информацию о geoTags и tiffTags в метаданных в новом файле.

outfilename = 'boston_bigtiff.tif';
geotiffwrite(outfilename,A,R,'GeoKeyDirectoryTag',geoTags, ...
      'TiffType','bigtiff','TiffTags',tiffTags) 

Считайте данные из сервера 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.

[A, R] = geotiffread('boston.tif');

Задайте подмножество данных, которые вы хотите записать.

m = size(A,1);
n = 1024;
firstrow = m-n+1;
lastrow = m;
firstcol = 1;
lastcol = n;
subImage = A(firstrow:lastrow, firstcol:lastcol, :);
xi = [firstcol - .5, lastcol + .5];
yi = [firstrow - .5, lastrow + .5];
[xlimits, ylimits] = intrinsicToWorld(R, xi, yi);
subR = R;
subR.RasterSize = size(subImage);
subR.XLimWorld = sort(xlimits);
subR.YLimWorld = sort(ylimits);
info = geotiffinfo('boston.tif');

Запишите подмножество в файл.

filename = 'boston_subimage.tif';
geotiffwrite(filename, subImage, subR,  ...
       'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
figure
mapshow(filename);

Этот пример показывает, как записать данные о ландшафте SDTS DEM Горы Вашингтон в GeoTIFF. На данные ссылаются к Universal, поперечной меркаторской (UTM), Зона 19, в североамериканской Данной величине 1 927. Это соответствует номеру кода GeoTIFF PCS_NAD27_UTM_zone_19N 26719. Установите растровую интерпретацию на 'регистрации', потому что данными является USGS DEM. Это соответствует растровому типу GeoTIFF PixelIsPoint.

Считайте данные SDTS DEM.

[Z, refmat] = sdtsdemread('9129CATD.ddf');
R = refmatToMapRasterReference(refmat, size(Z), 'postings');
key.GTModelTypeGeoKey  = 1;  % Projected Coordinate System (PCS)
key.GTRasterTypeGeoKey = 2;  % PixelIsPoint
key.ProjectedCSTypeGeoKey = 26719;
filename = '9129.tif';
geotiffwrite(filename, Z, R, 'GeoKeyDirectoryTag', key);

Постройте схему Нью-Гемпшира в UTM.

S = shaperead('usastatelo', 'UseGeoCoords', true, 'Selector',...
    {@(name) any(strcmp(name,{'New Hampshire'})), 'Name'});
proj = geotiffinfo(filename);
[x, y] = projfwd(proj, [S.Lat], [S.Lon]);
figure
mapshow(x,y)

Отобразите файл GeoTIFF DEM.

hold on
h = mapshow(filename, 'DisplayType', 'surface');
demcmap(get(h,'ZData'))

Этот пример показывает, как считать файл, содержащий метаданные RPC, изменить файл, и затем записать файл, включая метаданные RPC в новом файле. Чтобы проиллюстрировать этот процесс, пример сначала создает демонстрационный файл TIFF, содержащий Метаданные RPC.

Создайте демонстрационный файл TIFF с метаданными RPC

Создайте демонстрационный тестовый файл TIFF, содержащий метаданные 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)

Считайте метаданные и данные изображения из демонстрационного файла TIFF

Считайте метаданные и данные изображения от тестового файла. geotiffinfo возвращает метаданные RPC в поле GeoTIFFTags возвращенной структуры.

info = geotiffinfo('myfile');
[imagedata, R] = geotiffread('myfile');

Запишите измененные данные изображения и метаданные RPC к файлу

Сначала измените данные изображения, считанные из файла. Например, установите все пиксели с нулевым знаком на 1 в изображении.

imagedata(imagedata==0)= 1;

Запишите измененное изображение в файл, наряду с метаданными RPC из исходного файла.

geotiffwrite('myfile2',imagedata,R,...
    'RPCCoefficientTag',info.GeoTIFFTags.RPCCoefficientTag)

Этот пример показывает, как записать содействующие метаданные 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: 10672
     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-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, растровый объект ссылки карты типа MapCellsReference или MapPostingsReference, матрица ссылки или вектор ссылки.

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

Советы

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

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

    • Значение 'CoordRefSysCode' для географических систем координат

    • Значение 'CoordRefSysCode' для спроектированных систем координат

    • Геополе ключа называет для 'GeoKeyDirectoryTag'

    Можно также получить значения 'CoordRefSysCode' из файлов данных EPSG (pcs.csv и gcs.csv) в папке:

    matlabroot/toolbox/map/mapproj/projdata/epsg_csv

Смотрите также

| | | | |

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