Создание 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)