! _+ l8 Z- G- @: ]
图片赏析
0 o, l( w& [( t) J7 j* T: @ + A, n, r0 u, _/ Z" M
' m! j; ~( ^# @
& c- l g( @# _# B
前言
2 o5 B& N" U: \9 } 2 L* E( n2 e: v& e l8 ~6 m* }
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
9 w" Z9 o* y z9 ~; K& { 数据来源:
4 J/ Z7 O; y# ~5 e Q0 g
0 q; j& k+ A9 i+ }8 X1 l 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 ! W J2 {) m5 D" }5 P- }
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 ( ]6 j7 M" X+ m* C: J) C& W5 L) m- W
产品名称:Ocean Heat Fluxes海洋热通量
2 z7 A' n2 [7 f* e; w) C: w 时间精度:每日3-hourly记录
# y2 e9 m0 ?7 h; R6 C: N 空间精度:0.25°
. x F% o" J. m' `5 p 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
/ X% h3 t& n L) m( e 亦需调用gshhs高精度海岸线数据。 3 Z0 _6 F# }* |, g
源代码' z- N$ T: B6 H( K7 c9 v; ~
%南海1998年12月31日某时的海面热通量数据及分布图5 h" Q- [, Z3 F- J% M% g a
%%2 j3 t) e. p- P. h2 X
%第一步:数据的展示& J" P" P; c* `3 ]
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
- n8 E2 X' h8 t filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
+ e6 O4 ?# `. F) n* G# q abs_path=fullfile(Path,filename);%合并,绝对路径文件! [1 ]- C( \* b. j
clearvars -except abs_path;%清除除了abs_path以外所有变量
8 w+ I; \ ?7 W* f y D7 n ncdisp(abs_path);%读取所选文件& z; q# [4 d8 o/ a! P4 `
whos;toc;
+ h$ m0 q) a- N2 x; L %% , f8 h6 c s) ~4 M
%第二步:数据读取- X( k# ?* c9 S
tic;Lat_ini=ncread(abs_path,lat);
7 B+ z0 I' I {4 K8 f Lon_ini=ncread(abs_path,lon);
) w) `% n9 J. _, s5 o Time_ini=ncread(abs_path,time);
6 [0 [1 ]5 v3 e: e( U Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
" Y' y+ ?( z d; h: O' g% X Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);: X% V# m2 |+ _& s- c
toc;clear abs_path;/ H" x' {/ W5 Y( M. B" p
%%
! Z% J5 G6 K; f+ r %第三步:确定边界/截取数据
: b7 `# i1 w' y %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°* u, W& b! Q2 O# r
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
" a$ O- w% d* d6 |" I4 } Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
5 H. t! f" I" l! k Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号) a" o9 K0 E2 V! P5 P
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)+ N( G- U, {4 t1 J1 q3 K8 [
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
: g6 }6 p- c) s% b, j Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)7 |4 H, ]" z3 A/ B6 J4 |3 R+ \
Lon=Lon_ini(Lon_start_No:Lon_end_No);6 Q; }# o( J! r/ V; P8 W* F5 T
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的' w: D5 F* ~1 C4 W, t3 Z+ \ K8 k
clear Lat_ini;clear Lon_ini;%回收内存' p% z" ]: a% F6 ` k
Lat=double(Lat);Lon=double(Lon);%双精度化' t9 p& j- H$ Z% o! Y
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
( C( l- g% A a( _ Time=9%输入时间,注意三小时的倍数
+ R. l% i: `/ U3 Y l! I Time_No=Time/3+1;, v) q" Q$ ?# l& k1 }
%截取数据并降维度
0 C x. e$ W' L+ L5 T/ _5 a Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
- ?, i+ H. B' w- D9 ]( r Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
c& t* n: @5 G- z. G8 d clear Sp_Re;toc;%清除不再使用的变量/ t `0 V3 Y+ ^; v
%%
0 i/ o" L8 g5 i8 k5 _3 \" } %第四步:绘图
6 V3 v3 W( p& V' k2 [ tic;figure;
1 y( p4 S* H7 D m_proj(mercator,lat,latlim,lon,lonlim);
( w9 O1 m3 a& l: B5 u [longrid,latgrid]=meshgrid(Lon,Lat);/ T; Y) T* ]9 @
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
8 Q, ^4 k) O1 g8 F3 i) A" t tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
/ P4 X) e" A% x; v$ O m_grid(box,fancy,tickdir,in);%网格化
( D6 d! _0 @) u6 R' Y j %brighten(.5);%亮化/ ? ]0 D) m! Q8 R+ Q
colormap(hsv);
$ g9 F1 N0 L/ V# C2 ^! t2 p- b h = colorbar(h);%色标! i4 J% H5 S' I: j8 j! c
h.Label.String = W·m^{-2}1 |8 s3 o* x0 r6 K: F
h.Location = eastoutside;%色标位置
$ F+ W8 F& A; M$ w title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...9 g/ g9 ]- @- y: b4 ~8 l
FontName,黑体,fontsize,12,FontWeight,"bold") %标题3 u! M) I0 p p! g" W# ~
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
3 Z1 t7 \* b v toc;
4 G$ c" t5 m+ B: z ) ?3 f* G$ I, \
附上另外俩残次品绘图结果,数据来源:IOCADS & N3 ]! v1 b2 P) ^, J% f2 ^
7 y+ t6 E1 ?5 h* u8 f* t9 q
5 W( |3 E* Y! n" @ f! T
- F9 W9 ?% B" O. d6 s/ H
) A0 c% U$ P7 s) S( O6 n4 d+ y; w. P( {: n8 ]
+ N$ g/ r7 [0 Z: | |