Этот пример показывает, как записать данные ссылаемый к стандартным географическим и спроектированным системам координат к файлам GeoTIFF, с помощью geotiffwrite
. Теговый формат графических файлов (TIFF) появился в качестве популярного формата, чтобы хранить растровые данные. Спецификация GeoTIFF задает набор тегов TIFF, которые описывают "Картографическую" информацию, сопоставленную с растровыми данными о TIFF. Используя эти теги, определенное геолокацию формирование изображений или растровые сетки с координатами, на которые ссылаются к Географической Системе координат (широта и долгота) или (плоской) Спроектированной Системе координат, могут храниться в файле GeoTIFF.
Этот пример создает несколько временных файлов GeoTIFF и использует переменную datadir
, чтобы обозначить их местоположение. Значение, используемое здесь, определяется выводом команды tempdir
, но вы могли легко настроить это. Содержимое datadir
удалено в конце примера.
datadir = fullfile(tempdir, 'datadir'); if ~exist(datadir, 'dir') mkdir(datadir) end
Задайте анонимную функцию, чтобы предварительно ожидать datadir
к входному имени файла:
datafile = @(filename)fullfile(datadir, filename);
Запишите изображение, на которое ссылаются в географические координаты WGS84 к файлу GeoTIFF. Оригинальное изображение (boston_ovr.jpg) хранится в формате JPEG, со ссылкой на информацию, внешнюю к файлу изображения, в "мировом файле" (boston_ovr.jgw). Изображение предоставляет с низким разрешением "обзор" Бостона, Массачусетс и окружающего пространства.
Считайте изображение из файла JPEG.
basename = 'boston_ovr'; imagefile = [basename '.jpg']; RGB = imread(imagefile);
Получите ссылочный объект из мирового файла.
worldfile = getworldfilename(imagefile);
R = worldfileread(worldfile,'geographic',size(RGB));
Запишите изображение в файл GeoTIFF.
filename = datafile([basename '.tif']);
geotiffwrite(filename,RGB,R)
Заметьте, что информация о GeoTIFF из файла указывает, что Географическая система координат (GCS) является "WGS 84" и что все поля (PCS, Проекция, MapSys, Зона, CTProjection, ProjParm, ProjParmId и UOMLength) сопоставленный со спроектированной системой координат пусты.
geotiffinfo(filename)
ans = struct with fields: Filename: '/tmp/BR2019ad_1035872_198992/publish_examples0/datadir/boston_ovr.tif' FileModDate: '10-Jan-2019 16:56:42' FileSize: 1674210 Format: 'tif' FormatVersion: [] Height: 769 Width: 722 BitDepth: 8 ColorType: 'truecolor' ModelType: 'ModelTypeGeographic' PCS: '' Projection: '' MapSys: '' Zone: [] CTProjection: '' ProjParm: [] ProjParmId: '' GCS: 'WGS 84' Datum: 'World Geodetic System 1984' Ellipsoid: 'WGS 84' SemiMajor: 6378137 SemiMinor: 6.3568e+06 PM: 'Greenwich' PMLongToGreenwich: 0 UOMLength: '' UOMLengthInMeters: [] UOMAngle: 'degree' UOMAngleInDegrees: 1 TiePoints: [1x1 struct] PixelScale: [3x1 double] SpatialRef: [1x1 map.rasterref.GeographicCellsReference] RefMatrix: [3x2 double] BoundingBox: [2x2 double] CornerCoords: [1x1 struct] GeoTIFFCodes: [1x1 struct] GeoTIFFTags: [1x1 struct]
Повторно импортируйте новый файл GeoTIFF и отобразите Бостонское изображение обзора, правильно расположенное, в карте оси.
figure usamap(R.LatitudeLimits, R.LongitudeLimits) setm(gca,'PLabelLocation',0.05,'PlabelRound',-2,'PlineLocation',0.05) geoshow(filename) title('Boston Overview')
Запишите сетку данных, на которую ссылаются в географические координаты WGS84 к файлу GeoTIFF.
load topo Z = topo; R = georasterref('RasterSize',size(Z), ... 'LatitudeLimits',[-90 90],'LongitudeLimits',[0 360]); filename = datafile('topo.tif'); geotiffwrite(filename,Z,R)
Значения в сетке данных колеблются от-7473 до 5 731. Отобразите сетку как сопоставленную со структурой поверхность, а не как изображение интенсивности.
figure worldmap world gridm off setm(gca,'MLabelParallel',-90,'MLabelLocation',90) h = geoshow(filename,'DisplayType','texturemap'); demcmap(h.CData) title('Topography Data Grid')
Одна из важных концепций, чтобы понять при экспортировании данных с geotiffwrite
- то, что как пиксели (ячейки сетки) в файле упорядочивают в изображении; столбцы будут всегда запускаться с севера, и строки будут всегда запускаться с запада. Это означает, что значения GeoTIFF ModelPixelScaleTag всегда положительны. От предыдущего примера:
filename = datafile('topo.tif');
info = geotiffinfo(filename);
info.GeoTIFFTags.ModelPixelScaleTag
ans = 1 1 0
Однако обратите внимание, что входные данные от topo.mat организованы со столбцами, запускающимися с юга:
R.ColumnsStartFrom
ans = 'south'
Следовательно, данные в файле GeoTIFF, в этом случае, инвертируются по сравнению с входными данными:
[fileZ, fileR] = geotiffread(filename); isequal(fileZ,flipud(Z))
ans = logical 1
и столбцы запускаются с севера:
R.ColumnsStartFrom
ans = 'south'
Если вам нужны данные в вашей рабочей области, чтобы соответствовать снова, затем инвертировать значения Z и установить ссылочный объект, таким образом, что столбцы запускаются с юга:
fileR.ColumnsStartFrom = 'south';
fileZ = flipud(fileZ);
isequal(fileZ,Z)
ans = logical 1
Данные в файле GeoTIFF закодированы с положительными значениями шкалы так, чтобы, когда просматривается с обычным просматривающим TIFF программным обеспечением, северное ребро того набора данных было наверху. Если вам абсолютно нужен формат данных в файле, чтобы совпадать с размещением входных данных, можно создать объект Tiff и использовать его, чтобы сбросить ModelPixelScaleTag, ModelTiepointTag, тег Сжатия и данные изображения.
t = Tiff(filename, 'r+'); pixelScale = getTag(t,'ModelPixelScaleTag'); pixelScale(2) = -pixelScale(2); setTag(t,'ModelPixelScaleTag',pixelScale); tiepoint = getTag(t,'ModelTiepointTag'); tiepoint(5) = intrinsicToGeographic(R,0.5,0.5); setTag(t,'ModelTiepointTag',tiepoint); setTag(t,'Compression', Tiff.Compression.None) write(t,Z); rewriteDirectory(t) close(t)
Можно проверить, что ссылочный объект и сетка данных из файла совпадают с входом в этом случае.
[Z2,R2] = geotiffread(filename); isequal(Z2,Z) isequal(R2,R)
ans = logical 1 ans = logical 1
Запишите ортофотографии Согласия в один файл GeoTIFF. Два, смежные (запад на восток), геосослались на полутоновое (панхроматическое) ортофото покрытие часть Конкорда, Массачусетса, США. Файл concord_ortho.txt указывает, что на данные ссылаются на Материк Массачусетса (NAD83) Плоская Спроектированная Система координат состояния. Модули являются метрами. Это соответствует номеру кода GeoTIFF 26986, как отмечено в спецификации GeoTIFF по http://geotiff.maptools.org/spec/geotiff6.html#6.3.3.1 под PCS_NAD83_Massachusetts.
Считайте эти две ортофотографии и объедините изображения.
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.XWorldLimits = [R_west.XWorldLimits(1) R_east.XWorldLimits(2)]; R.RasterSize = size(X);
Запишите данные в файл GeoTIFF. Используйте номер кода, 26986, указывая на PCS_NAD83_Massachusetts Спроектированная Система координат.
coordRefSysCode = 26986; filename = datafile('concord_ortho.tif'); geotiffwrite(filename,X,R,'CoordRefSysCode',coordRefSysCode)
Заметьте, что информация о GeoTIFF из файла указывает, что Географическая система координат (GCS) является "NAD83" и что все поля, сопоставленные со Спроектированной Системой координат, заполнены в соответствующими значениями.
geotiffinfo(filename)
ans = struct with fields: Filename: '/tmp/BR2019ad_1035872_198992/publish_examples0/datadir/concord_ortho.tif' FileModDate: '10-Jan-2019 16:56:46' FileSize: 8068658 Format: 'tif' FormatVersion: [] Height: 2000 Width: 4000 BitDepth: 8 ColorType: 'grayscale' ModelType: 'ModelTypeProjected' PCS: 'NAD83 / Massachusetts Mainland' Projection: 'SPCS83 Massachusetts Mainland zone (meters)' MapSys: 'STATE_PLANE_83' Zone: 2001 CTProjection: 'CT_LambertConfConic_2SP' ProjParm: [7x1 double] ProjParmId: {7x1 cell} GCS: 'NAD83' Datum: 'North American Datum 1983' Ellipsoid: 'GRS 1980' SemiMajor: 6378137 SemiMinor: 6.3568e+06 PM: 'Greenwich' PMLongToGreenwich: 0 UOMLength: 'metre' UOMLengthInMeters: 1 UOMAngle: 'degree' UOMAngleInDegrees: 1 TiePoints: [1x1 struct] PixelScale: [3x1 double] SpatialRef: [1x1 map.rasterref.MapCellsReference] RefMatrix: [3x2 double] BoundingBox: [2x2 double] CornerCoords: [1x1 struct] GeoTIFFCodes: [1x1 struct] GeoTIFFTags: [1x1 struct]
Отобразите объединенные ортофотографии Согласия.
figure mapshow(filename) title('Combined Orthophotos') xlabel('MA Mainland State Plane easting, meters') ylabel('MA Mainland State Plane northing, meters')
Запишите первые 1 024 столбца и продержитесь 1 024 строки файла GeoTIFF к новому файлу GeoTIFF.
Считайте изображение RGB и информацию о ссылке из файла boston.tif GeoTIFF.
[A,R] = geotiffread('boston.tif');
Создайте кадрированное изображение.
row = [size(A,1)-1024+1 size(A,1)]; col = [1 1024]; subImage = A(row(1):row(2), col(1):col(2), :);
Создайте новый ссылочный объект для кадрированного изображения.
xi = col + [-.5 .5]; yi = row + [-.5 .5]; [xlimits,ylimits] = intrinsicToWorld(R,xi,yi); subR = R; subR.RasterSize = size(subImage); subR.XWorldLimits = sort(xlimits); subR.YWorldLimits = sort(ylimits);
Запишите кадрированное изображение в файл GeoTIFF. Используйте GeoKeyDirectoryTag из исходного файла GeoTIFF.
info = geotiffinfo('boston.tif'); filename = datafile('boston_subimage.tif'); geotiffwrite(filename,subImage,subR, ... 'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag)
Отобразите файл GeoTIFF, содержащий кадрированное изображение.
figure mapshow(filename) title('Fenway Park - Cropped Image from GeoTIFF File') xlabel('MA Mainland State Plane easting, survey feet') ylabel('MA Mainland State Plane northing, survey feet')
Запишите данные о ландшафте SDTS DEM Горы Вашингтон в файл GeoTIFF.
sdtsFilename = '9129CATD.ddf';
Считайте данные SDTS DEM из файла.
[Z, refmat] = sdtsdemread(sdtsFilename);
Преобразуйте матрицу ссылки в растровый объект ссылки карты. Используйте растровую интерпретацию 'регистрации', потому что это - USGS DEM. Это соответствует растровому типу GeoTIFF PixelIsPoint.
R = refmatToMapRasterReference(refmat,size(Z),'postings');
Создайте структуру, чтобы содержать информацию GeoKeyDirectoryTag.
key = struct( ... 'GTModelTypeGeoKey',[], ... 'GTRasterTypeGeoKey',[], ... 'ProjectedCSTypeGeoKey',[]);
Установите тип модели на 1, указав на Спроектированную систему координат (PCS).
key.GTModelTypeGeoKey = 1;
Установите растровый тип на 2, указав на PixelIsPoint (регистрации).
key.GTRasterTypeGeoKey = 2;
Как обозначено функцией sdtsinfo
, на данные ссылаются к Universal, поперечной меркаторской (UTM), Зона 19, в североамериканской Данной величине 1 927. Это соответствует номеру кода GeoTIFF 26719, (PCS_NAD27_UTM_zone_19N).
info = sdtsinfo(sdtsFilename); fprintf([ ... 'Horizontal Datum: %s\n', ... 'MapRefSystem: %s\n', ... 'ZoneNumber: %d\n'], ... info.HorizontalDatum, info.MapRefSystem, info.ZoneNumber);
Horizontal Datum: North American 1927 MapRefSystem: UTM ZoneNumber: 19
Установите спроектированное значение типа системы координат к 26 719.
key.ProjectedCSTypeGeoKey = 26719;
Запишите данные в файл GeoTIFF.
filename = datafile('9129.tif'); geotiffwrite(filename,Z,R,'GeoKeyDirectoryTag',key)
Одним из преимуществ того, чтобы хранить данные DEM в файле GeoTIFF является способность легко создать структуру проекции GeoTIFF из информации в файле. Преобразуйте схему Нью-Гемпшира к 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]);
Отобразите файл GeoTIFF DEM и схему Нью-Гэмпшира.
figure mapshow(x,y) hold on h = mapshow(filename,'DisplayType','surface'); demcmap(h.ZData) title('SDTS DEM') xlabel('UTM Zone 19 easting, meters') ylabel('UTM Zone 19 northing, meters')
Запишите данные DEM Саут-Сан-Франциско в файл GeoTIFF.
Распакуйте файл данных DEM к папке datadir
и считайте все данные из файла.
filenames = gunzip('sanfranciscos.dem.gz', datadir);
demFilename = filenames{1};
[lat,lon,Z,header] = usgs24kdem(demFilename,1);
Как обозначено от структуры заголовка:
fprintf([ ... 'PlanimetricReferenceSystemCode: %s\n', ... 'Zone: %d\n', ... 'HorizontalDatum: %s\n'], ... header.PlanimetricReferenceSystemCode, ... header.Zone, header.HorizontalDatum);
PlanimetricReferenceSystemCode: UTM Zone: 10 HorizontalDatum: unknown
на данные ссылаются к Universal, поперечной меркаторской (UTM), Зона 10, и горизонтальная данная величина не определена. Мы примем североамериканскую Данную величину 1 927. Данные хранятся в файле в координатах UTM; однако, usgs24kdem
функционируют обратные проекты местоположение каждой точки выборки (регистрации), чтобы возвратить определенную геолокацию сетку данных в географических координатах. Спроектируйте координаты широты и долготы назад в UTM.
mstruct = defaultm('utm'); mstruct.geoid = referenceEllipsoid('clarke66','meters'); mstruct.zone = num2str(header.Zone); mstruct = defaultm(mstruct); [x,y] = mfwdtran(mstruct,lat,lon);
Создайте ссылочный объект, чтобы связать строки и столбцы сетки данных к UTM. Поскольку данными является USGS DEM, растровая интерпретация является 'регистрациями', и пределы мира X и Y заданы пределами координат UTM.
R = maprasterref( ... 'RasterSize', size(Z), ... 'XWorldLimits', [min(x(:)) max(x(:))], ... 'YWorldLimits', [min(y(:)) max(y(:))], ... 'ColumnsStartFrom', 'north', ... 'RasterInterpretation', 'postings');
Создайте структуру, чтобы содержать информацию GeoKeyDirectoryTag.
key = struct( ... 'GTModelTypeGeoKey',[], ... 'GTRasterTypeGeoKey',[], ... 'ProjectedCSTypeGeoKey',[]);
Установите тип модели на 1, указав на Спроектированную систему координат (PCS).
key.GTModelTypeGeoKey = 1;
Установите растровый тип на 2, указав на PixelIsPoint (регистрации).
key.GTRasterTypeGeoKey = 2;
Как отмечено выше, на данные ссылаются к Universal, поперечной меркаторской (UTM), Зона 10, и североамериканская Данная величина 1 927 принята. Это соответствует номеру кода GeoTIFF 26710 (PCS_NAD27_UTM_zone_10N).
key.ProjectedCSTypeGeoKey = 26710;
Запишите файл GeoTIFF.
filename = datafile('sanfrancisos.tif'); geotiffwrite(filename,Z,R,'GeoKeyDirectoryTag',key)
Преобразуйте схему Калифорнии к UTM использование информации о проекции из файла GeoTIFF.
S = shaperead('usastatehi','UseGeoCoords',true,'Selector',... {@(name) any(strcmp(name,{'California'})),'Name'}); proj = geotiffinfo(filename); [x, y] = projfwd(proj, [S.Lat], [S.Lon]);
Считайте повышения и информацию о ссылке из файла.
[Z,R] = geotiffread(filename);
Для просмотра, установленных значений с 0 повышениями к-1.
Z(Z==0) = -1;
Отобразите Саут-Сан-Франциско 24K DEM и схема области Отсека.
figure mapshow(x,y) hold on mapshow(Z,R,'DisplayType','surface') demcmap(Z) xlim([ 517911 581619]) ylim([4136580 4200288]) title('San Francisco South 24K DEM') xlabel('UTM Zone 10 easting, meters') ylabel('UTM Zone 10 northing, meters')
Если вы будете работать с сеткой данных, которая является классом дважды со значениями, которые располагаются вне пределов, требуемых изображения интенсивности с плавающей точкой (0 <= данные <= 1), и если вы будете хранить данные в файле TIFF с помощью imwrite
, то данные будут усеченными к интервалу [0,1], масштабируемый и преобразованный в uint8. Очевидно, для некоторых или даже всей информации в исходных данных возможно быть потерянным. Избежать этих проблем и сохранить числовой класс и область значений вашей сетки данных, geotiffwrite
использования, чтобы записать данные.
Создайте выборку Z данные.
n = 512; Z = peaks(n);
Создайте ссылочный объект, чтобы сослаться на строки и столбцы к X и Y.
R = maprasterref('RasterSize',[n n],'ColumnsStartFrom','north'); R.XWorldLimits = R.XIntrinsicLimits; R.YWorldLimits = R.YIntrinsicLimits;
Создайте структуру, чтобы содержать информацию GeoKeyDirectoryTag. Установите тип модели на 1 Спроектированную систему координат (PCS) указания.
key.GTModelTypeGeoKey = 1;
Установите растровый тип на 1 указание PixelIsArea (ячейки).
key.GTRasterTypeGeoKey = 1;
Укажите на пользовательскую Спроектированную Систему координат при помощи значения 32 767.
key.ProjectedCSTypeGeoKey = 32767;
Запишите данные в файл GeoTIFF с geotiffwrite
. Для сравнения запишите второй файл с помощью imwrite
.
filename_geotiff = datafile('zdata_geotiff.tif'); filename_tiff = datafile('zdata_tiff.tif'); geotiffwrite(filename_geotiff,Z,R,'GeoKeyDirectoryTag',key) imwrite(Z, filename_tiff);
Когда вы читаете файл с помощью imread
, значения данных и тип класса сохраняются. Вы видите, что значения данных в файле TIFF не сохраняются.
geoZ = imread(filename_geotiff); tiffZ = imread(filename_tiff); fprintf('Class type of Z: %s\n', class(Z)) fprintf('Class type of data in GeoTIFF file: %s\n', class(geoZ)) fprintf('Class type of data in TIFF file: %s\n', class(tiffZ)) fprintf('Does data in GeoTIFF file equal Z: %d\n', isequal(geoZ, Z)) fprintf('Does data in TIFF file equal Z: %d\n', isequal(tiffZ, Z))
Class type of Z: double Class type of data in GeoTIFF file: double Class type of data in TIFF file: uint8 Does data in GeoTIFF file equal Z: 1 Does data in TIFF file equal Z: 0
Можно просмотреть сетку данных с помощью mapshow
.
figure mapshow(filename_geotiff,'DisplayType','texturemap') title('Peaks - Stored in GeoTIFF File')
Можно хотеть изменить существующий файл, но сохранить больше всего, если не все, метаинформации в TIFF помечают. Этот пример преобразовывает изображение RGB из boston.tif файла в индексируемое изображение и пишет новые данные в индексируемый файл GeoTIFF. Метаинформация TIFF, за исключением значений BitDepth, BitsPerSample, и тегов PhotometricInterpretation, сохраняется.
Считайте изображение из геофайла TIFF boston.tif
.
RGB = geotiffread('boston.tif');
Используйте функцию MATLAB, rgb2ind
, чтобы преобразовать изображение RGB в индексируемое изображение X
с помощью минимального квантования отклонения.
[X,cmap] = rgb2ind(RGB,65536);
Получите данные меток TIFF с помощью imfinfo
.
info = imfinfo('boston.tif');
Создайте структуру тегов TIFF, чтобы сохранить выбранную информацию от структуры info
.
tags = struct( ... 'Compression', info.Compression, ... 'RowsPerStrip', info.RowsPerStrip, ... 'XResolution', info.XResolution, ... 'YResolution', info.YResolution, ... 'ImageDescription', info.ImageDescription, ... 'DateTime', info.DateTime, ... 'Copyright', info.Copyright, ... 'Orientation', info.Orientation);
Значения для тегов PlanarConfiguration и ResolutionUnit должны быть числовыми, а не представить в виде строки оцененный, как возвращено imfinfo
. Можно установить эти теги при помощи постоянных свойств от класса Tiff. Например, вот являются возможные значения для PlanarConfiguration постоянным свойством:
Tiff.PlanarConfiguration
ans = struct with fields: Chunky: 1 Separate: 2
Используйте значение строки от структуры info
, чтобы получить требуемое значение.
tags.PlanarConfiguration = ...
Tiff.PlanarConfiguration.(info.PlanarConfiguration);
Установите значение ResolutionUnit таким же образом.
tags.ResolutionUnit = Tiff.ResolutionUnit.(info.ResolutionUnit);
Тег программного обеспечения не установлен в файле boston.tif
. Однако geotiffwrite
установит тег Software
по умолчанию. Чтобы сохранить информацию, установите значение к пустой строке, которая препятствует тому, чтобы тег был записан в файл.
tags.Software = '';
Скопируйте GeoTIFF и информацию о ссылке от boston.tif
.
geoinfo = geotiffinfo('boston.tif');
key = geoinfo.GeoTIFFTags.GeoKeyDirectoryTag;
R = geoinfo.SpatialRef;
Запишите в файл GeoTIFF.
filename = datafile('boston_indexed.tif'); geotiffwrite(filename,X,cmap,R,'GeoKeyDirectoryTag',key,'TiffTags',tags)
Просмотрите индексируемое изображение.
figure mapshow(filename) title('Boston - Indexed Image') xlabel('MA Mainland State Plane easting, survey feet') ylabel('MA Mainland State Plane northing, survey feet')
Сравните информацию в структурах, которые должны быть равными путем печати таблицы значений.
info_rgb = imfinfo('boston.tif'); info_indexed = imfinfo(filename); tagNames = fieldnames(tags); tagNames(strcmpi('Software', tagNames)) = []; names = [{'Height' 'Width'}, tagNames']; spacing = 2; fieldnameLength = max(cellfun(@length, names)) + spacing; formatSpec = ['%-' int2str(fieldnameLength) 's']; fprintf([formatSpec formatSpec formatSpec '\n'], ... 'Fieldname', 'RGB Information', 'Indexed Information') fprintf([formatSpec formatSpec formatSpec '\n'], ... '---------', '---------------', '-------------------') for k = 1:length(names) fprintf([formatSpec formatSpec formatSpec '\n'], ... names{k}, ... num2str(info_rgb.(names{k})), ... num2str(info_indexed.(names{k}))) end
Fieldname RGB Information Indexed Information --------- --------------- ------------------- Height 2881 2881 Width 4481 4481 Compression Uncompressed Uncompressed RowsPerStrip 256 256 XResolution 300 300 YResolution 300 300 ImageDescription "GeoEye" "GeoEye" DateTime 2007:02:23 21:46:13 2007:02:23 21:46:13 Copyright "(c) GeoEye" "(c) GeoEye" Orientation 1 1 PlanarConfiguration Chunky Chunky ResolutionUnit Inch Inch
Сравните информацию, которая должна отличаться, поскольку вы преобразовали изображение RGB в индексируемое изображение путем печати таблицы значений.
names = {'FileSize', 'ColorType', 'BitDepth', ... 'BitsPerSample', 'PhotometricInterpretation'}; fieldnameLength = max(cellfun(@length, names)) + spacing; formatSpec = ['%-' int2str(fieldnameLength) 's']; formatSpec2 = '%-17s'; fprintf(['\n' formatSpec formatSpec2 formatSpec2 '\n'], ... 'Fieldname', 'RGB Information', 'Indexed Information') fprintf([formatSpec formatSpec2 formatSpec2 '\n'], ... '---------', '---------------', '-------------------') for k = 1:length(names) fprintf([formatSpec formatSpec2 formatSpec2 '\n'], ... names{k}, ... num2str(info_rgb.(names{k})), ... num2str(info_indexed.(names{k}))) end
Fieldname RGB Information Indexed Information --------- --------------- ------------------- FileSize 38729900 27925078 ColorType truecolor indexed BitDepth 24 16 BitsPerSample 8 8 8 16 PhotometricInterpretation RGB RGB Palette
Удалите временную папку и файлы данных.
rmdir(datadir, 's')
boston.tif, boston_ovr.jpg:
Copyright GeoEye Includes material copyrighted by GeoEye, all rights reserved. (GeoEye was merged into the DigitalGlobe corporation January 29th, 2013.)
For more information, run:
>> type boston.txt >> type boston_ovr.txt
concord_orthow_w.tif, concord_ortho_e.tif:
Office of Geographic and Environmental Information (MassGIS), Commonwealth of Massachusetts Executive Office of Environmental Affairs http://www.state.ma.us/mgis
For more information, run:
>> type concord_ortho.txt
9129CATD.ddf (и вспомогательные файлы):
United States Geological Survey (USGS) 7.5-minute Digital Elevation Model (DEM) in Spatial Data Transfer Standard (SDTS) format for the Mt. Washington quadrangle, with elevation in meters. http://edc.usgs.gov/products/elevation/dem.html
For more information, run:
>> type 9129.txt
sanfranciscos.dem.gz:
United States Geological Survey (USGS) 7.5-minute Digital Elevation Model (DEM) for the SAN FRANCISCO SOUTH, CA BIG BASIN DEM quadrangle, with elevation in feet.
For more information, run:
>> type sanfranciscos.txt
geotiffinfo
| geotiffwrite
| getworldfilename
| worldfileread