* w9 t' z( q2 J) {) o% V 图片赏析
! h: e5 z ^3 }
, B1 G5 L" `3 a6 j3 R, h! o% L
7 e2 |4 u/ U8 L* G: V - _ g3 \9 U6 N& i4 r1 k& E
前言
( ?% Q! w9 K3 j
, y k% b8 R0 o' e 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° " ]3 c! I G' U( L
数据来源: 8 R. K4 ?- E3 k2 N. A
* F" H7 \6 Y- W4 Y5 G. n6 Y' D 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
t: ?+ p; g+ V2 e' w2 Z 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
3 `6 Q6 w$ C9 ]: [' J2 u 产品名称:Ocean Heat Fluxes海洋热通量 6 C4 V3 x1 J* s. j: [3 a- i! j: f
时间精度:每日3-hourly记录
+ t9 f( ?( K3 Q# [, s5 r 空间精度:0.25°
8 }, \+ b, }8 w8 B O& \( k" _ 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
! r$ I/ k5 Y+ T 亦需调用gshhs高精度海岸线数据。
: T4 E. M5 y9 H 源代码& O8 v R) s y) b ?: @9 f
%南海1998年12月31日某时的海面热通量数据及分布图/ _; Q( r& F5 M* R' e
%%
6 L. ] L5 y. k/ L %第一步:数据的展示2 }( n" h- Y) w. U. A- K8 y+ l
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
! Q9 X; N! y) R( N' R! v% ? E filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
8 N& d1 W* O4 O5 t3 z abs_path=fullfile(Path,filename);%合并,绝对路径文件, v0 V- p5 Y: J5 {4 F
clearvars -except abs_path;%清除除了abs_path以外所有变量
. p2 E* f+ V# g3 f0 U+ ~ ncdisp(abs_path);%读取所选文件- E+ `# n2 c5 i9 [- q
whos;toc;1 s8 d: P" }: t; ~- ]9 W' _7 }/ L# p
%% & ]+ |; D- G$ c
%第二步:数据读取3 Y0 g& _( U1 |: m
tic;Lat_ini=ncread(abs_path,lat);% u0 `& p7 \0 _
Lon_ini=ncread(abs_path,lon);
) C2 G/ g/ M2 P( U3 C Time_ini=ncread(abs_path,time);6 ~( i2 w) H- I
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
4 N) g4 `$ d, x Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);4 ^3 h% G7 k8 J) z: ]9 D4 f
toc;clear abs_path;: N8 w9 [! q) C3 p7 L( e+ Y
%%
* g, r5 p) @; V: U L- @; j& | %第三步:确定边界/截取数据$ s0 |. R3 ^& u: ]; y! u
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°% _9 C- m6 j4 `7 W! r& O0 X/ b3 \. s( C
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序. ?) P( x9 n) n3 l9 |
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度5 Y) U* z0 `7 c" `
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
0 [7 c. h" C* v$ e2 ` Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
( u8 B3 L; I4 E$ N% n1 K Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
! s( D- _* p6 `% S3 _ Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)8 Z( B6 f& s- e7 g0 l
Lon=Lon_ini(Lon_start_No:Lon_end_No);/ A. F( M2 Q5 J) Y
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的0 i6 t. n/ g, ]2 c
clear Lat_ini;clear Lon_ini;%回收内存
. D% v& R9 n0 u# w$ P# I4 ]% d Lat=double(Lat);Lon=double(Lon);%双精度化/ Z5 z# d6 j! v
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];8 O, P( c2 H. U3 T/ [/ V
Time=9%输入时间,注意三小时的倍数
+ |, [- o, W! H; B: u1 p Time_No=Time/3+1;
9 D% \9 p/ b4 E+ p9 r %截取数据并降维度
0 V2 J7 }8 N/ }" u0 s( r Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的% X, V: ~- J) j9 u
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的0 B* k: t k7 ~: ^& f
clear Sp_Re;toc;%清除不再使用的变量
' i( |' C9 C0 P: d3 k %%
) q: {" f1 W! [( g4 w' S0 {9 o %第四步:绘图
% ~0 w* M: d. s$ }. L tic;figure;
; t$ \: n: F* b$ l$ P1 a5 | m_proj(mercator,lat,latlim,lon,lonlim);
8 S% x1 @- K3 { [longrid,latgrid]=meshgrid(Lon,Lat);8 P' n" U$ z- u3 O0 E2 J5 D3 t' A
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf; o% `- k3 v4 w, d- Q8 {
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f- ~+ q2 F. L+ [8 S
m_grid(box,fancy,tickdir,in);%网格化; s% c7 n3 n0 y% S
%brighten(.5);%亮化
4 L9 N* e5 b4 \4 O colormap(hsv);
5 T; W! O) D/ B' ~4 r" S h = colorbar(h);%色标
, x, @+ r* V3 G+ m& y h.Label.String = W·m^{-2}3 V- N2 @3 \7 X
h.Location = eastoutside;%色标位置1 d. _3 a* P3 |
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...) E0 J# s% T0 W. e! }
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
$ k" [8 q. {3 V o# U xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);# G1 ? y7 A" e6 O) l+ H8 X
toc;
7 N2 g% f Z4 ~$ I: r; C# | 1 ?) y$ C9 d" h- W
附上另外俩残次品绘图结果,数据来源:IOCADS
. z ?; U6 c7 S# x ( e3 q) m: l9 K* o3 O1 V$ H5 `
3 i/ g( P7 I+ D8 K2 U- Y
$ w6 h% U0 T3 u
' v9 N7 {; ~) W- @1 [. o) b
% C& R. x+ J% t* ` J4 J! ~4 p% |6 C4 m# D: R! `
|