3 u$ d+ Z, Y3 t+ B- F9 V
图片赏析1 \7 j, Z, @+ ]( R! P; `0 `, q$ u
" _6 T% O. h- r0 ]. G7 Z
3 }: o. d. u2 H4 z, ^8 o t
/ H" r+ T6 W: a 前言 9 @. d% z+ p8 T2 |5 b" l- ^$ y9 L4 s+ {
, {1 F3 _8 }% }3 p$ w- l
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
3 ` @ r+ w/ ?1 m! V: t; F 数据来源:
$ b& f, h; l6 R& M3 M8 c# O% Q
' T: B' H( j2 X/ l. ^% S9 h" u; R 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
5 N6 T4 `/ i# @! G' v5 Z B 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 ' I/ Z9 k G; x# a, B
产品名称:Ocean Heat Fluxes海洋热通量 + [* P5 H& m+ W! u: { U
时间精度:每日3-hourly记录 % m0 }+ m3 _6 v% _9 s
空间精度:0.25°
4 O/ Y: n3 p0 o 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
) l& i' w1 P2 e7 A7 } 亦需调用gshhs高精度海岸线数据。 ) b3 U- l+ r0 m" ^
源代码
' e8 i7 T7 c! ?' A %南海1998年12月31日某时的海面热通量数据及分布图
, @; t! h* V7 i, K- _+ D %%
5 s' O1 K& y% I" w %第一步:数据的展示
0 O7 X+ n: g$ N( G" t tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址/ u2 l& ]+ A Q9 m0 o1 ~( h
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
- d; H- l' ^# f( r abs_path=fullfile(Path,filename);%合并,绝对路径文件4 R8 c8 H' x9 m! ?
clearvars -except abs_path;%清除除了abs_path以外所有变量) v* Y% ~3 ?8 w0 V2 O5 t
ncdisp(abs_path);%读取所选文件
3 R. J2 K# K- N! g- x$ o whos;toc;/ C2 n; K% J% e2 V0 q
%% # A# A. z5 ]0 x* E& Z n/ L
%第二步:数据读取
' g1 t' f2 m' A' I tic;Lat_ini=ncread(abs_path,lat);/ w( l$ r- Q' F' l8 K9 a
Lon_ini=ncread(abs_path,lon);9 K1 m2 g& B6 m5 `8 T
Time_ini=ncread(abs_path,time);. m" l( f" s {- p4 l
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
" D% N, ?# G6 Y! L& h% _ Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
3 O0 L; f8 u" a& p* }, p toc;clear abs_path;
' d4 Z) A8 F* n6 x2 u %%
+ G. R% @+ T) ]! k %第三步:确定边界/截取数据8 o! L8 e: P) y+ m9 E
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
! }) k* v, R8 B! B1 B tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序# n/ K/ n& x3 d$ S! @. D) y
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度. g) _5 o$ }/ K
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
. [+ I0 A; k% y Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)) U: s" |& E, W4 Y' X* [7 M
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
7 w. f% P, b+ ?- A) _ Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
3 n5 A4 N$ E* o! X0 _ Lon=Lon_ini(Lon_start_No:Lon_end_No);
6 J( [' C) o: K: I8 I7 X* V6 r% G, r Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
" Q+ W6 \, U0 h8 W. {5 q$ | clear Lat_ini;clear Lon_ini;%回收内存
* T% V/ i- [; Q Lat=double(Lat);Lon=double(Lon);%双精度化
U. b- v6 \: L, U% ? latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
6 G7 @4 b, G) k" j1 Z8 N Time=9%输入时间,注意三小时的倍数1 {* F( x: {1 X1 {- x. k1 J1 x
Time_No=Time/3+1;1 \5 q: X: D5 o" ~) M) e1 q
%截取数据并降维度# D# F1 Z7 v& t$ C( |
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
# C# B+ w. b# t% g* O! t$ l Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的% d0 Q. ]+ J: c
clear Sp_Re;toc;%清除不再使用的变量
' B8 n3 a. |: @. j %%
( z& C) d5 l' D %第四步:绘图
4 E9 K0 ^, o0 y% d tic;figure;6 y4 y" g2 G4 Z
m_proj(mercator,lat,latlim,lon,lonlim);
7 T0 y9 y# E* d- a; t" v [longrid,latgrid]=meshgrid(Lon,Lat);
! y# V, [- c0 D6 c) M; L m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf# O! L( O1 ]! T) _ Y& l: v
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
: W2 {$ z0 p" @% B1 ]6 e a+ y m_grid(box,fancy,tickdir,in);%网格化
* r. n4 O! c7 X* i, U %brighten(.5);%亮化
1 I9 W& l( b. k6 A; Y colormap(hsv);* l$ p9 a$ c" B0 m
h = colorbar(h);%色标
5 x; [/ P5 M) R8 b h.Label.String = W·m^{-2} |4 t& R3 C+ J, W- R: e$ v; L
h.Location = eastoutside;%色标位置
0 H$ J8 U, W5 { title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...7 l9 h) h7 }! E! w9 }0 H. ~
FontName,黑体,fontsize,12,FontWeight,"bold") %标题2 J3 U( Z5 Y# ~# a2 w
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
, Y) b: l F1 q% {, c, A2 k% R toc;
# r$ z% O$ h) k! Y8 I5 X % S2 f( t! k6 j0 r% R/ Z l
附上另外俩残次品绘图结果,数据来源:IOCADS
3 A9 n% O$ B, n P4 G
* W; `; S j$ ^' F 2 N+ M C$ Y7 ^( F; K; V0 I
" R- G' n/ A* y
5 ?# k% u* W! R3 H
) V! q; J3 b" n4 q: c8 U) o
3 g- Z/ T- i3 o! A: m0 P1 j* h |