图片展示
前言
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
数据来源:
National Climatic Data Center
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
产品名称:Ocean Heat Fluxes海洋热通量
时间精度:每日3-hourly记录
空间精度:0.25°
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;亦需调用gshhs高精度海岸线数据。
源代码
%南海1998年12月31日某时的海面热通量数据及分布图
%%
%第一步:数据的展示
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
abs_path=fullfile(Path,filename);%合并,绝对路径文件
clearvars -except abs_path;%清除除了abs_path以外所有变量
ncdisp(abs_path);%读取所选文件
whos;toc;
%%
%第二步:数据读取
tic;Lat_ini=ncread(abs_path,'lat');
Lon_ini=ncread(abs_path,'lon');
Time_ini=ncread(abs_path,'time');
Lflx_ini=ncread(abs_path,'surface_upward_latent_heat_flux');
Sflx_ini=ncread(abs_path,'surface_upward_sensible_heat_flux');
toc;clear abs_path;
%%
%第三步:确定边界/截取数据
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
Lon=Lon_ini(Lon_start_No:Lon_end_No);
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
clear Lat_ini;clear Lon_ini;%回收内存
Lat=double(Lat);Lon=double(Lon);%双精度化
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
Time=9%输入时间,注意三小时的倍数
Time_No=Time/3+1;
%截取数据并降维度
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
clear Sp_Re;toc;%清除不再使用的变量
%%
%第四步:绘图
tic;figure;
%width=2000;%宽度,像素数
%height=1000;%高度
% left=50;%距屏幕左下角水平距离
% bottem=50;%距屏幕左下角垂直距离
% set(gcf,'position',[left,bottem,width,height]);
m_proj('mercator','lat',latlim,'lon',lonlim);
[longrid,latgrid]=meshgrid(Lon,Lat);
m_pcolor(longrid,latgrid,Sflx'); %pcolor或contourf
tic;m_gshhs_f('patch','k');toc;%添加海岸线:c<l<h<f
m_grid('box','fancy','tickdir','in');%网格化
%brighten(.5);%亮化
colormap(hsv);
h = colorbar('h');%色标
h.Label.String = 'W·m^{-2}'
h.Location = 'eastoutside';%色标位置
title(['1998年12月31日',num2str(Time),':00','南海海面感热通量'],...
'FontName','黑体','fontsize',12,'FontWeight',"bold") %标题
xlabel('Longitude');ylabel('Latitude') ;set(gca,'fontsize',9);
toc;