geotiffwrite

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

Описание

пример

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

geotiffwrite(filename,X,cmap,R) написало индексируемое изображение в X и его связанная палитра, cmap, к filenameX пространственно ссылается 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)

Импортируйте изображение GeoTIFF и сопоставьте объект ссылки ячеек для области вокруг Бостона с помощью readgeoraster.

[A,RA] = readgeoraster('boston.tif');

Обрежьте данные к пределам, заданным xlim и ylim использование 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 поле как 4 326.

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-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 имя аргумента и 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'. Если Xcmap синтаксис предоставляется, значением является '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