) c; t4 L* J7 t. `, g0 W
图片赏析9 B4 P n A+ e3 S4 R5 y- e
' `1 s2 q9 B8 H2 d+ a: q$ N
: G; a7 _% t2 }- {1 t . K' \/ x1 S- u( I5 z
前言
. `6 P* @8 S: G; S5 J8 a: R( B. ?: B
2 W( T1 V. A# |3 V: j, v 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
7 }5 e# E5 }0 ^$ A& y& e3 i 数据来源: # x0 y- j. x+ e. y" m# _8 q
: N6 [9 F! Q# {, H+ `5 Q8 X% H
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
, c E- t+ R/ y2 ]% V0 N 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
& \; A- q9 D) x1 l' X 产品名称:Ocean Heat Fluxes海洋热通量 / P z+ A$ i$ L+ G
时间精度:每日3-hourly记录 0 D) H q2 }( z9 U, Y* t
空间精度:0.25°
9 G0 B: @4 J* y/ y' f5 b 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; 6 ]. f" {7 F3 [. ]: ]" n( i9 V9 q
亦需调用gshhs高精度海岸线数据。
+ z% x- N" r F) a+ c% f 源代码
# |( ]! j& ~7 T& f %南海1998年12月31日某时的海面热通量数据及分布图4 O3 G2 }. ^* P3 M( Z$ q! w
%%1 v, c f0 E) M- R Q
%第一步:数据的展示
1 R5 t+ p& h& x* W$ a tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址8 ?7 l3 f3 Y+ l$ M+ e
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
: V7 ?0 O0 B B+ f; f5 `8 w abs_path=fullfile(Path,filename);%合并,绝对路径文件
W1 e* R# i& i# o2 U clearvars -except abs_path;%清除除了abs_path以外所有变量
j1 @ C" O+ n: z7 Y) Z ncdisp(abs_path);%读取所选文件
. ]3 ~/ j& ]4 C3 F" { whos;toc;
$ {4 y' f. n2 i. A3 \ %% - N6 x7 D( d$ Q) K4 z$ ^; l F0 ^
%第二步:数据读取/ {( o+ J( {) u! V3 W( J( v
tic;Lat_ini=ncread(abs_path,lat);
% V7 f5 ~* l8 l- X Lon_ini=ncread(abs_path,lon);2 A9 D$ `* u; V/ m2 K, b
Time_ini=ncread(abs_path,time);
8 n% U! S- {2 I, {2 | Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux); f& }/ i+ k, w
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
! I+ z3 _0 m, q# d" E2 l, E toc;clear abs_path;; _8 L5 W) n( f/ ~5 |+ C$ I H
%%
" A0 n$ o9 _6 {% ]6 [0 n9 l %第三步:确定边界/截取数据
! v: E7 q% \: [- y %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°3 ?7 {( M8 W* i! ~: R' v$ I& T
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
7 x) }" G$ n: R( W Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度% ^) f0 N8 P5 W# |, S+ D" V
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
. q5 @9 @. J5 v0 e& F Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)1 ~2 \' ]/ s' E. c
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)5 n; r- E% m, D& s2 p% L( _3 u/ t
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)' s3 S6 l g: \( p% W
Lon=Lon_ini(Lon_start_No:Lon_end_No);! k0 l9 E3 ]4 L% P
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
; W- S) K6 @& s: n% k clear Lat_ini;clear Lon_ini;%回收内存
1 J! R# ]% q7 D/ n Lat=double(Lat);Lon=double(Lon);%双精度化
G% z0 ^) A& n0 ^, f" E7 k latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];6 x0 ? s0 E0 G# a
Time=9%输入时间,注意三小时的倍数
0 x8 {$ A1 s& F3 H2 T7 c+ h Time_No=Time/3+1;
4 U2 T( Q. e+ J- ]/ h7 ] %截取数据并降维度1 W& \+ T. w- i
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的; F9 \8 H2 I" \0 I! F9 X
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
+ V2 [ B9 U; Y: v7 H; \! V% L9 f clear Sp_Re;toc;%清除不再使用的变量
3 P/ O1 P& _6 K x %%" p! ^ I- h, v! |! r: f1 {
%第四步:绘图
6 C5 s( W) O5 W- O d1 P( O0 P; w tic;figure;% t6 J2 m' d7 `9 S
m_proj(mercator,lat,latlim,lon,lonlim);
2 R& T( y: V% ^( m+ P3 V [longrid,latgrid]=meshgrid(Lon,Lat);
9 ^+ n3 q6 X7 Z0 u0 V1 C0 n. H m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
/ @3 V. B2 e2 E, s2 X6 K tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
9 O0 s4 f9 Z( c' k m_grid(box,fancy,tickdir,in);%网格化' Y- F/ y0 d8 N/ O, v* a
%brighten(.5);%亮化7 C, p- a3 u z/ y5 s' [: f
colormap(hsv);1 m# i' k2 I* b: n/ `) p6 s$ X
h = colorbar(h);%色标
% W N% I7 g# A- p& ?# Y- V. ^ h.Label.String = W·m^{-2}
8 N! _. @9 l7 a `5 _" u1 t" e h.Location = eastoutside;%色标位置
1 \/ j+ T' }8 B8 Z' N, i, [: p title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...7 l4 T2 B" p% N/ g% [& Q" @
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
0 _) Y$ E% V7 _ xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
r# n! v/ i: Z& b toc;
+ x' v' y3 g. Z 5 B! E5 I" v/ @/ S; ?1 N
附上另外俩残次品绘图结果,数据来源:IOCADS
: M! R7 B3 y' j M, q0 D0 f . ]( X6 H- G. I6 y' d0 Z" u5 J
) q; E# j* {# f6 ^6 a5 ]. t- r+ m
/ e1 N4 F9 p8 u, G8 r1 {
- i; I3 F+ R |* }5 c( s
! C* a4 C/ \. R3 ^( [
7 |4 Y, X j( Y; H |