/ x. ~7 m5 V" V' B# U! H$ m, O7 U 图片赏析' U1 ^# J* T0 P. ]0 d4 c
4 U6 w, T+ k+ H; a, H
. _; O. j* a# o3 O' x0 J " W9 t: i; x/ h1 {; o/ H, B
前言
( H U: |5 Q5 U$ d$ C2 l
6 m5 X. o. r' A 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
- E8 g# v9 m# R* H% O 数据来源:
2 B! `/ a) T. A% ]/ C2 h, C! A0 O - K Z) }+ |5 g. C% ]2 `% X& _, {! \
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 : c9 S0 m/ E/ g2 ~# G( p
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
7 S/ z. u/ E; U# ^ 产品名称:Ocean Heat Fluxes海洋热通量
% L) r0 [4 ~1 I) N% _" b0 { 时间精度:每日3-hourly记录
9 p4 l @; C# D* @ 空间精度:0.25° 2 v/ H( f% u, Q, a$ u& B/ ~+ v3 i2 k
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; + M+ { i& L& `! c$ k
亦需调用gshhs高精度海岸线数据。 0 W9 h9 e" B+ C$ J
源代码/ t8 ]+ C4 z+ t: J
%南海1998年12月31日某时的海面热通量数据及分布图9 Z, o8 u4 q% L1 @* }1 ^
%%
# \3 R. ]4 y7 i1 {7 k4 W0 P %第一步:数据的展示. d' `4 G7 A |$ [) V
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址: w5 a( R' _3 Z) @* J* _# d
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名9 a( |3 }; K0 b I6 b2 S
abs_path=fullfile(Path,filename);%合并,绝对路径文件7 j& u5 {$ l: `
clearvars -except abs_path;%清除除了abs_path以外所有变量
' H$ N. V D/ e6 w' J1 b- m ncdisp(abs_path);%读取所选文件4 i' X: z3 w$ @
whos;toc;* C) J+ T. l8 d: ^% _9 h% ^3 ?
%%
. u( p. H) \8 U4 a5 c! {: ~$ \) @ %第二步:数据读取# Q( w1 g6 x! f
tic;Lat_ini=ncread(abs_path,lat);
]" O* v! @) p1 H/ K Lon_ini=ncread(abs_path,lon);! V0 b9 k1 M2 W5 ^7 ~% G3 i! B
Time_ini=ncread(abs_path,time);2 N, i% R% a2 T) e U
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
9 L' R* c& B% M/ p# Q1 R2 R Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);# l- k' ~/ K, [( e1 i/ x' ]$ T! r
toc;clear abs_path;8 s# B; x4 x( p7 |2 i
%%
* w0 m2 g0 h# G %第三步:确定边界/截取数据; N( v7 E: T( m2 \8 _1 O# w
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
& ]6 H" I6 j0 z+ V; d6 S tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
3 Z; o- U) G# j% G Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
( w& w, d0 M4 m Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
: [, s4 U- @8 @* n* ? Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
; `+ r+ @# B2 l; j1 [ Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
( W7 J3 Q: y3 n0 p Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
: T" b; }* R* d8 t) c% Q3 Q Lon=Lon_ini(Lon_start_No:Lon_end_No);
! h* P* }# c2 e# u% N/ R Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
. y3 n1 g) N/ {& ?4 r clear Lat_ini;clear Lon_ini;%回收内存/ B, l- R+ r3 y9 a! G: ] V
Lat=double(Lat);Lon=double(Lon);%双精度化7 G0 [* F5 o+ e: e
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];6 h$ `3 M2 p6 Z
Time=9%输入时间,注意三小时的倍数9 m9 H5 l9 |& ]8 P& t* o* `% `
Time_No=Time/3+1;
. S- [! I5 m. N5 c- _- a %截取数据并降维度& f6 a" g$ Q# K( o$ D
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
8 }$ D$ _5 z+ S; d Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
" l) F7 Z* h( a, d0 ]. t) G& r clear Sp_Re;toc;%清除不再使用的变量
* I2 n8 P/ `! L p* v %%0 P! B1 M5 g, }, o% u) f9 i. X
%第四步:绘图" x# H) k& m8 _& `. |8 d
tic;figure;# l/ _& t6 A9 M4 R
m_proj(mercator,lat,latlim,lon,lonlim);
$ p d- s5 k! O. ?/ p [longrid,latgrid]=meshgrid(Lon,Lat);
t( F" C7 ^5 \5 w$ H6 b1 i& ] m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
9 t* D( j: I- u9 ` tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
- w- E0 ]/ [' m1 H3 ]; P% _5 p% U m_grid(box,fancy,tickdir,in);%网格化9 E: m8 g# D% t) i
%brighten(.5);%亮化
; i# F$ a( v% W; `. J% Z colormap(hsv);/ w! u. G0 W, c' d
h = colorbar(h);%色标
0 R% W( ~, q. g h.Label.String = W·m^{-2}3 N3 h* [ K1 r( L3 T
h.Location = eastoutside;%色标位置' }% D& w8 I0 ]6 h9 X
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...: f8 Y8 h( q' Y! v% F4 a
FontName,黑体,fontsize,12,FontWeight,"bold") %标题- _- Q' u/ z$ _* W% |5 t9 H/ n
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);9 |1 Q* x. C$ U5 V: |0 c5 a+ I
toc;# [. t5 L) U$ v8 U
1 r( z0 T8 s( W5 B
附上另外俩残次品绘图结果,数据来源:IOCADS 6 m1 d( y+ Y3 z0 {. q2 y
# v; J) c$ b( R5 G8 ~
2 z$ a' v! e# B, ~' \# q/ k. g/ q3 _: Q3 g, |
* \" a* R' l; o% G& |1 x7 P7 q
7 _2 y/ j& K& Y$ |1 G) d4 q, n
$ b2 N" a$ L( P% L: v' ]- b |