2 S( v' K5 R9 I4 K
图片赏析
* p) N( R6 e/ P T# C$ D! Y 1 r- y8 O a, I/ P1 X. j
2 }3 Y2 _' x, r% j
: O7 W$ s/ j4 M8 i
前言 3 H9 k+ |3 t& h8 E8 p2 J2 [
- [# c: {+ G% z8 |% p" h& j
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° 1 ~7 r: k% G- P% I8 l& Y
数据来源:
6 Y1 h2 V$ t" r1 x
2 l- X$ D2 m9 i+ t5 C# }8 Z 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 3 a/ W5 ]8 L8 `( n
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 3 p6 z# X: V& W* j/ D
产品名称:Ocean Heat Fluxes海洋热通量 ' b9 g8 [, N4 S" r) M9 F) s& }
时间精度:每日3-hourly记录 9 v5 _: o# n1 V4 `- ^' F
空间精度:0.25°
' j8 Y8 Z7 V" Q+ B: _: } 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
4 b; J0 `+ o% {$ E4 Y" H 亦需调用gshhs高精度海岸线数据。 0 }+ b+ y$ R7 ]1 w) g9 ^( s$ t
源代码
O1 L& w* D6 ]: G6 y %南海1998年12月31日某时的海面热通量数据及分布图8 g0 a" v) `7 V9 z. Q
%%
4 j2 l- {* }0 t) [0 l. J7 F, R; R %第一步:数据的展示7 M$ e6 e' q/ t( L" {/ K6 o+ H
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址, e: |: t/ f: z
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名! z, ^& Z) o) u
abs_path=fullfile(Path,filename);%合并,绝对路径文件
1 _/ G. _& `" C8 e7 q clearvars -except abs_path;%清除除了abs_path以外所有变量
4 a" X+ _. K0 S; y# M ncdisp(abs_path);%读取所选文件- ^7 J! n9 D0 e) K
whos;toc;
/ w3 H5 w% ~6 J3 q% ] %%
" F4 ~& E4 y- I& b8 } %第二步:数据读取$ O6 k6 |0 N P* o9 e( ?1 k
tic;Lat_ini=ncread(abs_path,lat);% _+ a- X+ ~- a9 G
Lon_ini=ncread(abs_path,lon);3 e+ ?) P2 V0 z" V& o
Time_ini=ncread(abs_path,time);- }: O* Y/ o2 r- y
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);. N' b$ `& O# T; J2 [& p
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
3 z! v/ o/ g! n8 h9 I toc;clear abs_path;
1 W; j6 ]$ G# }& L %%9 u- ?' ]( e" v$ V, u
%第三步:确定边界/截取数据$ a1 a) Q0 s, y( o4 e
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°0 d! n2 H ^* H6 h
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序# k R. |" y* c k7 Y% a
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
$ x" o- l, z7 r8 \5 R Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
# u' ]5 b# _$ J$ x2 k Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
c! D/ u; j( V$ ] Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
4 X; E( X: i% }( g- W: x: K7 ~ Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)5 G8 {1 ~% }& S# N1 s
Lon=Lon_ini(Lon_start_No:Lon_end_No);
8 {7 s2 |/ @9 m7 t5 k* a Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
7 t+ v/ S7 U8 b; ^* `6 v clear Lat_ini;clear Lon_ini;%回收内存; L: J @4 Q2 Y V1 C" ^7 ^+ {
Lat=double(Lat);Lon=double(Lon);%双精度化
; D2 a6 V k' t! y! P9 I8 s( [: V- d latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
6 x3 J5 R, `% h3 T# z Time=9%输入时间,注意三小时的倍数
+ H3 `! X8 K8 ?7 _3 U' i Time_No=Time/3+1;3 e4 L% x2 `# r) _/ d8 Q
%截取数据并降维度( f8 V/ S- L, y3 D( O
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
1 x7 f2 C& R7 F: M8 _ Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的) _% A" S# ]8 e3 r ^
clear Sp_Re;toc;%清除不再使用的变量
: W/ T+ z+ I9 V) P4 _+ {3 M %%
" M9 g2 s" l( ^5 {( k( i %第四步:绘图% _0 s- P7 f* {/ W- J
tic;figure;, i$ L0 U% U3 b3 k ~
m_proj(mercator,lat,latlim,lon,lonlim);
; x4 G8 Q8 K0 N' P1 L) L4 m [longrid,latgrid]=meshgrid(Lon,Lat);
% w' S' X$ I& S2 Q1 Y m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf: k( s9 ?# Q* W! s" b
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
5 U9 ^3 ] m; g/ R0 ]; Z" n m_grid(box,fancy,tickdir,in);%网格化! t# @, O: m$ q' ?
%brighten(.5);%亮化
6 t7 ^8 C8 \6 Y+ _ colormap(hsv);# Z7 `6 N& y4 V$ }& P% S
h = colorbar(h);%色标% G) V5 I- G( |/ {2 s p& y- o
h.Label.String = W·m^{-2}) z( g$ Q% Y4 S6 x. w
h.Location = eastoutside;%色标位置
. N2 v8 [* {/ p& O0 v+ y title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
* a0 K; A; l) @ FontName,黑体,fontsize,12,FontWeight,"bold") %标题
, h; g B" U I( I* z xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
1 B) ?/ {% ]- Q. _( o toc;4 t" s t# P q, [ S
. x& ^4 k+ a3 ~9 y+ y8 p0 }
附上另外俩残次品绘图结果,数据来源:IOCADS
1 U, u2 z5 u7 Q! Q! } $ C6 s1 v, D+ y' e* V5 B' V
s) s/ r; H& \9 F( J
$ \$ e- S- K' e( X$ R* a5 X2 q% ?2 E9 }( H$ W; o- Z
$ h( ?0 B7 \; a. R. i& d% w2 H, k- D" }% z# y u
|