) O# V9 Q, D2 r; I7 y7 E2 K4 P3 } 图片赏析
# U! e. k. r% X/ M0 G: F5 A; T
. K$ Z9 x6 f; }0 @; ~; y ! J4 V# g( c% j( O4 s; W
5 P: l& B. D" L& [; S7 s 前言 + c) a |; j. Y0 {
' o& D0 V- r! p1 J/ q% A 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
, C! T4 a% j. V8 y" n4 X" S+ y 数据来源: & B6 m* r' X8 c4 b- U9 u
1 C9 g8 r$ X! \% T7 D 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 l1 Y' u7 S' Z. S2 H
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 * m# s R- i0 h3 N
产品名称:Ocean Heat Fluxes海洋热通量 $ A& E" y0 j3 M. g0 @. M7 R# e5 b
时间精度:每日3-hourly记录 ' [2 C% K: t! N, ^4 l3 s. S2 n0 B
空间精度:0.25° 4 ]0 X- M* C* t0 ?" v7 q' ]6 Y
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; 4 T' i0 n1 X- B1 i3 J6 S; ?% q$ q5 d
亦需调用gshhs高精度海岸线数据。 / s8 d2 G! L4 Z+ u) P
源代码" Y: Z& E- S0 S \, T2 z
%南海1998年12月31日某时的海面热通量数据及分布图- C3 _. X) g" L1 v1 M* Y3 o; ~
%%
2 H. p' e4 v9 F5 x- r4 x %第一步:数据的展示
0 M1 }! a4 N5 f" o% h6 F8 l) V) S tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
E$ w C3 g7 [4 n+ f6 e) [' @ filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名" ]" W2 A* n5 W7 P+ f3 F) l
abs_path=fullfile(Path,filename);%合并,绝对路径文件
( Z7 Q# Y+ c- `$ {; d# ]6 ] clearvars -except abs_path;%清除除了abs_path以外所有变量
; f$ r) F8 n$ \, Z ncdisp(abs_path);%读取所选文件
1 K# D; o$ B; M: C; e6 x whos;toc;
& I9 `5 e1 L% t7 h' v [+ J %% , A% i8 @# v; D l! ^' r- h; v
%第二步:数据读取
. U! i: u+ w% d tic;Lat_ini=ncread(abs_path,lat);- A* @* Z9 w& M7 a8 d
Lon_ini=ncread(abs_path,lon);- w/ J0 n6 V3 D. w6 S) U
Time_ini=ncread(abs_path,time);. E/ }& x( V7 @
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);4 {3 n$ }0 L% q6 q# C) |
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);" B: a; W4 V3 Q; V f8 p/ M. ?% I
toc;clear abs_path;3 m/ ]6 J* \7 s. X( S; p
%%
T$ X6 B2 e+ T, L/ F- _. \ %第三步:确定边界/截取数据2 }3 W9 O& n4 u5 g
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
# B! c4 @9 J! }, F0 k& } tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
, s8 A( f4 Q( V) e, [# c/ \ Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度' z8 r( K* `9 _
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
" @. _& W$ R% U- i9 h& `5 @ Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
3 b0 T e$ Y0 q Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)) I( W v- E- Z+ Q1 o, E
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
/ i$ z' T/ m" i. U# k Lon=Lon_ini(Lon_start_No:Lon_end_No);7 {/ f. q9 |1 q
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的$ _$ p# W2 x3 w/ [6 X( E( c; u9 _0 i
clear Lat_ini;clear Lon_ini;%回收内存
6 D9 u% a4 e( l- Y$ H; E. z Lat=double(Lat);Lon=double(Lon);%双精度化
. _6 t+ B9 ?5 _. `: e, _, n latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
" N9 |9 L# y% @ Q% | Time=9%输入时间,注意三小时的倍数
- ^( {( V# ]# K; B1 [. K n. Z Time_No=Time/3+1;
! K2 a4 ?" s$ z) _% Y; q5 t6 f" S %截取数据并降维度# M- V$ @+ O4 K6 q- \) _
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
; e8 _2 i& Y! S Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的/ m* j0 v6 ^1 U! `+ R
clear Sp_Re;toc;%清除不再使用的变量, n$ G7 O: K0 h4 V
%%& {) o$ \5 W) e/ L3 }
%第四步:绘图) Y8 Y7 P" X h! {, B+ z" z
tic;figure;
! q' ~5 ?" f1 c m_proj(mercator,lat,latlim,lon,lonlim);- E. l4 W$ j9 ^$ P
[longrid,latgrid]=meshgrid(Lon,Lat);
9 B: g \+ C m" w9 v m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
; n' H! c7 n8 e$ Q1 P. y$ M tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f- ~( R2 y. H8 `) e
m_grid(box,fancy,tickdir,in);%网格化/ B9 ]9 _ i; ^7 C7 k1 a* l
%brighten(.5);%亮化& d. {; W; }" p7 ]8 Y+ ?
colormap(hsv);
2 q4 u$ G9 O% \' E3 v h = colorbar(h);%色标, h4 N& `& r7 u
h.Label.String = W·m^{-2}7 j& z# R$ p- L9 D F% ^
h.Location = eastoutside;%色标位置: Y6 @" z8 i6 P/ b
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...4 z' X) ~; @0 j5 k t4 V; ?( t
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
+ n$ Q5 p6 S7 y F! V xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
. X9 }# W+ b% A: p9 c- Q; _ toc;
9 Q1 P2 i# f/ Q$ P6 N6 K; a
: m! E& c4 g8 j: N: U 附上另外俩残次品绘图结果,数据来源:IOCADS 8 T+ Z6 Z) A& ^% m/ {9 l- z/ _
+ g1 Q4 [8 A2 M
& _. Q" r" `! [! u* Q$ _8 n/ X' t) \3 P, \
8 n# n! i. o9 L6 }$ t& k% }
4 S' h- h" \( f* O C8 J
( I8 }" o6 \0 N6 p
|