Как конвертировать растр в TIFF файл в Matlab - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть код Matlab для изображения hdf5, как показано ниже, который преобразует изображение hdf в выходное изображение (температура K) в формате png, как показано. Может кто-нибудь подсказать мне, как изменить код, чтобы конечное изображение было в формате TIFF, которое можно использовать в ArcGis. У меня есть несколько изображений температуры и осадков в формате hdf5, и я хочу узнать, как преобразовать их в Geotiff для дальнейшей обработки в программном обеспечении ArcGIS. Мой следующий вопрос заключается в том, почему он показывает глобус и разноцветный нерегулярный образец данных о температуре, как показано в выходном изображении. Это должно быть в системе WGS1984. Выходное изображение

% Copyright (C) 2016-2018 The HDF Group
%   All Rights Reserved 
%
%  This example code illustrates how to access and visualize GPM L1C file
% in MATLAB. 
%
%  If you have any questions, suggestions, comments on this example, please 
% use the HDF-EOS Forum (http://hdfeos.org/forums). 
% 
%  If you would like to see an  example of any other NASA HDF/HDF-EOS data 
% product that is not listed in the HDF-EOS Comprehensive Examples page 
% (http://hdfeos.org/zoo), feel free to contact us at eoshelp@hdfgroup.org 
% or post it at the HDF-EOS Forum (http://hdfeos.org/forums).
%                                   
% Usage:save this script and run (without .m at the end)
%                                   
%
% $matlab -nosplash -nodesktop -r GPM_1CF19SSMIS_05
%
% Tested under: MATLAB R2017a
% Last updated: 2018-1-22

clear

% Open the HDF5 File.
FILE_NAME = '1C.F19.SSMIS.XCAL2016-V.20150906-S011918-E030110.007356.V05A.hdf5';
file_id = H5F.open(FILE_NAME, 'H5F_ACC_RDONLY', 'H5P_DEFAULT');
h5disp(FILE_NAME)
% Open the dataset.
DATAFIELD_NAME = 'S1/Tc';
data_id = H5D.open(file_id, DATAFIELD_NAME);
;

Lat_NAME='S1/Latitude';
lat_id=H5D.open(file_id, Lat_NAME);

Lon_NAME='S1/Longitude';
lon_id=H5D.open(file_id, Lon_NAME);

% Read the dataset.
data=H5D.read(data_id,'H5T_NATIVE_DOUBLE', 'H5S_ALL', 'H5S_ALL', 'H5P_DEFAULT');

lat=H5D.read(lat_id,'H5T_NATIVE_DOUBLE', 'H5S_ALL', 'H5S_ALL', 'H5P_DEFAULT');

lon=H5D.read(lon_id,'H5T_NATIVE_DOUBLE', 'H5S_ALL', 'H5S_ALL', 'H5P_DEFAULT');


% Read the units.
ATTRIBUTE = 'units';
attr_id = H5A.open_name (data_id, ATTRIBUTE);
units = H5A.read(attr_id, 'H5ML_DEFAULT');

% Read title attribute.
ATTRIBUTE = 'LongName';
attr_id = H5A.open_name (data_id, ATTRIBUTE);
long_name=H5A.read (attr_id, 'H5ML_DEFAULT');

% Read the fill value attribute.
ATTRIBUTE = '_FillValue';
attr_id = H5A.open_name (data_id, ATTRIBUTE);
fillvalue = H5A.read(attr_id, 'H5ML_DEFAULT');


% Close and release resources.
H5A.close (attr_id)
H5D.close (data_id);
H5F.close (file_id);

% Subset data.
data = data(1,:,:);

% Replace the fill value with NaN.
data(data==fillvalue) = NaN;
dset_name = sprintf('%s', long_name);
disp_name = strcat(dset_name, ' (nchannel1=0)')

f = figure('Name', FILE_NAME, ...
           'Renderer', 'zbuffer', ...
           'Position', [0,0,800,600], ...
           'visible', 'off');

% Create the plot.
axesm('MapProjection','eqdcylin',...
      'Frame','on','Grid','on', ...
      'MeridianLabel','on','ParallelLabel','on','MLabelParallel', ...
      'south')

% Plot the data.
cm = colormap('Jet');
min_data=min(min(data));
max_data=max(max(data));
caxis([min_data max_data]);
k = size(data);
[count, n] = size(cm);
lat = lat(:)';
lon = lon(:)';
data = data(:)';
scatterm(lat, lon, 1, data);
coast = load('coast.mat');
plotm(coast.lat,coast.long,'k')

tightmap;

h = colorbar();

% An HDF5 string attribute is an array of characters.
% Without the following conversion, the characters in unit will appear 
% in a vertical direction.
units1 = sprintf('%s', char(units));

% long_name is pretty long so use a small font.
set (get(h, 'title'), 'string', units1, 'FontSize', 8, ...
                   'Interpreter', 'None', ...
                   'FontWeight','bold');

% Unit is also long so we use a small font.
title({FILE_NAME; disp_name}, ... 
      'Interpreter', 'None', 'FontSize', 10,'FontWeight','bold');
saveas(f, [FILE_NAME '.m.png']);
exit;
...