: e4 ^/ }8 X' k% Y6 m
图片赏析1 h5 H& H' c* ?4 F
! d c+ r" ?9 v+ H$ \, n. G 9 [$ S A$ N9 B8 r& B$ R
/ }, U* W) a% w, j 前言
) _& z% z2 t2 v3 ^* J ) H' b+ V X( s% q5 Q! s9 l$ I
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
5 g9 H- N0 [# C8 D6 I% x 数据来源: $ b* H, w' w$ j
; Q+ X; L+ n5 A, A Y
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
: h! R6 p1 Q* r" n6 l 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
% o2 Q+ M0 D" o9 \+ z9 { 产品名称:Ocean Heat Fluxes海洋热通量 5 E! a R; v; U8 @/ q
时间精度:每日3-hourly记录
" K. }# `& ~7 e; H" ] 空间精度:0.25° 7 s/ b0 I1 d; r1 w" A9 ~5 E& ~
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; , q4 c$ C. u( K8 c$ Z
亦需调用gshhs高精度海岸线数据。 - W2 |- F$ ~) N: x5 @5 X
源代码
& [& Z5 {2 O! L3 m %南海1998年12月31日某时的海面热通量数据及分布图8 Q, P6 ^1 [( p1 {1 L- f
%%+ v( H4 C1 v3 Q0 P
%第一步:数据的展示# y, {- x% G, x# ]1 H7 Z9 g
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址, q$ U& K$ D5 Q& S/ ^3 [
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
7 F! o3 q! Q; i8 E- e abs_path=fullfile(Path,filename);%合并,绝对路径文件7 s [9 h; |& m, w
clearvars -except abs_path;%清除除了abs_path以外所有变量/ u) S/ e8 j: t. E
ncdisp(abs_path);%读取所选文件* }, k- ]" V0 L9 ?3 j3 Y* S) _( l
whos;toc;, Y5 B6 s2 |& E7 v" O. v5 c
%% 5 J* D/ N& [& }7 N- f8 |* T, l
%第二步:数据读取
- ~, G0 r8 {. e tic;Lat_ini=ncread(abs_path,lat);3 g# _6 o* Y# y
Lon_ini=ncread(abs_path,lon);( n0 i$ _( K2 L8 j/ }3 z
Time_ini=ncread(abs_path,time);
- f5 O+ p5 l! O. L* Y' B1 H Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);8 K. }6 p# h$ K p: d
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);, j' l3 N6 S& [4 J2 L
toc;clear abs_path;* C2 r, Q. I/ X3 l# ~
%%) K' J& x4 V: }# N8 R
%第三步:确定边界/截取数据
! ^4 G, D c" U% o, r0 i %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
' x h/ i# e' _3 s1 k( } tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
8 D) ?/ ?8 m# ]1 X- ` Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度0 J! M5 _1 G& v7 r) l" ~9 V- _% N+ E
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
, T( K) ?; i# V% `: e$ @1 k( y Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)3 V1 N5 k. i5 q: O+ Y$ Y& r; q% c6 v
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
9 x! o5 p, \2 x, Z Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号): _4 d9 ~) u/ ^; _) b) |
Lon=Lon_ini(Lon_start_No:Lon_end_No);" q9 l+ }; c) e1 w. v/ P
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的2 Y4 U( ^4 w. {* D
clear Lat_ini;clear Lon_ini;%回收内存
8 m+ H3 p% v, ] Lat=double(Lat);Lon=double(Lon);%双精度化
. f1 e. e5 w& Z latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
; x0 v& k( V& \& K/ [. @- ] Time=9%输入时间,注意三小时的倍数4 R _4 L0 n; z" @/ T
Time_No=Time/3+1;
2 G# }! t+ w: {5 F3 b* e %截取数据并降维度' J2 h' j. B7 [/ @
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
5 `7 ~- Y. S7 b0 X' |, {6 ] Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
, y$ a& q1 u! j; j+ ~/ s; D9 g2 y clear Sp_Re;toc;%清除不再使用的变量
% Z W7 K$ c% @& d% V3 Y %%. z/ N# N$ _* w" L! ^2 q
%第四步:绘图3 f2 k0 c+ a+ m N. G t
tic;figure;
& S& v9 w' r' z) e m_proj(mercator,lat,latlim,lon,lonlim);3 Y2 C. P5 D2 z+ v8 _
[longrid,latgrid]=meshgrid(Lon,Lat);* W; ^( D( ?# c2 R
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf c; }# n$ Q/ |% W+ g
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
1 H) L4 U" J6 v% w m_grid(box,fancy,tickdir,in);%网格化5 J/ O% ?- F. [8 `
%brighten(.5);%亮化
$ w, y% _8 Q8 K1 ~: }. h7 J colormap(hsv);
* ~9 W; g& a {! l) E h = colorbar(h);%色标
' J7 d6 h( B2 b h.Label.String = W·m^{-2}" r3 V; f% g& [$ \& _
h.Location = eastoutside;%色标位置$ J6 ?, } G/ c0 H
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...% t" P( l3 I* }; z
FontName,黑体,fontsize,12,FontWeight,"bold") %标题! {0 X9 ]) s7 |: _
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);2 o3 h2 E2 C( n5 e/ {6 ^ d. r
toc;/ a5 f6 y3 j# B8 s
. N1 p% h+ ^$ O- {5 u
附上另外俩残次品绘图结果,数据来源:IOCADS 4 n& z0 U- Q) t: b! S' ]8 c8 R
# Q5 K% C9 s9 M; U8 ?! [) v1 Q/ J
: O B8 q# F/ g5 ^
, z& _, V, S2 P) \. {( @+ Z8 x' n3 S4 t
/ a/ b0 v" c5 F4 J8 [: w/ h' M# p8 b" ]. k3 N# l2 B
|