* Z" M; P; c8 }4 |, D& C" E( E
图片赏析8 J$ i: o' d* e$ m: \& z
1 H D) a5 B' J/ ]
& W6 [/ t, {+ {9 P
3 a' v2 }, q6 D! f) w1 {
前言 3 S& ^% n, i$ p! H
* S: ?/ j3 \( u; R0 M
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° 6 I7 ^0 R2 S% b9 S
数据来源: - h4 [: z# H0 J# A
7 O2 Y' {1 l5 [$ m 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 / S1 s" D# O& @* w# a" J6 `& e
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 3 t( x- T4 a" K4 ?, i
产品名称:Ocean Heat Fluxes海洋热通量 0 F. R& ^' l8 V
时间精度:每日3-hourly记录 / N# I7 k9 T& C' P: S8 F. N
空间精度:0.25° 9 t( Y" V* i M0 E# f2 N2 Y, T
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; , q; v, _: p$ V9 B
亦需调用gshhs高精度海岸线数据。
7 s- c1 v( h/ d$ c) M" M. \ 源代码
, I* P5 X% O: M3 b7 \ %南海1998年12月31日某时的海面热通量数据及分布图
7 k) `# ]5 v8 D %%
) R0 B# ^& \# y4 x2 v* D$ C- w %第一步:数据的展示. g( }4 B+ a; d3 r4 d9 l- l# T5 a
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
" K: u! S4 @4 i" p- x* e! q filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
' g/ z* e$ x+ h" [2 }1 ~& | abs_path=fullfile(Path,filename);%合并,绝对路径文件
7 M9 [- p- q8 \5 P clearvars -except abs_path;%清除除了abs_path以外所有变量
6 y7 ?( Z6 t5 }9 y ncdisp(abs_path);%读取所选文件
4 H0 H* s/ n. v: ?( M9 K whos;toc;" l, s. e" l5 ~9 A( M% o
%%
4 R$ U3 ~$ V7 X x %第二步:数据读取
1 a, `' m& P, J! |6 _ tic;Lat_ini=ncread(abs_path,lat);8 ~/ U- B* X9 F/ @
Lon_ini=ncread(abs_path,lon);! {4 D: j' O, |9 F# S7 S( f
Time_ini=ncread(abs_path,time);" I! S0 z: ~/ G" }& z
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
8 ]+ R5 M* p3 g Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
E4 G2 J3 t }/ p8 Y toc;clear abs_path;
/ \) X6 {; c2 R5 W! W7 i H$ a %%: O& E$ ~" c8 {2 j- ]! X, ~
%第三步:确定边界/截取数据. T+ B5 N" u$ L
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°* j6 i# {/ R7 B# S2 X7 G0 s) U
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序' j; U$ F- h) X! b
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
5 V! G$ ]* N5 b1 P3 O0 }- n4 Q3 ] Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
5 A9 S5 R h/ ~* e# d Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号); h. S$ X. T6 }$ L9 q# W
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
9 @ {3 l, b! d0 x4 K Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
0 \4 l- u; }+ k$ j$ G% @& w Lon=Lon_ini(Lon_start_No:Lon_end_No);
: H1 N& M7 v: \ Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的( e' F, B4 U% C" M9 n
clear Lat_ini;clear Lon_ini;%回收内存
# a Y" {/ I8 F+ I; Q Lat=double(Lat);Lon=double(Lon);%双精度化9 @3 X/ Q: q# W3 E. _
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
* I6 W; I5 V" R6 U+ w1 o3 ~ Time=9%输入时间,注意三小时的倍数
, V8 G3 `3 M4 r; T Time_No=Time/3+1;
n. Y/ Q3 H7 ^ %截取数据并降维度. [% q3 O7 u r
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的0 ^3 R( a* u* l5 y t/ \3 O- d
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的. S% D$ a+ R2 C6 T9 z6 }
clear Sp_Re;toc;%清除不再使用的变量& H* ?' R4 R3 m) ^; z$ p
%%" u5 u" X5 L: Z U; B! m6 c) R
%第四步:绘图; A) J# n7 e8 M4 z
tic;figure;4 Q9 }. K8 ^5 Y& [) p& {6 w
m_proj(mercator,lat,latlim,lon,lonlim);# ]& W$ R8 e5 R$ M
[longrid,latgrid]=meshgrid(Lon,Lat);
4 O+ K! N0 X/ v% Z2 u/ B) v" g m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
) |( T. t* a+ A, W9 [5 M0 Z1 S tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
: [# b+ x9 e, k% s: J2 k) e m_grid(box,fancy,tickdir,in);%网格化3 }2 W& h! B, a" o8 f. m
%brighten(.5);%亮化
1 s: d& j' Y8 z+ l" w0 f$ q) L8 } colormap(hsv);4 A2 p) e( y; a
h = colorbar(h);%色标4 \9 C2 E# i( O: d& g6 y
h.Label.String = W·m^{-2} d9 s+ F3 p. x1 Y3 U
h.Location = eastoutside;%色标位置
1 |. ?2 h9 \5 c title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
0 x w7 T3 n) g+ W& \+ H FontName,黑体,fontsize,12,FontWeight,"bold") %标题1 D# {7 N3 |, w. O0 G7 _& Z
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);7 b7 f1 o' h/ r: W$ ^
toc;$ R" M/ U+ {! n5 p$ v
+ q7 P9 o+ ? k2 d- a( `0 J
附上另外俩残次品绘图结果,数据来源:IOCADS % q8 G! ]5 c% |9 b3 P. C& h; H
3 F/ g9 [8 X" g& f5 h$ Z
& Y8 E+ G# M; i- g, ]: n/ i0 j2 I- Z% _$ Q8 _! _' t
1 A* W% e5 H( e" V
2 _2 a. I$ [ d/ R5 ^! f
; J5 I F1 r( N& v |