5 F( H# N4 g. M+ }+ k3 h( o 图片赏析
3 w" s$ [4 x! h+ c2 g& x" G
' O" E% V6 t5 u$ U( X2 u1 U , t" u5 p( {4 M, L8 y" e( j$ O
+ d$ U! r3 o/ m- O( W! U
前言 + Y+ O) ?; W( k) k" C
. A y" G6 e7 C( b9 p0 r' q 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
0 D' r$ _/ N6 \+ h/ p/ M. R 数据来源:
+ k( `# t6 c3 d% a. Q* M6 g ?5 P ; s( Z6 Q0 B+ R* F, ^$ a
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
9 G$ R/ h# z" } 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
- y& R. v& A* I' d& ] 产品名称:Ocean Heat Fluxes海洋热通量
; ]3 `: M; T" ], x 时间精度:每日3-hourly记录 % W. c( j B1 p) H8 z6 t
空间精度:0.25°
. Z( Q6 w, m8 _9 [5 l9 k; ? 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; 0 M/ e J: k, B% w* [+ b( e# O8 J
亦需调用gshhs高精度海岸线数据。 0 z0 `& d1 }/ S: ]
源代码1 P% o; g0 U5 P
%南海1998年12月31日某时的海面热通量数据及分布图
+ g" B( c/ p/ \& g( s3 w4 C* T %%
6 f- T9 f1 i* d f8 R- b; G) Q %第一步:数据的展示
' D2 B, H& O, j8 K tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址4 d) }* I2 J9 H+ E) t4 I
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名! }! k; W5 B* A8 O; {. _) l0 T
abs_path=fullfile(Path,filename);%合并,绝对路径文件
% L5 S5 `; L8 g7 U+ U2 x8 ], O clearvars -except abs_path;%清除除了abs_path以外所有变量
* g, b( z6 A0 k- O; S8 c ncdisp(abs_path);%读取所选文件8 N: Q, ?% o. H D7 C* H4 |6 |8 N
whos;toc; L' ]0 i! s9 u# N
%%
0 K; Y9 Y- s& H* a: k# m9 d v %第二步:数据读取' a& J' o/ Z3 o6 P6 @& I( Q
tic;Lat_ini=ncread(abs_path,lat);
, C& M8 Y5 S! h( b) s9 P, u Lon_ini=ncread(abs_path,lon);0 O9 [; W" z9 t( B( ~
Time_ini=ncread(abs_path,time);2 E: A/ X5 r" F1 [* l& s
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);8 n9 Z( i/ o2 Y: s ]$ K
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);0 z- ^3 O5 k9 y# a! H
toc;clear abs_path;: D' N% U0 V" c4 t
%%# L- W% _ Q; b9 l4 U" k
%第三步:确定边界/截取数据, ]; q' C- K1 H" B" e9 ~% y7 A
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
2 A W! m/ q$ r7 K* s1 Z2 |5 d tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序+ H; O$ E1 i2 X d6 w
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
2 C" Z/ ?" B" w& ~/ A5 h# A5 Y Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
z0 |7 ~7 w( K9 A/ F Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)" a$ v( g( {2 W8 H/ G
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号): o4 D9 Z9 ~% W O9 k; v" M& V6 z1 O
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)' c/ A4 A: m7 q/ a2 t2 J5 m3 y
Lon=Lon_ini(Lon_start_No:Lon_end_No);
6 ^6 }( K8 d5 J5 Y) q Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
, p; Y; T% \ k% Y clear Lat_ini;clear Lon_ini;%回收内存
7 v }) B' f6 m2 w3 }) G0 T Lat=double(Lat);Lon=double(Lon);%双精度化2 E7 g4 R! n1 l8 D1 `, K- j
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];! |+ Z' s( W( T" I/ q
Time=9%输入时间,注意三小时的倍数
) T5 j' H. f7 L, B+ X8 x Time_No=Time/3+1; [ X9 Y2 p' l) K
%截取数据并降维度
0 ~6 ` {6 v }8 u( w- ` Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的* ^, Q6 ?+ @8 D1 d% E' Z; Q
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的( Y1 u2 d' u4 G
clear Sp_Re;toc;%清除不再使用的变量+ {# L" |- G @( a1 S( P- u
%%3 E1 m% u' b+ W8 W; g. [
%第四步:绘图
* }7 S s: b& a0 A tic;figure;* r4 w* {% L7 ^' E& v
m_proj(mercator,lat,latlim,lon,lonlim);: _5 m4 \: X! z& f, ~8 E5 {3 x( G
[longrid,latgrid]=meshgrid(Lon,Lat);
2 e+ a6 S( P6 G/ T# t; @ m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf/ {9 i2 s& F. d0 m
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f# O, E" U& _$ ^# B: x: J0 L: ~
m_grid(box,fancy,tickdir,in);%网格化
9 R* \. D5 Y- ~: h! u/ {5 b %brighten(.5);%亮化2 M6 @# Q" p8 v7 D
colormap(hsv);
( ?- W# I% O }6 Z* |2 o& D h = colorbar(h);%色标/ |# c' i9 ~' z6 a* k' N ^0 w
h.Label.String = W·m^{-2}( |- W3 d3 ~$ K# G
h.Location = eastoutside;%色标位置
. i: A, X/ f8 ?8 j& J0 Y8 A title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
8 y3 q2 w; p0 v4 h. d" g FontName,黑体,fontsize,12,FontWeight,"bold") %标题8 l k3 v) e$ j' {
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);' v0 @3 M E4 L0 j9 l
toc;
. m( Y$ E3 f" R
5 k" z/ ^# x, I _8 ?2 {5 L' f 附上另外俩残次品绘图结果,数据来源:IOCADS
+ q! j% f( @8 K) I% C5 t 6 t0 `2 {9 ~2 T, U. V7 O
: K: P. V' g3 Y0 E3 X
, X+ B, T1 b7 a7 A) {6 ]7 p0 f, S- I3 g) C! a
, j. S3 \2 h) F1 n9 ~
' z. w+ ?% E5 z( w0 E
|