1 I8 [6 f) i# `6 Z 图片赏析4 N0 S+ g+ p# P: ^" n P
+ S3 O% m* q/ h0 I4 Z9 G% |
3 W9 z- Z6 ], P + g8 J% ?0 W5 O; x
前言 3 c" u- V# @" f& W" p& y
C: {9 V: {8 Y8 A" f
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° - r8 i/ G* r2 |; \. t( H* s, A
数据来源:
. A- ]9 ]4 l3 I& p- o2 d$ I
: g0 W8 s7 d+ P 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 2 f4 A. ?6 a& c3 @
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 5 n1 w9 ?, R1 B5 }: D
产品名称:Ocean Heat Fluxes海洋热通量 ( ], h1 G3 M* M: K2 k& u
时间精度:每日3-hourly记录
5 v4 f, ]* n) K6 v 空间精度:0.25° ( n4 _7 u6 t. n% o( G
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
7 m3 B n. ]) ]8 O 亦需调用gshhs高精度海岸线数据。
n" {: E# I, H0 c# h0 V 源代码
f% o n3 q+ Z %南海1998年12月31日某时的海面热通量数据及分布图+ f$ u: o& Z% m" Y9 a6 @: p! N
%%3 F/ U! s# `8 }
%第一步:数据的展示
# c; U+ t% u& m$ O, ]0 j tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址& |; j& e# ?7 f, R" f
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
- h7 z& K: z& V, i9 P0 I, y0 l abs_path=fullfile(Path,filename);%合并,绝对路径文件
" ^8 y% ~7 n9 I" G5 r* z clearvars -except abs_path;%清除除了abs_path以外所有变量
6 m6 z/ \9 N% F U ncdisp(abs_path);%读取所选文件2 o" Q# `# w j1 S
whos;toc;
% {5 ~( P# R" H/ C; H %%
; z' _7 N, s- s6 @) S; \) _ %第二步:数据读取! W, W/ y5 J* Q4 N P+ ]+ Y3 X! }% M1 w+ @
tic;Lat_ini=ncread(abs_path,lat);
% k: m$ O( O- A" v Lon_ini=ncread(abs_path,lon);3 Q0 p. L0 H. N5 F" P3 W6 `" Y
Time_ini=ncread(abs_path,time);/ C- |) v7 e$ ?$ x6 ~9 x* Z
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
: {2 D0 U2 U1 D2 ]) Q3 I Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
+ g$ U5 W t! T toc;clear abs_path;
+ w( }* m. n, o. M %%
" X ?2 `/ D5 b; w8 v l* \ %第三步:确定边界/截取数据, h) O+ H4 F3 H2 e
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
& X4 J' S! W+ n* \* H# E tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序6 y- B4 d0 s; E1 V2 R2 P
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
7 |! G9 g" h+ ? Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
' _' B: k+ }1 P$ j/ z Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
* w" b5 C/ p1 R% {: G Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
- M9 m7 M# G, a: _$ f Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
( r9 \/ K; t" x( }7 T Lon=Lon_ini(Lon_start_No:Lon_end_No);
' x+ a" m. h/ b% L Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的8 F( A( F4 K g& |, H0 ^- u2 Y5 c
clear Lat_ini;clear Lon_ini;%回收内存. M- H7 c. j0 ^) B
Lat=double(Lat);Lon=double(Lon);%双精度化
$ b( [# x. O. @7 a: C9 }& K+ U( h latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];- q9 P/ ~' S' G8 z- c0 o" ]
Time=9%输入时间,注意三小时的倍数
' a) L' b, o: F, s2 Z Time_No=Time/3+1;
2 c: H6 w* q) D# i; _" } %截取数据并降维度
! g& j/ w- V5 p' j; c Q% H Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
/ X! f& D- m1 T8 L8 |$ g Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的 S- I2 [7 d1 j4 ^ U, g% V6 U" O) y
clear Sp_Re;toc;%清除不再使用的变量
! B& g& u# K! |) J# I4 K %%
7 B [9 ^1 J% w5 F6 ]* E0 N7 Q %第四步:绘图
0 k/ x% ?3 ~3 }! e4 V' a tic;figure;$ z4 D5 o' W# l" q7 q$ G0 `9 ]
m_proj(mercator,lat,latlim,lon,lonlim);
+ [! h t+ _ X& A2 [" v/ [1 M [longrid,latgrid]=meshgrid(Lon,Lat);# P6 |) q' H3 F/ R
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
0 u' q" t$ T5 G' {( X) [ tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
5 K$ z( r/ [/ S m_grid(box,fancy,tickdir,in);%网格化
2 H$ z4 {, u( g0 j% v2 I; ~9 v %brighten(.5);%亮化* K5 y4 l4 j( S5 l/ L
colormap(hsv);$ ?9 [! e; E2 d7 Y0 e
h = colorbar(h);%色标
& Q. {* @7 i. h; X& q6 ?; S7 |4 I h.Label.String = W·m^{-2}. |3 t+ S* p% O) e5 l2 I2 x& i
h.Location = eastoutside;%色标位置, Y+ u! f! n, w% A! o
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...4 S; I; e- c& d5 ~
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
- I0 k9 z/ ~6 V i! P: y xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);# S: W3 h0 p, {, B0 q
toc;2 k, O+ h j3 k* v8 L
1 H* S9 R8 Z7 V" [0 R0 Q4 ]
附上另外俩残次品绘图结果,数据来源:IOCADS
: j) }+ d1 k0 K % t! ~8 }7 O# m$ ] t6 T$ k/ O0 N7 S
" q1 {8 G8 ~$ M! }, I( a9 L# k0 ]3 h0 I4 T) y
1 p4 O7 T& D; r# k, A
( Z1 S) f. H! o9 V" h: y0 b I- L
4 E/ L& u5 T! ]; c. m0 @# H* ^9 d |