/ G% D' r5 v# }$ b' j9 n8 i
图片赏析! c* Y: c$ K. k1 z% p
. u) D# s7 I9 `7 p. c
% k6 m" O0 }; j) j Q4 z
+ F, u7 \ x$ O# t4 l2 E! S, X 前言 : |0 D; x; l' k" b6 w0 g3 B P) [6 z
$ Y/ E+ ~1 W! K) E: e1 Z6 Z0 S6 s8 J
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
0 X( d! u4 |/ C7 \: D4 V% u0 R, V 数据来源: , u5 H" A8 ^' F- P3 x
% h! z! v( [; S b, {5 ~
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 9 m' k3 \) @# F
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 7 O' P4 ?2 X* m4 [" @- B3 J9 k
产品名称:Ocean Heat Fluxes海洋热通量
* S/ e! U* {. ^+ @+ A* o) q6 F0 c 时间精度:每日3-hourly记录 . P3 I! @ e$ x6 E; ~
空间精度:0.25° 7 h8 V% D2 O/ u2 _( [
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; # y% |) F) u0 i; r, q
亦需调用gshhs高精度海岸线数据。
& z0 {- D1 a8 N0 ]' l 源代码
7 N* J y, ?0 R. ?9 ] %南海1998年12月31日某时的海面热通量数据及分布图; D: o' O. N" [; o5 J3 u
%%; _; Q9 [5 b |* N+ f, V
%第一步:数据的展示
+ q/ a, n0 ?! b# q r1 L tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址% E; W, \2 ?4 u( Y) z* c
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名. ?' Q& }. L+ ]2 D7 a9 w1 J, _
abs_path=fullfile(Path,filename);%合并,绝对路径文件
# \- b4 O9 |7 a# A9 a1 B f clearvars -except abs_path;%清除除了abs_path以外所有变量
( e4 k9 h2 A/ z# d$ ^9 K ncdisp(abs_path);%读取所选文件
% U" v' T F/ T, a/ |! } whos;toc;
, U ` T0 f' ], p0 Y. P" f %% ; q, K2 m& n" l6 P! W
%第二步:数据读取
; q0 x! {6 ?: U5 ?. { tic;Lat_ini=ncread(abs_path,lat);
) V" {/ k( m3 M+ \2 u Lon_ini=ncread(abs_path,lon);
1 F0 z; \0 i" A0 I) j; t1 M4 t Time_ini=ncread(abs_path,time);7 y9 B. {' d/ s: u- o9 R9 x$ R
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);" C, t& y& C# }+ _5 |9 Y
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
9 |/ Q8 n; c8 t r. d toc;clear abs_path;
: Y7 N3 H1 G' j7 B" g %%& y- I5 G3 m8 I9 n
%第三步:确定边界/截取数据
$ e$ v* v8 V& M* u, @ %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°3 A" r8 I! o; c( b- _
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
1 ], A3 O8 c9 \! O Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度4 f' r/ ]6 }2 V" l8 B2 X* w: ]
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号), v6 ~5 Z! J: P$ v* ~8 B9 O r% C2 d
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号). s/ S2 f& \7 @
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)4 s3 D4 o' f, u8 |- x, E
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
7 o# n, B2 V* @' _* }5 u Lon=Lon_ini(Lon_start_No:Lon_end_No);
) c; n1 y" Q# N+ g$ z: x! o Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的1 v0 l3 G( o0 _, \; Z8 t/ A; L
clear Lat_ini;clear Lon_ini;%回收内存
$ }0 C6 a( U! _0 l: j o6 x+ ~7 W) @ Lat=double(Lat);Lon=double(Lon);%双精度化" C4 U, Q2 ^2 h, H3 u
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];! W/ b; A" p3 o0 |! z
Time=9%输入时间,注意三小时的倍数# {; ]: t( w$ v: U7 M, G9 z
Time_No=Time/3+1;$ R% b0 z9 ^2 b. V9 Y+ @
%截取数据并降维度
8 \5 \9 @+ {9 G8 g4 { Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
3 H$ {( x' L3 M6 V Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的/ ]8 @( l2 p3 Q X
clear Sp_Re;toc;%清除不再使用的变量- z" t* J" b W% J6 x
%%. h( ~7 L0 X9 G7 A
%第四步:绘图7 ~: j w+ P$ d0 o
tic;figure;4 Q1 l4 [; Z: u( w3 p: ? n* o
m_proj(mercator,lat,latlim,lon,lonlim);0 Z2 q* E- N7 T+ \! r; U
[longrid,latgrid]=meshgrid(Lon,Lat);# C$ ~' {+ S0 m! y
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf; n3 p2 d% N2 ^3 _- k8 C* v! D! C, }$ V2 `
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f; ]# p, E# j W0 a
m_grid(box,fancy,tickdir,in);%网格化
- c( |& y/ Y* m6 B %brighten(.5);%亮化8 ]5 I: X0 D! S+ K/ B5 ^
colormap(hsv);2 ?* w, i( M% D: N5 s1 B
h = colorbar(h);%色标
' }+ _1 O w5 A9 Z% i! g h.Label.String = W·m^{-2}
2 T6 \9 |' L3 W( U$ k+ R0 Z h.Location = eastoutside;%色标位置
6 P7 F8 `3 Z& A7 t: }! J) s0 x title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...8 a; j. w& t6 d" k/ |, R
FontName,黑体,fontsize,12,FontWeight,"bold") %标题# @, ?( ~' d) g
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
4 ~2 s, ^; q- Y' ]; [' T, u( y | toc;
+ ?3 _% s. a9 v) E
: c5 ^1 Q" F6 ?( ]" l" E9 i 附上另外俩残次品绘图结果,数据来源:IOCADS
0 d0 t7 y: G) v+ n- O$ L) I
3 U, }& K: X! s" V% q4 I: F ( d$ Z8 F" _( R' L1 g
1 z$ W/ ?0 l" q" Q
) U& E5 d% x) F1 I( ?! L( m% r) w9 X
2 x# H! o. S$ z& F* J1 t |