" }$ |, o( C) q1 v
图片赏析8 Y1 i4 `- D" N9 ^( Q1 K
. G' D* S% n( b9 o0 V
3 w# x K Y# t : o4 Y& c6 x# U" [
前言
3 E H- l4 t7 ~) o8 R& U
' T* |1 Q, w F! ^7 U 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
/ ?: Q! r9 j- |1 ]( V8 C% m 数据来源:
3 \( B3 M4 H- w2 N" Q7 p2 e$ b$ ^1 T
1 k) O# [: j& z2 h1 L8 | 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
0 z5 G1 r3 v9 V$ u! T5 ~6 m) E 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 : U9 E! w& l( [6 W$ ~
产品名称:Ocean Heat Fluxes海洋热通量
5 |7 Z" e) Y+ Y2 D 时间精度:每日3-hourly记录 # w+ m% P4 _6 v8 V5 e1 z
空间精度:0.25° . x O! U7 ~# T% w4 b" j- E
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
( ^$ w2 T2 y/ M0 I2 G/ _* N: T 亦需调用gshhs高精度海岸线数据。 # x( h; `, o- V& B
源代码
: y4 I% e% b [' g$ Q# [ %南海1998年12月31日某时的海面热通量数据及分布图
8 p* P. f* n# Q1 y$ v0 p %%
/ i/ U: {/ B, L %第一步:数据的展示
- i. }! e3 a9 B- B; @ tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址0 d9 i# @! F$ c; x( U- Y
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
0 P, C$ A _5 l& q% f. U8 [" G abs_path=fullfile(Path,filename);%合并,绝对路径文件
a5 w0 y; Q% L$ K' M8 Q clearvars -except abs_path;%清除除了abs_path以外所有变量8 ~& X8 O" A# x# N4 q+ D
ncdisp(abs_path);%读取所选文件
1 W% Z' @( `+ q! |! T* l whos;toc;" X# l$ L! Q, J" e4 }
%%
! Z1 W. b, s" D2 j9 g8 ] }1 [) \ %第二步:数据读取5 S' Q. H& C7 }
tic;Lat_ini=ncread(abs_path,lat);# a. q7 [. B/ @4 G- ~7 t% L3 B
Lon_ini=ncread(abs_path,lon);. X2 j- ~; L# D0 r, i; @* ^
Time_ini=ncread(abs_path,time);
+ O* x7 B2 ~6 [0 O" v$ g J Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
7 a- U$ ~/ z8 r& \! t, ?9 ^) p Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux); I% y( e; X" U6 l) D. Z
toc;clear abs_path;
5 O" }9 r* | w' ~* } %%4 x f8 w& \( q) @9 U! A" V
%第三步:确定边界/截取数据
. s. i# q% X3 F: u: K %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°0 m c$ Y5 D/ i* y; U3 o/ T- Y
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
/ U4 r+ x/ q: Z4 f+ K/ g Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度( V! T- _0 C+ f9 a l5 O
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
4 t Y1 ^) M! _8 `, t3 H5 ^ Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
. X( V% W% D& M3 N7 m Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)% W( n$ O; [& R5 y& U
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
) O$ L$ q% Z; }. ^: `2 L Lon=Lon_ini(Lon_start_No:Lon_end_No);' ~. k; V+ }8 I7 U/ {
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的# t% H4 d7 g7 o5 N9 G3 u
clear Lat_ini;clear Lon_ini;%回收内存
0 L4 S$ D, X4 x. X- D Lat=double(Lat);Lon=double(Lon);%双精度化' J$ q2 R. G' \
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
3 L' K' \* b( _% Z9 Z/ l0 j, X Time=9%输入时间,注意三小时的倍数( r9 G- E# P- E: r
Time_No=Time/3+1;$ a8 m1 P$ ~ i& ?' M7 H0 }
%截取数据并降维度( B* S" `8 J# X
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
8 }: c- B9 n H# g( X" O8 D* | Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的8 \. Z1 m. o7 A" n! u: l7 e
clear Sp_Re;toc;%清除不再使用的变量8 _- ]1 U; w Y# L. p1 R$ A% m, v
%%( ~9 Y# S) ?4 R
%第四步:绘图+ o( K# ~0 e4 O+ K" b
tic;figure;4 B5 l+ b" F. E/ T2 S5 T, Q% f1 ?
m_proj(mercator,lat,latlim,lon,lonlim);
. }0 E% t! ?; r- f' }8 D [longrid,latgrid]=meshgrid(Lon,Lat);
6 b) u' M7 z4 f$ m, E0 z* W m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf( t( B5 {4 A9 x- ~: [7 ^5 j J) @
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f1 e+ Z! R% K5 d
m_grid(box,fancy,tickdir,in);%网格化
% S5 H O- u" X) X- h" u %brighten(.5);%亮化
/ T5 ?* c. t& U1 p7 \' o& J colormap(hsv);* `" u/ D# ]7 N6 W) L
h = colorbar(h);%色标. {$ f# g3 @6 h& Q
h.Label.String = W·m^{-2}
. b7 L D( M. R7 N2 G h.Location = eastoutside;%色标位置
1 b3 A; b! E' k* u& y- g) t- w title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
" o/ f* d* V8 E4 P. l b! Y FontName,黑体,fontsize,12,FontWeight,"bold") %标题
# E ]3 H' [- g* K! `7 H& d xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
/ `4 _4 E$ r" Y toc;" O! o. O* \& ?0 _
( g7 q. p2 `( B* N1 m" S
附上另外俩残次品绘图结果,数据来源:IOCADS " z$ c5 Y; l+ l9 w0 s# b- g$ w( D
4 ?6 A% o# r$ j$ E f" w' w
: A/ | t$ F) u
9 u/ ]& i& g1 d/ G% K- p
/ f/ p- [. J! f" R- p( q. _! \$ t4 ]; k# E
8 T: @9 k8 T7 k( M* {- u8 ]
|