我正在尝试使用附加的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)
答案 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)