R- a: i. G% a5 S, I
图片赏析
) n6 p7 ]% ]( [3 y2 L$ a
5 ?0 ?+ t* W+ e' G1 D ! d) L1 U( n7 l, X7 t$ p! |' H
3 |! O5 h1 \. u2 N! J/ L6 K0 c& ?! e0 f
前言
( r& `4 F, G W( P/ z
- X6 z& G: ^, ?3 r3 N( ` 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° ! s8 {- c7 i* W: ]
数据来源:
k; E/ c8 ^9 \" g4 m, d
1 ~# l/ \0 k# x" M' {, y 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
1 t9 H3 H! l; N) ^) d' o6 c7 _ 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
1 E: x+ {2 `- c9 D5 d3 v 产品名称:Ocean Heat Fluxes海洋热通量 & [+ P( _) m+ J! n0 Q: a# [
时间精度:每日3-hourly记录 ' ~: T- c6 _5 A" n# C% A
空间精度:0.25°
" y/ x4 m' O3 s; |0 P- B& K# V3 M4 P 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
7 v7 D" K9 s+ _0 y 亦需调用gshhs高精度海岸线数据。 ) E) W3 F" Z4 e! M
源代码
: _0 t0 p1 m0 T3 W5 W2 z! m %南海1998年12月31日某时的海面热通量数据及分布图& z8 @$ w8 @7 E" v
%%0 ~2 G: K6 _0 L; D9 a7 Y
%第一步:数据的展示( o$ Y0 @' K% ]$ Y3 O2 Y+ c( s
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
7 r! T0 C3 O* n1 w/ u4 _* S6 u# h filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名0 F6 W% D3 c, T3 B% A# v
abs_path=fullfile(Path,filename);%合并,绝对路径文件; Y3 ]5 B% m, C: `/ j# a
clearvars -except abs_path;%清除除了abs_path以外所有变量
: }$ X3 ], @2 v4 a; V" {/ T ncdisp(abs_path);%读取所选文件& ]' g/ @+ I5 P D
whos;toc;
. J3 N! a; @$ q& @0 y8 H( p* } %%
/ U8 F2 S( S l5 i1 I) ~1 ^ %第二步:数据读取
* f& B& x+ ^2 @- t tic;Lat_ini=ncread(abs_path,lat);8 R" |8 p% y& } n! q: r
Lon_ini=ncread(abs_path,lon);
, J* c6 V' r, J6 t3 h" m, M' t Time_ini=ncread(abs_path,time);
3 b, A' l7 {8 \ Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);( ~, L/ b! Y- ~; ^$ Y
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);3 r! _1 Z. k k/ M6 h: A7 F! ?# U
toc;clear abs_path;+ b1 n* G, [5 ?8 J
%%$ b: z% n. h6 e
%第三步:确定边界/截取数据4 z' x; m. Q) I: s u5 \8 N1 m) j% Q
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
8 f f; r) t7 B# ^" X tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序4 ?5 Y$ w' G, @
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度% J8 p9 r, U9 T: ]* N
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)( c( i2 [6 o& J1 J F4 L3 E
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)/ |) ^" t2 ~: V2 w9 C7 A- V
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
# c Z* f+ `/ s- i, l Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
0 r& l7 w* E& I7 D. u Lon=Lon_ini(Lon_start_No:Lon_end_No);
; p, B# H) X& T. }' Z) q" _5 | Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
8 n4 e {( m Y) [2 U$ Q% e clear Lat_ini;clear Lon_ini;%回收内存
; j* L) T! N( n; q+ k* T8 _+ X Lat=double(Lat);Lon=double(Lon);%双精度化
% T; H+ D, H/ K) I: M2 K. ` latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
% v* B9 I" ]) d+ q2 ^ Time=9%输入时间,注意三小时的倍数
! c* T2 i" U+ y/ a9 ~+ b Time_No=Time/3+1;# E& X; P1 c; ?/ y$ A! \9 n
%截取数据并降维度
1 @3 J, Y' Z3 W5 Z, O! O: a ?% Y Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的9 e$ o1 v, P# u0 z
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
6 J, A& p, v+ S' e5 L# p+ J3 _( e clear Sp_Re;toc;%清除不再使用的变量# f2 W' J, P# N4 a6 Z5 e ?# y3 h% J
%%* p4 f3 n+ G5 j c: }
%第四步:绘图
R. [9 o, z; R0 M7 B5 Z tic;figure;2 E7 w! l8 {" k: E+ }7 C2 o
m_proj(mercator,lat,latlim,lon,lonlim);, l, t$ K1 K; g; M) V) x; c# L
[longrid,latgrid]=meshgrid(Lon,Lat);
7 Y2 ?2 V7 ]9 R m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
- c5 x" q J- D tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
5 i: c0 d. S- ^5 Q m_grid(box,fancy,tickdir,in);%网格化8 O8 P: R$ o* O1 [1 k
%brighten(.5);%亮化% e5 M, V$ V" k, `/ G" S
colormap(hsv);" L* Q! k \0 d5 `. [
h = colorbar(h);%色标* B# s/ O, l2 w8 U7 }7 G
h.Label.String = W·m^{-2}1 o5 o2 X: @% F
h.Location = eastoutside;%色标位置8 [& Y. f; s2 e* ?" p/ q! D
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
$ Z1 ?& V$ I4 {; g% \# o. q/ R FontName,黑体,fontsize,12,FontWeight,"bold") %标题
5 g5 c8 J3 ]) V* k xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
3 V1 W* ~( T8 o/ x b4 _ toc;" c0 @/ w6 ~* L1 c S3 l- b
4 i, a I7 P# [
附上另外俩残次品绘图结果,数据来源:IOCADS ) I& W, J' l% P+ w$ G8 @. \
+ x7 P' X7 p" L8 W; P, q9 Q& c
5 Z0 o3 h7 k9 b* }! l0 p
! S5 d6 H2 F% c
/ z$ @/ _( t: \- a% u U6 V
+ x# h1 D0 c* N
* g# \# W3 [; [6 A: N7 q$ {
|