1 l7 U1 t/ G4 {6 c5 | 图片赏析( s6 ?; M; I8 {0 q8 D; f) m
0 E$ B- [- z6 b: I' r h s6 G, e, h) g& l
" F3 R# E) P2 U0 y) U3 e; t
前言
3 ^, x1 n( M. s& N4 A' W0 | 4 X w- }. H: p. _9 J [1 x4 D" A$ G, y
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
( N9 c6 i# A8 }$ o- I 数据来源:
+ ~4 }: N v, O) I" p
4 K+ z1 Z# L9 H: d4 j 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
5 O: ]" z! c" p" O, L' ?# C: M9 B 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
, x4 k' i! |5 T) w 产品名称:Ocean Heat Fluxes海洋热通量 & _0 J4 l& G$ B' l4 a
时间精度:每日3-hourly记录
" W4 h% t' `/ G7 j8 N4 j/ r 空间精度:0.25°
+ q) a8 Y6 I; [/ h9 ?3 X4 l" O 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; 6 \+ `" m! v! ~
亦需调用gshhs高精度海岸线数据。
5 I S6 d# @! k4 l2 V 源代码
# o. s. o; a6 n1 x %南海1998年12月31日某时的海面热通量数据及分布图
% ^" G, m' f5 t% c %%% a6 R3 V/ N [. ]8 D9 O0 `; ~$ S
%第一步:数据的展示
: W- p: D5 `; N( d- | tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
( ^2 c4 _% W( ^" ~& X$ g7 W9 B filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
; ]) I# M- m, y/ e, y) \4 Q abs_path=fullfile(Path,filename);%合并,绝对路径文件
4 o7 t6 S; z9 q. X5 H clearvars -except abs_path;%清除除了abs_path以外所有变量/ A3 E# N2 k- B
ncdisp(abs_path);%读取所选文件) J" Q6 c+ ]) x. @
whos;toc;
0 ^+ ^* d F+ v( D %%
2 W" w0 Z5 Q# c- D9 d1 R5 p %第二步:数据读取
h* s" r7 c) M( W+ h5 a7 P tic;Lat_ini=ncread(abs_path,lat);. P0 P2 M8 N# W; C. u$ Z2 U
Lon_ini=ncread(abs_path,lon);, X& @8 h( Y9 }' y
Time_ini=ncread(abs_path,time);+ e/ |5 _* l' d' J% k5 m2 ?, F
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);7 m- c4 o. g- Q2 g1 i4 {( W& k
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);% Y9 n9 J' b8 @
toc;clear abs_path;
0 ^5 S" l3 u9 S %%
" g9 K H/ f1 r9 Z7 m* _ %第三步:确定边界/截取数据
8 z1 ?$ j# r. D; k. J% H3 \# @ %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
' ]6 O0 i/ x+ @0 U; B( A Y+ K5 U tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序2 q8 {6 p( ~" q5 t, @+ g
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
; W. P0 Q' C# Z) o* ~ Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)+ \$ T1 a4 I0 ~ a+ [. `! ]" u
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
y; V6 C. ?6 ^8 o% N: n Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
) L# V1 e3 y! O Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
$ q. H y* {6 T" g' i6 r5 v Lon=Lon_ini(Lon_start_No:Lon_end_No);
* M+ k8 e/ [3 w5 }6 D: m# N: q/ m Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的0 J& ?1 K( B# a
clear Lat_ini;clear Lon_ini;%回收内存
7 q( K# n0 F& Y) C6 Z Lat=double(Lat);Lon=double(Lon);%双精度化
; G! g2 g/ q8 ^* v; l8 x l latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
% L: s1 f- f% G Time=9%输入时间,注意三小时的倍数& b- c& o; l5 h7 t' U
Time_No=Time/3+1;+ T( w, A" ~0 }) Z+ g
%截取数据并降维度
. Y) O; G/ B5 ]# e, k# B& y2 L Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
9 N8 q" M( ]' z4 e% B Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
- g1 E0 O1 O3 X7 q. p' s4 A! w clear Sp_Re;toc;%清除不再使用的变量
" F/ U' u e9 I) d, g4 } %%5 |1 W/ o; r( ~- j* i
%第四步:绘图8 n& R) K: f5 {' E
tic;figure;6 U4 I5 T( X% Q8 r
m_proj(mercator,lat,latlim,lon,lonlim); t' w8 i$ \ Y: ]+ ]: m' U9 d1 {$ t
[longrid,latgrid]=meshgrid(Lon,Lat);6 T: T7 M; G) D8 Q( e8 G* B% ~* d
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf& ~4 K; P* A r% g
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f2 u; U' |7 I. ]# D) `
m_grid(box,fancy,tickdir,in);%网格化: ~# I$ e; n$ T p) u8 o
%brighten(.5);%亮化! I% F. _5 h) x5 Z
colormap(hsv);
7 h& X& V1 U0 Z) |6 w* g5 N6 B% Z h = colorbar(h);%色标$ R' `+ U8 ~, m4 Q6 F
h.Label.String = W·m^{-2}: Y( F% `" N! D2 Q
h.Location = eastoutside;%色标位置
1 \; a* N; l$ e9 v1 Q% e title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...6 V1 x! s+ Q% F9 P( R! G
FontName,黑体,fontsize,12,FontWeight,"bold") %标题9 q( Z8 [6 b1 Z4 ~. ?. c
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);8 z5 f! R7 F+ p r; p J
toc;3 Q! c$ F/ ^# `. p# J2 I1 e" x8 e3 h
. s2 e& o" d6 D6 V. q# | 附上另外俩残次品绘图结果,数据来源:IOCADS
* h5 x: G. N7 |. r) `( L2 b: D8 M# v' X - h: a$ H% q$ K5 |" `
/ a7 L6 K0 M' u8 ]
7 [& Y. g* [+ M# |; t6 u
* A2 r0 D3 D, P9 v
$ D. y. R6 ~; ?9 A) } j2 J# e3 X- [* S. K! @+ T" c: ^' }
|