x% R: j) T9 b/ ]0 t
图片赏析3 W0 @" r- _- C$ l: y
4 B. m6 d+ \% B3 \
: h8 E1 C8 Y( E0 T" e
+ G# D0 g+ r, w% q 前言
7 p& N9 M; @: x0 t
0 m; t# k5 ?% e* f$ i6 y 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
! q/ c3 S/ T9 Z" ^. J 数据来源: / A. `6 D! M+ a. S) n3 B( l/ _
( r" V/ C( A2 w& o 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 ; y# e& l m2 T( m8 A+ U
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 : S# a4 N3 \( S; D
产品名称:Ocean Heat Fluxes海洋热通量
+ y# ]/ \3 E$ }; V 时间精度:每日3-hourly记录
( A7 d5 b- R" c/ j/ `% B' S 空间精度:0.25°
: |2 d$ k* v8 ?' s+ L0 ^ 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
. N/ E& P; b1 G8 M5 N5 b 亦需调用gshhs高精度海岸线数据。 % N6 P- J! O: Z& ]" s" _
源代码
0 ^6 K( z5 d4 O %南海1998年12月31日某时的海面热通量数据及分布图% b& ^" }% B1 M' t# J" d; M# q
%%
6 ^( K) J3 n X/ U* c9 u %第一步:数据的展示3 w9 ]( r% o& r3 l* N
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址$ B2 s, Z4 S- B) Y( ~+ u
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
6 `* o) v9 h7 l abs_path=fullfile(Path,filename);%合并,绝对路径文件8 k! ^) P3 t% t+ n3 _% q) q8 O
clearvars -except abs_path;%清除除了abs_path以外所有变量$ L% L0 g. {, ?
ncdisp(abs_path);%读取所选文件7 M' `# b# l* s* ^# d' |' N5 W6 A
whos;toc;
' X1 ]+ p$ J- W; q# O) o %%
) q Z7 |- d. F' W! g& d %第二步:数据读取6 N& r+ J2 @7 K' K* y( C- `) U7 ~
tic;Lat_ini=ncread(abs_path,lat);
$ I# k0 l% f6 L9 R, a Lon_ini=ncread(abs_path,lon);
1 [# S0 f8 C9 F' a Time_ini=ncread(abs_path,time);
5 { j& A4 F# @9 R! H8 c Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);+ [+ [9 Z/ E$ ^# x
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
( ^" k! {( O d# E toc;clear abs_path;
5 m6 |& K1 c4 @/ o' n1 \9 O %%
8 N3 ^5 C( T* U %第三步:确定边界/截取数据/ V& N7 O i( O4 d& O
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
( w2 _5 m* }8 g4 [( c8 _+ O, v( T1 r* O tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
$ `3 l- Q0 W2 M p* ?! |- O Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
/ h0 }; c9 ^, e5 C- o: G) H7 X/ n Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
( D$ @' v- @ w Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)' W3 D9 N6 Z- z E( D) R
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)- ]( }: {% m0 q" U5 Z7 n! _
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
2 d; c: Q& M" U/ t" W2 } Lon=Lon_ini(Lon_start_No:Lon_end_No);
' L0 m/ o1 d5 l3 B3 V# F% O Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
! U& ^8 o5 Z" I6 ~8 Z$ u& N9 x clear Lat_ini;clear Lon_ini;%回收内存
/ p( F5 K+ h& b( F5 r4 f4 {# Q Lat=double(Lat);Lon=double(Lon);%双精度化# F# V" [' _0 Y
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
5 L0 N. R9 o. l' U& s9 [ Time=9%输入时间,注意三小时的倍数
; D# L; d& j. l c" { Time_No=Time/3+1;
. o% @9 s+ T/ F %截取数据并降维度- @2 t( I2 Z7 {2 I1 T
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的% i+ V' Q$ D: P' T2 g/ F- g* _# ~; o
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的+ A4 R) z0 C- S8 I+ a. g! N
clear Sp_Re;toc;%清除不再使用的变量
1 B2 I* ?, }1 A/ ` %%
) r' X# g% O8 K2 R7 U %第四步:绘图% s, q1 l7 c2 l
tic;figure;1 R- L% N0 R5 m
m_proj(mercator,lat,latlim,lon,lonlim);5 m( r1 R' x* L; @! P; T
[longrid,latgrid]=meshgrid(Lon,Lat);# k: g% C* ]' |8 x# {# F
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf9 [$ N, `" ^9 J/ x( A
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f, w9 B/ l" T' n1 ^ Z) D
m_grid(box,fancy,tickdir,in);%网格化" R9 P& Y7 u7 L2 j8 |( Z- B0 h6 r
%brighten(.5);%亮化
& @) E0 r4 b2 q" k# X colormap(hsv);
0 e1 N; M2 x; j3 W8 Q. K! b h = colorbar(h);%色标
- S5 v* D2 s* ^7 w* r0 p8 ?6 s h.Label.String = W·m^{-2}9 T0 A# ^, r0 M3 B- e) E
h.Location = eastoutside;%色标位置
3 n3 o0 x! T. t' j0 x title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
) X1 m2 f1 ]# u% [' y. j @; n7 [ FontName,黑体,fontsize,12,FontWeight,"bold") %标题
" ]+ \# T1 {/ J: } xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);9 y; K5 c3 Z% U9 f6 s& A; |
toc;' Y, g* m7 {& W% i1 b
' Y" q b. k! L* m0 a 附上另外俩残次品绘图结果,数据来源:IOCADS 0 s ?, ?) {0 \- p& l
9 B0 O4 u8 b' E1 \
D" ?/ |" ^3 s6 H A
: b) l+ A2 t; u3 p: ?, r% D* M7 V
: E8 f2 i* k2 h/ t. B
+ f$ ]4 C8 r# }( G# f
1 o( \3 h9 E1 U* I0 R. R |