( F, P- W) z+ l+ `9 M9 | 图片赏析
3 z0 `$ G' \/ l3 A
4 t: R) D$ o) L. X/ g0 m
# g& c' y9 n; L v* O
0 h" s' G3 s& G 前言
9 d. {& o% ?" e* S" i- v 7 b: H( I! C6 F$ W$ B: U! E8 P
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° 3 \5 Z; O6 {9 h! i# @" E; v. ?5 g
数据来源:
0 x1 u. H8 l* C/ u2 _8 D( q& H
@3 a) B$ f+ r% p) X+ T2 j% U# ~ 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 ) B9 T* g) `; S
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
. z1 ]* _* C) ^2 J- t/ S0 Q 产品名称:Ocean Heat Fluxes海洋热通量
" v* O6 Q5 i: w5 l+ R" w 时间精度:每日3-hourly记录 O7 e3 H/ O* ~, _ }+ A
空间精度:0.25° " X0 E0 U- ^0 J/ o# {; W
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; ! S) s) ^( z/ I3 ~4 g
亦需调用gshhs高精度海岸线数据。 % z% {: K9 [+ @1 n( S
源代码6 V; w/ W" i8 t5 m. d- q9 J
%南海1998年12月31日某时的海面热通量数据及分布图
3 T" \, X; R! T- i6 G/ X# Y %%
( b2 g* f" F' U8 a7 p/ i' }' f %第一步:数据的展示: N* B' s E- K( c
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址. m+ }$ @ `, s" E! _2 [' g+ ~
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名. q q: M3 t8 {, @" D% e% T) V; J
abs_path=fullfile(Path,filename);%合并,绝对路径文件
# [% R7 T+ ~7 y5 K! Z) Q S' g$ @ clearvars -except abs_path;%清除除了abs_path以外所有变量# \8 x/ g- M3 k* N! Z
ncdisp(abs_path);%读取所选文件: O6 u) N- d# t) p; B
whos;toc;
K8 U+ V# j1 z% ^! \ %% 7 @2 \2 K) X9 R, n% v
%第二步:数据读取
1 W5 z2 f7 X& a' t tic;Lat_ini=ncread(abs_path,lat);( g; O1 o% V, [" e5 L4 E) h' a
Lon_ini=ncread(abs_path,lon);
3 r7 e! W/ x# K$ i5 X0 K Time_ini=ncread(abs_path,time);
9 S; ]" |# @: f Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);/ T( D- k& |# g3 r2 `% L) g
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);; c* I# h; O" `4 O$ C0 Y% e
toc;clear abs_path;
5 r: o. R% z1 b: p %%' v0 ^- b& J/ f! [, j
%第三步:确定边界/截取数据8 D# H1 C- [0 L: j( |( x! I! ?
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°4 q, e2 t$ V3 R+ @& k$ ?" A
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序 t6 A, k4 K6 s
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度+ L/ j: Y0 X- C! ^
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号). h7 Y. ~& a/ V3 \8 J; Q& L
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)7 ~$ m, N% ~; y0 ?# k5 ?8 ~
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)( o* M$ `. D \# g" x# N5 y8 B
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)% v2 ?+ W7 ~6 V7 V# i
Lon=Lon_ini(Lon_start_No:Lon_end_No); w* e' N! a8 J# f" }
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
( B y8 o, }5 ]! s( y% ^ clear Lat_ini;clear Lon_ini;%回收内存, D1 ]# c, f# a* Z4 ]
Lat=double(Lat);Lon=double(Lon);%双精度化
( l- P8 ?) ]7 u latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];7 i6 s- m+ }5 R2 p7 B
Time=9%输入时间,注意三小时的倍数+ j5 |* m% u- c9 ~/ V ]
Time_No=Time/3+1;
9 N% ^# ]9 G" I b %截取数据并降维度* ]5 e: r; W9 P- }# f
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
/ J- U8 H3 ]: i" C, I/ R Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
* k( d! `! n# |" _+ s clear Sp_Re;toc;%清除不再使用的变量
% L. Y$ ~7 \2 S, J6 u* t. K; @4 w %%
. r; ~. f9 I4 Z% M, t, r& G %第四步:绘图4 v# J( l) i5 b# k7 g
tic;figure; M! H/ D' B* ~
m_proj(mercator,lat,latlim,lon,lonlim);
& r8 D$ a2 g; i$ P" E [longrid,latgrid]=meshgrid(Lon,Lat);
5 r+ k1 D7 `, k m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
% r3 y6 H( V& [* |/ a3 | tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
8 w; _" |9 X6 p- a1 D m_grid(box,fancy,tickdir,in);%网格化. b% C1 t& {- [8 P2 ]' e9 t9 Z7 c
%brighten(.5);%亮化8 w) q8 l6 m" N9 x# t
colormap(hsv);
. H. p4 f7 C1 L- h8 a h = colorbar(h);%色标
! N; s* Y) D2 `9 n h.Label.String = W·m^{-2}( r& ?7 n5 e# A @8 O1 m" G9 w4 g
h.Location = eastoutside;%色标位置
( Y' f- e8 D0 X title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...4 v$ Q3 H4 E. K
FontName,黑体,fontsize,12,FontWeight,"bold") %标题, Z5 F2 a8 M! J1 `
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);' i: E9 \( I5 G2 ~/ k, }
toc;
7 k9 ]' ~$ u; g
, i" m% u D/ N% r% t$ V& Z) a 附上另外俩残次品绘图结果,数据来源:IOCADS
3 b* a3 r5 e* Z) v# [, S " n) E9 I, O$ k) S* z5 ]
( i. s4 Q7 [5 ~' i+ O( t' Y" S. q1 N- {/ X. T/ u
/ Q% x# b2 d; L5 X
6 W& ]& ]: i! O w/ e# s" L9 L, K. l2 \$ u
|