Создание geoTIFF из изображения в Matlab

Я пытаюсь создать файл GeoTIFF в Matlab из прикрепленного PNG. пример изображения Я следую примеру, приведенному в: https://uk.mathworks.com/help/map/examples/exporting-images-and-raster-grids-to-geotiff.html

но нужно создавать информацию о географической привязке с нуля, поэтому используйте makerefmat и worldfilewrite, чтобы добиться этого. Приведенный ниже код не вызывает сбой, но генерирует TIFF, с которым считыватели изображений, похоже, борются, поэтому я предполагаю, что я делаю что-то не так. Также может быть некоторая избыточность, так как я раньше не работал с тегами TIFF. Любая помощь приветствуется!

% Load image without georeferencing
RGB = imread('uk_dT.png');

% Create worldfile for image.  At present this is done by first creating a
% reference matrix, then using these values to generate a worldfile.
% Longitude spans -17:10 (west to east), latitude 63:47 (north to south)
lonmin = -17; lonmax = 10; latmin = 47; latmax = 63;
DX = (lonmax-lonmin)/(length(RGB(1,:,1))); DY = (latmin-latmax)/(length(RGB(:,1,1)));
R = makerefmat(lonmin, latmax, DX, DY);
worldfilewrite(R,'uk_dT.tfw');

% Read worldfile, create geotiff
REF = worldfileread('uk_dT.tfw','geographic',size(RGB));
geotiffwrite('uk_dT.tif',RGB,REF)

1 ответ

Из интереса этот код был улучшен для меня на другом форуме. Результат все еще не открывается в некоторых средствах просмотра изображений, но я думаю, что это связано с классом данных. Поскольку я пишу для программного обеспечения ГИС, это решение работает для меня.

file = 'uk_dT.png' ; 
[path,name,ext] = fileparts(file) ;

I = imread(file) ;
lonmin = -17; lonmax = 10; latmin = 47; latmax = 63;

% Write to geotiff
R = georasterref('RasterSize',size(I),'LatitudeLimits', [latmin,latmax],'LongitudeLimits',[lonmin,lonmax]);
tiffile = strcat(name,'.tif') ;
geotiffwrite(tiffile,I,R)
Другие вопросы по тегам