matlab modis sst,MATLAB 处理 MODIS 数据(MOD04_L2)

叶建柏
2023-12-01

找了好久,终于找到了一种方法处理 modis 数据。

% Copyright (C) 2015 The HDF Group

% All Rights Reserved

%

% This example code illustrates how to access and visualize LAADS

% MODIS MOD04 L2 swath 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 MOD04_L2_A2010001_0000_005_2010005211741_hdf

%

% Tested under: MATLAB R2015a

% Last updated: 2015-07-29

clear

% Set file name and swath name.

FILE_NAME='MOD04_L2.A2015014.1215.006.2015035101044.hdf';

SWATH_NAME='mod04';

% Open HDF-EOS2 file.

file_id = hdfsw('open', FILE_NAME, 'rdonly');

% Open swath.

swath_id = hdfsw('attach', file_id, SWATH_NAME);

% Read data from a data field.

DATAFIELD_NAME='Optical_Depth_Land_And_Ocean';

[data, fail] = hdfsw('readfield', swath_id, DATAFIELD_NAME, [], [], []);

% Read lat and lon data.

[lon, status] = hdfsw('readfield', swath_id, 'Longitude', [], [], []);

[lat, status] = hdfsw('readfield', swath_id, 'Latitude', [], [], []);

% Detach from the Swath Object.

hdfsw('detach', swath_id);

hdfsw('close', file_id);

% Convert the data to double type for plot.

data=double(data);

lon=double(lon);

lat=double(lat);

% Read attributes from the data field

SD_id = hdfsd('start',FILE_NAME, 'rdonly');

sds_index = hdfsd('nametoindex', SD_id, DATAFIELD_NAME);

sds_id = hdfsd('select',SD_id, sds_index);

% Read _FillValue from the data field.

fillvalue_index = hdfsd('findattr', sds_id, '_FillValue');

[fillvalue, status] = hdfsd('readattr',sds_id, fillvalue_index);

% Read units from the data field.

units_index = hdfsd('findattr', sds_id, 'units');

[units, status] = hdfsd('readattr',sds_id, units_index);

% Read scale_factor from the data field.

scale_index = hdfsd('findattr', sds_id, 'scale_factor');

[scale, status] = hdfsd('readattr',sds_id, scale_index);

% Read add_offset from the data field.

offset_index = hdfsd('findattr', sds_id, 'add_offset');

[offset, status] = hdfsd('readattr',sds_id, offset_index);

% Terminate access to the corresponding data set.

hdfsd('endaccess', sds_id);

% Close the file.

hdfsd('end', SD_id);

% Replace the filled value with NaN.

data(data==fillvalue) = NaN;

% Multiply scale and adding offset, the equation is scale *(data-offset).

data = scale*(data-offset);

% Plot the data using contourfm and axesm.

pole=[-90 0 0];

latlim=[-90,ceil(max(max(lat)))];

lonlim=[floor(min(min(lon))),ceil(max(max(lon)))];

min_data=floor(min(min(data)));

max_data=ceil(max(max(data)));

f = figure('Name', FILE_NAME, 'visible', 'off');

% Create the plot.

axesm('MapProjection','eqdcylin',...

'Frame','on','Grid','on', ...

'MeridianLabel','on','ParallelLabel','on','MLabelParallel','south')

coast = load('coast.mat');

% surfm is faster than contourfm.

surfm(lat, lon, data);

colormap('Jet');

h=colorbar();

plotm(coast.lat,coast.long,'k')

% Draw unit.

set(get(h, 'title'), 'string', 'None', ...

'FontSize', 12, 'FontWeight','bold', ...

'Interpreter', 'none');

% Put title.

tstring = {FILE_NAME;DATAFIELD_NAME};

title(tstring, 'Interpreter', 'none', 'FontSize', 16, ...

'FontWeight','bold');

% The following fixed-size screen size will look better in JPEG if

% your screen is too large.

scrsz = [1 1 800 600];

set(f, 'position', scrsz, 'PaperPositionMode', 'auto');

saveas(f, [FILE_NAME '.m.jpg']);

exit;

​```

具体使用方法:

修改要处理的file_name

修改输出路径

运行m文件,会在输出路径得到一张处理后的全球图片

可以修改地理位置是输出图片为地区

更详细信息可以访问网址

如果觉得有用请点个赞呗~

 类似资料: