& v. y2 E6 F/ O$ N9 C7 v% w 图片赏析
z3 j) a3 o! Z- ^0 ?+ w; i- m ( G+ T$ v8 F9 Y; g4 n+ B( y
' n) i; m. z3 a7 D( _
! ^2 @2 e: i5 h3 q; v( A/ f; W
前言 % F: W3 l8 ]2 X& Y; q# G# g% |
# H9 {, M- ~: F2 U0 M 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° S$ J0 a) w' n, b0 z. h
数据来源: - f" p9 U6 I. }1 g. _ H6 x0 K7 z
* c6 |$ m4 c; Y) I, [) e
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 4 }3 e) a }( f% \1 {# c7 i
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
$ w# `7 n! q: H9 v 产品名称:Ocean Heat Fluxes海洋热通量 ( C2 }' r& l. Y; w
时间精度:每日3-hourly记录 ! [% P6 Q! ` a8 F) t* X
空间精度:0.25° 8 x' c& j! `9 P# }1 a
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
5 a5 h z. h( o3 t; q7 }4 F$ E 亦需调用gshhs高精度海岸线数据。
# k. b3 _$ \3 A) [3 }- t 源代码2 J! z& B6 Y1 ^7 \1 f5 s
%南海1998年12月31日某时的海面热通量数据及分布图+ L. ]0 z5 Q% C
%%+ m/ U* K! O: I" R
%第一步:数据的展示
4 ~" Y2 w/ e5 L% p tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址( f& _" s$ E! q* v& w
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名. `7 b0 ?6 H) L1 ^3 j" o
abs_path=fullfile(Path,filename);%合并,绝对路径文件
2 F8 C+ m2 e& z* q clearvars -except abs_path;%清除除了abs_path以外所有变量% ^5 c* g) Y! k# G
ncdisp(abs_path);%读取所选文件) e; M$ v6 X. r5 _5 o
whos;toc;, R, i- I7 R7 }! C1 r+ `. d% j
%%
/ b) s$ m4 T' o) I2 p+ S7 y %第二步:数据读取5 d3 {: G. A/ g% t) R
tic;Lat_ini=ncread(abs_path,lat);$ X7 i' f D; E2 F. }% s
Lon_ini=ncread(abs_path,lon);# D/ J% q$ V3 V3 p6 R( w1 w
Time_ini=ncread(abs_path,time);
3 V6 y7 o: N+ v9 t Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);, V9 X+ j& O2 @) x6 J. I
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
# r+ z; a+ V1 H9 p toc;clear abs_path;
' P. m% s& r- g$ j7 \& c %%8 g! V4 l. n4 U0 O
%第三步:确定边界/截取数据
# @; {" |9 f8 L$ l" a2 n! f %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
+ n& n( d6 z5 N" S7 J1 L0 ?% ^ tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
! `$ [) x8 {. V- U/ Z Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
" u! [; ^ t/ p1 E" i8 ~+ g Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
5 h6 ?( `& y6 l: @; T5 y. F Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)9 ^9 _ T$ U7 A& a5 y
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)* }7 Q. G1 w8 p8 ~
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
; h6 e3 @1 G: ]3 C) M" F+ M Lon=Lon_ini(Lon_start_No:Lon_end_No);
9 F- A F! ^+ i Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的) l- R1 b, M' }: r' v$ p) M$ ?
clear Lat_ini;clear Lon_ini;%回收内存& G# L+ R; @3 u
Lat=double(Lat);Lon=double(Lon);%双精度化
3 `! N& |2 ?! Q7 ` latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
1 _: @! ^0 a) F9 _ Time=9%输入时间,注意三小时的倍数
2 D5 c* Q" T! f! b6 v2 d Time_No=Time/3+1;4 u7 l# X$ ?4 Y9 w `4 j
%截取数据并降维度
: |$ k, c9 O, [& l; h( }% c Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
+ W4 y8 u; ]0 c- e s% T8 g Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的, h" g- j V0 h8 n$ ~4 H) _
clear Sp_Re;toc;%清除不再使用的变量, v- i8 ~8 Z" w7 f9 O' P$ ?+ d6 ?
%%
, t: I' s, Z \: R% e: n %第四步:绘图 j& b5 A4 n: Q8 O
tic;figure;
7 T8 X; \. o- g3 t m_proj(mercator,lat,latlim,lon,lonlim);0 P( E6 p' _* a! `
[longrid,latgrid]=meshgrid(Lon,Lat); z) K6 x; ?1 ?8 p) n
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
7 D8 k: H0 M7 }. `( ]' { tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
) q7 R9 B4 ~$ v" S m_grid(box,fancy,tickdir,in);%网格化2 E) ?& B6 t ]
%brighten(.5);%亮化0 A8 T0 H& i: s: T1 {$ ~: s. h8 j
colormap(hsv);7 V$ u$ {9 `5 h) @2 D8 Q3 n, q7 i
h = colorbar(h);%色标+ _0 J U8 |2 n
h.Label.String = W·m^{-2}) a8 s" Q/ u; h" G) o' d
h.Location = eastoutside;%色标位置+ f6 {6 \6 ^6 f7 e5 `
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
) D+ ~ L7 ^) S, m. b FontName,黑体,fontsize,12,FontWeight,"bold") %标题
1 m) n* Y2 O0 m% Z xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
3 w: W4 w( a, a toc;" V' }7 l% w: m0 ~+ }
# Y4 Z( O# J/ \: } 附上另外俩残次品绘图结果,数据来源:IOCADS
0 h# c3 y0 F2 ` N
# `% u1 k& z$ ]. ^5 F 6 o" q k Y( D- f1 V9 [
7 l3 B2 i- ]- ]- d6 R' r4 g4 ~& ^1 n" M/ {- E8 E/ e% B& V1 p# y" d
* ?+ Q4 U5 _; A2 x; T0 r
5 k9 w* E9 L5 d" N7 ?: i2 I |