. O/ z0 }4 J2 v S% s- U
图片赏析
% X$ q' E/ ^% [$ E- |5 n+ Q 2 A2 q3 j( r9 T6 l
1 w; ~1 E; O$ E( l8 E
6 `# M/ F) }% x 前言
, _( n* Y i) [5 A! n" \% q$ D$ w 9 x! F2 Z1 K1 R2 s$ v0 S
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° $ e- N' V- \8 }3 j% a/ ~) [
数据来源:
[+ x8 O; S0 k H( k* T0 s- z0 i
' }+ B0 C9 v" |8 t 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 4 t1 E/ W5 Q6 Y( H! O% T
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
, I# V- K5 D! C( O! J 产品名称:Ocean Heat Fluxes海洋热通量 2 Q3 X' u6 T% x5 g1 y2 I0 T; B; B1 f
时间精度:每日3-hourly记录 3 b! E" Q2 |7 F5 e o
空间精度:0.25° . S0 W5 l; T4 q N
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; # K' Z: z5 [" b! [
亦需调用gshhs高精度海岸线数据。 ) M$ v, m2 L8 [/ ~( a8 L
源代码
* G3 d+ c1 e- s( z %南海1998年12月31日某时的海面热通量数据及分布图$ S* p6 g2 e. x! \& ~* ~6 t
%%- A' C; t( o5 z) l! b
%第一步:数据的展示
' e, q% l! R; F* @) f tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址; c9 h q! Y) b5 ?- b
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名& @6 o, I5 |' y6 Q% v2 }% v
abs_path=fullfile(Path,filename);%合并,绝对路径文件0 V, k5 m* S- Y2 v( G! D
clearvars -except abs_path;%清除除了abs_path以外所有变量
0 a+ O6 e" V2 Y: ^0 j$ o% {6 N ncdisp(abs_path);%读取所选文件/ Z* k7 A9 s/ t% ? `9 L. g6 b' P
whos;toc;
( M0 r) _7 `6 G7 m2 d( D; g %%
$ ~. d# ?1 C& p* ]: z6 c2 O$ E %第二步:数据读取
# y& T9 K. L3 |- J& H tic;Lat_ini=ncread(abs_path,lat);8 a: |4 C/ N% a7 ]1 v: W9 q3 ~
Lon_ini=ncread(abs_path,lon);4 ?7 W/ j( k" k. N! a
Time_ini=ncread(abs_path,time);
1 g. h1 o* |/ P+ w- n! g! A Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
- F6 F" S" A9 r% b" Q4 a0 s Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);* l$ y0 A" y0 O0 H
toc;clear abs_path;
9 l' e! M! F, ^ %%; l: E6 n6 v p6 d( c
%第三步:确定边界/截取数据+ {- @( {7 w) r8 \8 [
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°6 N7 j) d6 ~% k
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序8 G5 y! j; i4 A. a& `7 ^' _4 Q% n: B
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
2 l# d u3 F" d) |' o Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
/ ]7 r. @; u) b7 v) f6 |2 { Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)% N5 a% N# R7 ?5 ^; Y7 p4 M
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
" n# r$ z6 R2 w0 G4 b$ x; d Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)0 \$ l) Y1 b* B) F
Lon=Lon_ini(Lon_start_No:Lon_end_No);
8 n, c0 D+ C: A) I Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
, Z$ @9 N% N: [4 L ]( H8 s% q( q clear Lat_ini;clear Lon_ini;%回收内存
$ B7 A9 a4 N! Y; S Lat=double(Lat);Lon=double(Lon);%双精度化
' ^: m3 d x( i7 i$ y ^7 C2 c latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
" Y$ S2 G, m( n% _. C% W Time=9%输入时间,注意三小时的倍数% J4 N" N4 A8 c/ a' m& K8 t7 c
Time_No=Time/3+1;, m/ E/ c" k) U Y
%截取数据并降维度
1 v% c, i* q9 I t Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
& h( A- R5 e- i' j; {5 N Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的; }" Y3 Z) L9 [+ t
clear Sp_Re;toc;%清除不再使用的变量& H$ R2 q. C2 Q. E
%%- t! ^8 ^8 g& i0 g5 L, o7 L6 U
%第四步:绘图
9 X( w: i% Y7 M- c2 E( I tic;figure;8 N5 q. ]% R3 V7 f
m_proj(mercator,lat,latlim,lon,lonlim);, ~3 J6 o0 o. N" E) T9 \4 ^' [
[longrid,latgrid]=meshgrid(Lon,Lat);$ [% U* E i$ @1 V* ^+ K- i
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf/ m/ p* p& a5 q
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f0 D1 q2 p" K" G* [$ I
m_grid(box,fancy,tickdir,in);%网格化
/ @# `" z6 C( |4 s; S7 d %brighten(.5);%亮化
+ r: S: M) x9 `$ z( P7 f colormap(hsv);! ~1 L1 @. T( h3 h$ V) |- d
h = colorbar(h);%色标! L6 s: x& _% `9 @, U
h.Label.String = W·m^{-2}
$ g5 A! R2 ^2 e6 K h.Location = eastoutside;%色标位置
2 s( k) t- R& k% F* c title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...0 M2 P6 p H2 w# f
FontName,黑体,fontsize,12,FontWeight,"bold") %标题( D0 B; W7 H2 o
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
: U) p$ ~; X5 j) _# y7 h toc;$ x" I& i0 r. x' T6 B& W; i/ [' i0 P
- A* p3 U+ q$ \( A
附上另外俩残次品绘图结果,数据来源:IOCADS % E/ l! U0 z7 s/ G2 j/ a9 b5 }
- W$ Q1 V/ l; m2 c
) T9 A7 y8 N3 ?$ u; x
; P1 H$ H' q' _4 N7 f9 E/ K
7 E' N6 u2 k* X8 y& `. o; |
# O6 @# A$ p( n
3 V' S5 U9 \2 o: E ]: K7 M |