& A' _: Y! p2 {. H$ a$ p
图片赏析$ O) A0 P1 q9 \7 h6 S8 S
% Y" C# L6 k9 D: R: [; U
! b4 W# G+ r$ @% \ P
1 q" x; `. |9 k+ X$ v2 s 前言
% A, E9 s4 S- w. k8 H9 M
3 c- v7 g C9 G 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° / ]5 }1 ]0 j' r
数据来源: : S" U& m( Q. W4 Y/ w& K1 j A* ~8 N
2 @7 d! I& Z9 j 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
* j9 h5 K9 _" _: T" V 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 # s) ]+ X9 N; I3 ^ n
产品名称:Ocean Heat Fluxes海洋热通量
* w' @! ~6 e+ ^% A v/ z 时间精度:每日3-hourly记录
5 u3 V/ j* L- v v4 _ 空间精度:0.25°
! m' l) U/ a7 ?& | 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; 8 |2 b4 ^7 }8 O' }% w
亦需调用gshhs高精度海岸线数据。 % _4 C0 a" q6 s" N$ U% v- X
源代码( ~) U0 j+ H5 D! d
%南海1998年12月31日某时的海面热通量数据及分布图" W/ ]" T' C4 w+ X4 J8 A5 d* Z
%%
; A6 E/ [5 P" ]1 q3 x %第一步:数据的展示
% d# [2 T: f) `0 A: G tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
# V3 u+ \; L ~7 B5 s6 k filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名8 s: g# j a! ?
abs_path=fullfile(Path,filename);%合并,绝对路径文件
1 b" J/ V2 Y1 [! y clearvars -except abs_path;%清除除了abs_path以外所有变量7 v; k, Z7 x8 D9 H1 E" `
ncdisp(abs_path);%读取所选文件4 j q9 Q5 X4 e( s% Z
whos;toc;
m/ X" e4 t) }* R %%
' V1 A9 K% O9 o0 P4 P( |- Y" ~' n %第二步:数据读取
/ v3 j$ m' q; Q! P! h3 W1 @ tic;Lat_ini=ncread(abs_path,lat);' b% e9 ]; `2 z
Lon_ini=ncread(abs_path,lon);# A! c' l: Z/ j
Time_ini=ncread(abs_path,time);5 b7 I# m% O5 \9 K
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
5 {# x+ B7 A. U, F2 `9 i Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);/ T( n* y: C) K$ X6 Z3 v3 ^5 ^3 w
toc;clear abs_path;& F/ Y+ F i0 C, r9 Z
%%0 Z* c. T8 s) X4 F, B* C
%第三步:确定边界/截取数据
8 v w8 i) N' c6 @' T %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°6 ?# K/ D% M' K# h& _
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序3 }' [3 t7 O" @) L4 O) X
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
9 a/ J/ w9 A2 j# }& X9 b# d Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号): V, K4 O. k& s
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)- }- B; @4 v+ k& H [/ _( a
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
: z t3 R) }1 h Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
+ Z: k D' H# A! y$ }+ _( u: L( l/ _ Lon=Lon_ini(Lon_start_No:Lon_end_No);
" d b2 M! l0 v Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
+ L1 [. u0 F8 m6 z( Q clear Lat_ini;clear Lon_ini;%回收内存
/ a$ B2 C: c0 Z) |2 R# O! x Lat=double(Lat);Lon=double(Lon);%双精度化! \* Z9 s8 g- g4 [; U4 Y" y
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];. d# s+ R) D! c. u" _3 p. A
Time=9%输入时间,注意三小时的倍数
! e7 ?+ V$ M+ w Time_No=Time/3+1;- w1 |" p2 b0 Z* z( n
%截取数据并降维度
) _, c7 T6 i! s Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
* f/ s& w+ O/ @4 j& e Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
* [( `; Y. D4 e% @5 M clear Sp_Re;toc;%清除不再使用的变量
6 u- s' [0 z' r, k2 P %%! ?5 L; P0 K1 O! l2 ?* p
%第四步:绘图
8 k1 T) |1 P' {8 D% {. z tic;figure;
: S# P( i8 r* ~: y6 p! @4 H9 c m_proj(mercator,lat,latlim,lon,lonlim);
$ `& g' Q& @; l4 a8 h; h [longrid,latgrid]=meshgrid(Lon,Lat);3 }8 q1 l |" R4 Y% M1 G
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
* D3 b0 M/ }3 F7 ^/ ^) u$ b tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
) |+ f+ Y) ?% h+ ?8 J m_grid(box,fancy,tickdir,in);%网格化* q; `$ D3 |" h4 k0 S( ?
%brighten(.5);%亮化/ u( H, ]7 x/ V) R
colormap(hsv);: m+ P# D% _ {* `
h = colorbar(h);%色标
# J t/ M' y" d. }% J h.Label.String = W·m^{-2}
1 a+ W7 B5 b/ k* C7 x+ H3 p h.Location = eastoutside;%色标位置1 E* h# H; g/ B
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...# [- v: X1 D& t8 r
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
' d7 m$ B7 R t9 U, w2 k xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);* j" w7 \7 w7 N& C7 Y
toc;+ Y; }! e0 H `
1 w7 e2 ], D& w+ O M, T 附上另外俩残次品绘图结果,数据来源:IOCADS ) y/ i! t5 H! }) ~8 [
/ s w" O+ g" B, R
2 ?8 ^' g) R6 @% C) [5 E5 G+ T5 x3 Q, ?
' c1 H" i9 Y# n% a* M) L& |. {
9 P0 q' Z; l, K. G8 [' n
) }" o3 U( h5 r% @5 B% t# U% Z |