У меня есть код 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;