/ Y2 f, E Y- T/ N% y0 N
图片赏析
* v( d9 Y& `1 _
" d) F2 V+ B3 i( N9 } 8 ?/ z* C* d: o% E
2 \# F3 A# |3 U4 h0 n( Y" u
前言
. g. X- b! y5 K' C
; J+ S& ^" B( [" @: [ 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
- b' e: \% _6 Y4 @; s. y 数据来源:
4 @* V4 Y% X4 Q
: s4 d- G* Z5 H3 e' W 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
& b- w0 y; c# Q 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 * R3 t4 G2 [9 A
产品名称:Ocean Heat Fluxes海洋热通量 7 U4 G/ k6 F5 n9 ~' Y
时间精度:每日3-hourly记录 9 t1 E$ ~" l# i- y
空间精度:0.25° 8 r8 ]0 i9 i& X1 S9 J5 V% o4 ?
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
9 P% L1 G7 D8 p! A 亦需调用gshhs高精度海岸线数据。
* _) H- S1 P0 ?0 _1 Z 源代码2 A, P- t7 S" K+ a
%南海1998年12月31日某时的海面热通量数据及分布图 B& l! h# T5 ]1 z$ Y' A" |# K3 v
%%! E! X- l4 ] V, V2 p2 w9 H6 m4 _9 }
%第一步:数据的展示8 I! F/ T+ X$ ?3 b z7 v q
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址9 r4 B2 ~# I7 F7 I& N" Z
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
( N, U N2 u* q2 Q+ U$ x+ h abs_path=fullfile(Path,filename);%合并,绝对路径文件
) }. h5 e9 y1 l4 s. ] clearvars -except abs_path;%清除除了abs_path以外所有变量+ Y. P: x* R* h3 O0 s9 F# l
ncdisp(abs_path);%读取所选文件
% @) X8 r) Z' D whos;toc;5 ~" n, ]4 O6 _ X
%% & y8 i2 I# |9 n% u
%第二步:数据读取2 l; @! Z4 R+ m( B# V( t6 I
tic;Lat_ini=ncread(abs_path,lat);2 H! R: X4 V# B' f; v1 h6 J
Lon_ini=ncread(abs_path,lon);
2 P! x" W+ E1 \+ O; X' c Time_ini=ncread(abs_path,time);
8 h7 Y- ~0 H; q7 M1 d0 ~: Y/ f Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);: G9 ?, _, @5 @- Q& d. h3 R
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
5 t0 v1 n% L" ]8 Z toc;clear abs_path;2 I: z7 K$ @9 c5 `5 R) D# l
%%5 Q2 J1 x9 ~9 h6 H7 g+ |- ^3 t
%第三步:确定边界/截取数据
; K2 u+ m* d# y- ~5 P %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
( a0 z9 J2 x$ o" b. w- o+ |/ p tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序6 Z9 m$ J1 L# E3 G! _% v! E
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
; [" A {% m/ q Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号): u! j# e5 @0 W% l
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)* t' G7 l7 h7 ^; P0 Q/ A- d
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
- c% I( U' x- @$ V Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
K" c- u$ p# d- W Lon=Lon_ini(Lon_start_No:Lon_end_No);
4 G& P0 ]. j3 H2 ?* f Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
2 W1 M8 y q9 Q* s9 B clear Lat_ini;clear Lon_ini;%回收内存
! L4 Q. Z! L4 O9 ~2 n5 f% x, D Lat=double(Lat);Lon=double(Lon);%双精度化 X2 i( i: R+ {3 p6 y/ L5 k
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
& d- y- s9 W; {% [ ? Time=9%输入时间,注意三小时的倍数* B& C7 f, c( M5 b& p
Time_No=Time/3+1;$ [8 I5 l: c/ _0 ~$ U
%截取数据并降维度: t5 f4 Y8 p' z; f5 ?! G% k8 ]
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
/ ^; J; E6 q0 N; S1 n( h* X1 O" R& C/ V5 M Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
. @& x. O2 ~1 N& r( H* v. [ g clear Sp_Re;toc;%清除不再使用的变量5 X4 s3 ^8 t ^* |- \* _9 h' K
%%. W' l) z/ t1 ?3 [) g1 a- E
%第四步:绘图0 H- `2 z5 Y u! L/ @5 X
tic;figure;
8 V+ p2 k' y# ]( l m_proj(mercator,lat,latlim,lon,lonlim);
h1 w% `6 v& a/ a [longrid,latgrid]=meshgrid(Lon,Lat);; J4 t/ r2 P! F6 k$ o
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
6 @- R* l4 ~. b" {4 s3 b: a tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
& a1 Z% N+ n% Z6 |# q m_grid(box,fancy,tickdir,in);%网格化
5 G" A3 X; j6 Z! w( }- _. s5 E' Q o %brighten(.5);%亮化/ m# M$ c, F! {! B$ K
colormap(hsv);* G. p* c2 t$ ^5 a: R$ R( ^3 q
h = colorbar(h);%色标
+ V+ \4 ]! O5 ~ h.Label.String = W·m^{-2}2 x1 T# |0 Y/ h9 A
h.Location = eastoutside;%色标位置
1 U3 C9 |+ a* d title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
9 k: K! E- l3 G, ?* P FontName,黑体,fontsize,12,FontWeight,"bold") %标题
0 N: O, Q" Q6 D+ D xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9); m7 O4 \ o6 U- V7 l3 E; t8 [
toc;
: e9 p/ z' q A) C 5 n, m; v8 C, \
附上另外俩残次品绘图结果,数据来源:IOCADS & \" u8 {7 @! b0 k5 K. U- \
' z2 B0 r# W5 i% r( \
2 I2 C. O+ S6 @4 i) t9 M+ t6 K) M2 i% e, T3 \" C/ K
7 [' S* @, S4 B: F& g2 C1 ^7 z
& }( y1 v7 y. v$ C5 _
|