0 H, P5 C: J4 p
图片赏析/ y. t3 t. Z* H. z
_6 R$ `- n/ x) b1 ?/ {- z/ P
) D6 t/ j5 ], |. E! g" E
# `9 q6 y$ L, x7 ]0 Z# J 前言 , L) r& H8 D, ?
, K( y6 U( F. K+ x. y 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° 1 k/ j7 e9 q3 R- A, u4 h
数据来源: 4 p% J0 b! ~! D; M+ ~3 t3 g
" _; X l& Y$ f1 f 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 ; p/ O. j5 w" ~! ]" T
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 2 T, I7 f k( `" w
产品名称:Ocean Heat Fluxes海洋热通量 1 r4 O1 h; E* Q8 {8 a1 C$ g
时间精度:每日3-hourly记录 * R7 h9 \1 B) r! Q" u% N+ u
空间精度:0.25° : Z; e# n5 e" z' C# W% u# X) N
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; $ n6 J. a4 t4 {$ f t* U6 @4 m' w
亦需调用gshhs高精度海岸线数据。
9 X+ m% A) Y9 k2 I$ D$ F 源代码+ A3 y4 A; X6 O0 \
%南海1998年12月31日某时的海面热通量数据及分布图
A; T$ u5 t! E7 B% g0 E %%8 E% r8 S2 R6 W$ }5 |
%第一步:数据的展示
( z9 ~- T, M) u) v3 B tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址. n( v. [, x3 f7 S( I7 @
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名, ~0 u# P# @- o @; }
abs_path=fullfile(Path,filename);%合并,绝对路径文件+ e- P- i) L. m) f, ^$ \# d
clearvars -except abs_path;%清除除了abs_path以外所有变量
& j+ [# z: R/ ` ncdisp(abs_path);%读取所选文件
8 c6 S+ U0 I1 `7 |0 L whos;toc;
' t6 H9 z$ V4 Y' z; r" B# ?, ^6 c %%
+ D |0 Q- o9 i: ~6 u3 O. `/ O: u %第二步:数据读取
. j9 l: r; N. C1 a% o tic;Lat_ini=ncread(abs_path,lat);- j! E! I5 I! V. s" ^
Lon_ini=ncread(abs_path,lon);' i8 y: o# _" k0 R% E4 S3 {
Time_ini=ncread(abs_path,time);, \+ w$ M5 ~. d$ ~ l
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
2 ]8 |) \6 e- {- a& s Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
, M, p7 ?0 q: v0 ~# Z% J: M toc;clear abs_path;" y) ^0 a% ?5 ^' r7 j
%%
" i5 ~% z* w, o4 G. }& R6 O( x %第三步:确定边界/截取数据
& R- {. B6 ~$ E3 G %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
" c; u: x3 d% ]4 g2 I. ~ tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
# m5 C+ t" J6 @# ?( f4 r Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
( ~0 B% l$ ` p+ m c' m7 } Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号), t* Z6 I6 h# }
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
7 a' O+ H; o* b6 } Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
: \- _# e+ H, Y8 U$ W6 `& } _ Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
/ ~8 J8 R! g5 f! f5 q8 x. h Lon=Lon_ini(Lon_start_No:Lon_end_No);
" ~, }& T* Y( L( o' N* a+ y Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
\ y1 s: R2 q1 L clear Lat_ini;clear Lon_ini;%回收内存
9 `3 Q" ?3 f3 E7 w n$ ` Lat=double(Lat);Lon=double(Lon);%双精度化
' p# j/ @0 K* q$ w" J latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];+ s6 W; j: w; b U& n/ h
Time=9%输入时间,注意三小时的倍数
5 ? s' E+ R* x/ M Time_No=Time/3+1;
4 T: V4 I7 S& T3 d %截取数据并降维度; Z2 `* m y. o- _* a
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的" g" D! o+ [. c# e9 z
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
; q! O% M) |+ O0 F clear Sp_Re;toc;%清除不再使用的变量
! u, J: r' }, s6 j %%
/ h$ h! v, O2 _. b6 R %第四步:绘图
5 G6 L, p: Z/ ~% |: X9 i4 |1 ^ tic;figure;+ D. D% N6 V6 C+ E8 f
m_proj(mercator,lat,latlim,lon,lonlim);
; t# B) \& }! o3 z8 n* I8 ] [longrid,latgrid]=meshgrid(Lon,Lat);7 U: s1 z& w8 {: V7 W! X
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf1 \+ A$ _8 u* |7 F
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f( c( d" F- A% q7 s9 b* K( m, @
m_grid(box,fancy,tickdir,in);%网格化
& [3 o/ H" k* r5 N0 f0 w# n& { %brighten(.5);%亮化$ J1 h3 }( P( H/ W6 x9 W$ Q
colormap(hsv);
4 G t% b- {' s8 A6 m% p+ [' Z h = colorbar(h);%色标" n% v. I$ ]' t0 ~
h.Label.String = W·m^{-2}
1 e# X5 d6 m. R& h h.Location = eastoutside;%色标位置9 q* v6 m- u4 ^9 B: w+ D( a) |* U
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...0 J+ q9 t+ U3 E/ S
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
7 }$ ]6 c3 ^) G+ a% s) M% p xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);0 c0 w, g, f4 i, A
toc; `/ n: n6 M2 `6 ?, h. C
4 w0 m* O$ k- Z 附上另外俩残次品绘图结果,数据来源:IOCADS 1 F7 t$ t6 o d! I9 W
( t* B4 @ F& X: F6 ` # o$ e# R' S4 F
* O5 o$ k" Y2 ~9 @& y
4 D; |4 u; y- i. V4 Q3 f+ ?8 T# R+ R
2 l6 W# a6 U2 d6 ^
|