% K* X; R O5 _4 A+ z1 h/ v 图片赏析+ A0 w; S. P- @' ?0 \8 g
1 L8 s5 S2 P" Z- r: S
! N0 u' r: Z( J0 s. ?6 A & c; _3 n( w; Z7 p
前言 9 w* L! p! v$ {9 }4 x
# g- Z+ n8 J8 P3 b( k 南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
0 S$ v# [' D! R5 [# S 数据来源:
3 ]7 Y# A$ j4 R1 r
9 X) W2 j# n/ z 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
2 I0 a6 S* P+ C# p! Z3 {2 j 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 : {" D- |0 [8 x4 D) F
产品名称:Ocean Heat Fluxes海洋热通量 6 [* l( V- S# m; N' ~# K
时间精度:每日3-hourly记录
7 S) V, H8 Z' d 空间精度:0.25° ; c5 u, r( y& e0 W, B
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; # \0 C3 f9 K2 d( o
亦需调用gshhs高精度海岸线数据。 / H5 W9 Q5 H( i
源代码8 \1 C$ N* [7 U0 Q& U0 l; S+ {
%南海1998年12月31日某时的海面热通量数据及分布图
6 [7 g) w+ l7 @ %%& d) z4 [. d) r& S, j- J# g7 d
%第一步:数据的展示
& [* @3 @0 \8 I1 ~8 J0 ^6 f tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
8 ?8 o' }" j( K8 a; o- e) u filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
{' f2 v! I: I; a abs_path=fullfile(Path,filename);%合并,绝对路径文件0 g. k" D! D2 s, D
clearvars -except abs_path;%清除除了abs_path以外所有变量
6 Y' j. d( I3 g) V" H- l ncdisp(abs_path);%读取所选文件2 f/ C% j% j e, K& j: ]* p
whos;toc;
# F G+ L% E" h9 J5 a, l %%
* W# p2 {" Z' x5 _- d) J" e %第二步:数据读取
6 u4 Q/ H. C1 y: z9 i tic;Lat_ini=ncread(abs_path,lat);
5 S8 \7 c2 }- m4 t- u @# r Lon_ini=ncread(abs_path,lon);* q k/ t! c4 l4 t$ m
Time_ini=ncread(abs_path,time);
% ?$ | H9 t% X Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
' p6 V9 w, i& [" F1 E3 N" K Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);% H J4 V/ p' P# w2 V: c m
toc;clear abs_path;: n0 v; J8 v1 D; U. Y; I
%% w- q. i: o$ _! |3 f
%第三步:确定边界/截取数据) n8 h& K& ]- M9 |
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°0 J" [* n7 n& n& s
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
/ a# L: K1 o/ h6 h Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
/ r) u: ]% u5 E Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)3 }" ~; E2 ]& h. i3 Z
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
5 e: l! j7 ?- n. l2 t$ D; V- a Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
9 J: S D. K4 \6 y/ g+ i5 a Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)) \4 }) m9 {: _$ F
Lon=Lon_ini(Lon_start_No:Lon_end_No);9 ?$ G" A: p) p9 R7 t) f( o- U
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的) D; {7 ^% f% K, I
clear Lat_ini;clear Lon_ini;%回收内存
" ?4 G7 q. s5 J) P0 M1 G x4 |1 b( _% p Lat=double(Lat);Lon=double(Lon);%双精度化5 e3 ?0 ?. |; N$ a. X
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
d. j5 @/ T; F* E# q+ e Time=9%输入时间,注意三小时的倍数3 P, C2 d8 F2 }5 O- ?
Time_No=Time/3+1;
5 N" }# ], M, h" H8 C0 C, b %截取数据并降维度
X# S/ r1 v8 j/ k3 ` Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的/ e' P0 ]: d* D6 ^- F
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的, r3 A, k* K6 K, H/ p3 v/ J1 C* i: _
clear Sp_Re;toc;%清除不再使用的变量
( w" j6 S2 U8 M$ g %%( \; y" v0 g" L1 v" o
%第四步:绘图
+ U Q7 |( k% E$ z, Y& t5 P# E tic;figure;: k- a1 l1 x, s8 g8 b
m_proj(mercator,lat,latlim,lon,lonlim);0 M9 j; U! r! q* j
[longrid,latgrid]=meshgrid(Lon,Lat);
, W7 z/ t8 c, s& q) J- w m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
{9 K- i! |) B% q tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f* ?, Y) n$ |, ]& {$ T
m_grid(box,fancy,tickdir,in);%网格化) I+ g+ F8 p8 m
%brighten(.5);%亮化& _1 y7 x M% _% D1 G0 S# X
colormap(hsv);
3 C0 i3 h+ ]0 n h = colorbar(h);%色标7 F9 \( t, d7 S. Y. d# {
h.Label.String = W·m^{-2}+ M, H2 }! {2 f& d" ^: L' u: D/ J
h.Location = eastoutside;%色标位置+ A4 a2 x# _0 U! N. }
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...
! ]4 T2 F/ X* z/ x FontName,黑体,fontsize,12,FontWeight,"bold") %标题
$ e9 p) G7 Y# V7 q# [6 P4 n xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);0 T, R( F. f g5 C
toc;
- j- x }! [6 }) A
8 O8 k: E; h( D& \5 v0 N' @ 附上另外俩残次品绘图结果,数据来源:IOCADS % f' a% x) }* f
* U7 O+ _/ U$ V( X! j$ {/ ? w4 _
- n5 T% u$ O4 Q$ g
% S2 n1 r' Y7 \1 F: O3 u, T* A @
* A. l$ {' v3 d9 `: A2 k( x
. G s& u8 Q2 ~6 _8 k$ ? |