; C) @: w$ m# @ l2 m 图片赏析
+ l" X9 q& Q+ p' d A # q1 I( x, u. N, b/ R6 y, V6 ?
1 P6 J. O& Y. l9 m 5 V$ |# G9 _' K4 e# ~' \
前言 l) N9 g& y/ c, B" n: T/ U$ S
: E( @9 ^- E# S 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
7 n. z# C6 [- Q, L& M% V2 ?( ] 数据来源:
7 N, U; M. n8 @- Q+ A' q + |6 G9 \( V5 { Z" o8 [
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 & ?, v! f/ O# T. A( x; n) t; |, V
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 + R/ B6 [4 S4 H( W
产品名称:Ocean Heat Fluxes海洋热通量
) x! F0 ~( v# |; Q6 s/ j) {0 [ 时间精度:每日3-hourly记录
, N1 I3 P: Q3 ?: y; Q6 z# S/ D5 |& U- U 空间精度:0.25° ; z" w: b$ c1 ?( H. ~% G+ w! d4 y
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; ; s2 u; \: p$ A& e' z: }6 S
亦需调用gshhs高精度海岸线数据。 , \4 r6 G8 D K: b# b0 S: j
源代码
1 c, y4 ] L, m& Z6 h; e, L6 K. [ %南海1998年12月31日某时的海面热通量数据及分布图" f( ?$ Q* Q2 u" W& \$ L7 D
%%
* D4 |9 N, r" E/ a2 [ %第一步:数据的展示8 S+ l& J! d" f
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
7 N, C: [3 z% ?# X. A! u |8 j filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
/ H \ f8 p. }4 {0 l abs_path=fullfile(Path,filename);%合并,绝对路径文件. K4 H% _7 E0 p. {: i1 Q: ~1 T
clearvars -except abs_path;%清除除了abs_path以外所有变量% n5 L6 s3 o. L8 s' Y
ncdisp(abs_path);%读取所选文件3 O: F9 }4 _: \ y6 L2 ?
whos;toc;
4 t/ C* C; P1 t' l H %%
. R% n' ^0 q4 f8 l$ K %第二步:数据读取
- l' q- k4 q1 C- H tic;Lat_ini=ncread(abs_path,lat);& d/ k8 E# ]6 m, B6 I9 G9 R
Lon_ini=ncread(abs_path,lon);2 ~6 i* }; h+ X g. F+ E- N' _
Time_ini=ncread(abs_path,time);3 b, d* E6 S! x$ z: J; I
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);7 @/ D" B9 F# A z) m
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
0 \4 l6 v; ^6 |! d- o$ V% O toc;clear abs_path;
: j' a: a/ k+ P0 h %%
' n# O1 w, |+ T. x% U& H) r& V %第三步:确定边界/截取数据
5 J! d' |9 o6 G8 c5 B' _0 U( ?+ `7 s %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
* U' R, O" m+ x0 s; h tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
U* G9 b+ b4 u( B Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度$ e5 Z; l( y [. D* E
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)4 j# I1 M( k s5 D
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
8 R- @; Z. f5 f! D# s Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)3 {2 N! ~0 r$ z8 q6 f# ^3 ?2 y
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
; ~$ ~( j( r& l7 `/ L6 R Lon=Lon_ini(Lon_start_No:Lon_end_No);
! _/ H' j; y3 Z, p Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的& d7 X8 F$ N6 { w; R
clear Lat_ini;clear Lon_ini;%回收内存6 T9 v- N* w: W& c! Y- P
Lat=double(Lat);Lon=double(Lon);%双精度化4 o# h$ y- u3 a. Y! A1 R9 C
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];7 ]5 K) W. i+ a. ^6 D6 T6 A
Time=9%输入时间,注意三小时的倍数
/ ~& S) G- P/ T* k8 q Time_No=Time/3+1;
/ M9 P r" V( n: _3 Z. A d* z %截取数据并降维度
0 @6 }- \# ^6 ^7 l. U" a Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的' `% E G: i0 z* J
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的3 F1 [; }" t9 h r
clear Sp_Re;toc;%清除不再使用的变量
7 I9 X8 L0 w* s1 n8 @9 F %%3 \+ P6 V, V. e ]% G- R! D
%第四步:绘图4 M* M) B) P- T# B# r7 o% U
tic;figure;" t2 }+ b. I. U6 x) h }
m_proj(mercator,lat,latlim,lon,lonlim);3 @6 x* Z. k: ^. ]6 _# T7 z) r
[longrid,latgrid]=meshgrid(Lon,Lat);$ }( \& y& i1 n" _
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf# C& v" z! I2 W9 @5 ]' B
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f& g+ c, l8 L1 H) }
m_grid(box,fancy,tickdir,in);%网格化
# k; h4 @2 y7 j7 }$ _- H3 q %brighten(.5);%亮化
; Z. k' M4 e4 n( P( c2 Z% M colormap(hsv);3 U8 T: Q# @, \5 j" ]% b1 Z Z
h = colorbar(h);%色标 U: }6 f! W" y* }3 M0 H y: z
h.Label.String = W·m^{-2}' W! w0 }1 Z8 w$ |
h.Location = eastoutside;%色标位置
0 o) W+ c! l: [6 M6 ~. d# \2 B! {+ J& g$ i title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...2 D1 `4 R. P8 g1 O0 A
FontName,黑体,fontsize,12,FontWeight,"bold") %标题7 ^1 ~& c. n6 l8 m( i
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
& \6 p5 p1 H! K( R( Q toc;
' o4 t; E7 c& n( ~+ H$ P8 C " Q8 Q5 x' c- y4 o
附上另外俩残次品绘图结果,数据来源:IOCADS
) Q& C8 y7 m7 A$ D 0 r( F" r* F# G2 k
, b- r" F' l4 @8 W$ a6 ~8 l1 z X- M( d
4 I7 h4 `! o, q- m+ z2 n! h/ a% h& w8 H: w* v
0 D+ f+ @( p! L
; [! b* N# p" x& u0 e |