在Matlab中从图像创建geoTIFF

时间:2017-09-06 16:36:33

标签: matlab geotiff

我正在尝试使用附加的png在Matlab中创建一个geoTIFF文件。 example image 我遵循以下提供的示例: 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 个答案:

答案 0 :(得分:0)

出于兴趣,此代码在另一个论坛上得到了改进。结果在一些图像查看器中仍然没有打开,但我认为这与数据类有关。在我为GIS软件编写时,这个解决方案对我有用。

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)