( } Z: M+ N2 ]4 x% f 图片赏析
, h1 [: n/ Y% V 9 w% A7 O! s- }1 ?, u9 W
+ W9 [3 U5 M' V4 M9 n0 C
& l; y6 s" I3 m6 S* D$ W
前言
# |3 }: Q5 Q* c 8 @' ]1 \5 B# u0 h( V
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
' P0 K$ l# S; t+ g* X# p( Y, v 数据来源: ; y7 p- M5 ?1 w" O Q6 k( H
* B: ~% p; c& b
数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 & S! T9 v1 L- U6 J7 g# }- g
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
8 k# f5 V$ `/ K) J 产品名称:Ocean Heat Fluxes海洋热通量
$ y( h# h. V4 _! F/ w 时间精度:每日3-hourly记录
, e$ [0 J) G3 Q. e# ?# p 空间精度:0.25°
( H3 o, H' N* \% J' a 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map; $ F' F# H" u0 m9 p$ H
亦需调用gshhs高精度海岸线数据。
" e- ?: E* _8 z) {6 Z 源代码
* W# w0 c/ S# ?& G) A' } %南海1998年12月31日某时的海面热通量数据及分布图
2 q$ K# u6 l5 r# D1 H4 j6 s! R %%4 E7 h" h9 j0 {7 S
%第一步:数据的展示( g1 g' H# o' |; e# J1 ?
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址9 P; a z2 D. J, O% Z$ q. D( C# F
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
' s7 w% l% W$ p' x1 k _ abs_path=fullfile(Path,filename);%合并,绝对路径文件& d. y$ N8 M/ T, w3 S* [
clearvars -except abs_path;%清除除了abs_path以外所有变量
- f9 d) x" I9 F/ H$ a ncdisp(abs_path);%读取所选文件
% ?" R8 N8 z3 Z% g whos;toc;; }7 j+ k: |4 i6 b1 U, n) Y
%% 4 M* |7 ~8 \" u# S% f& ]
%第二步:数据读取
: p$ _9 C8 y4 |3 [ tic;Lat_ini=ncread(abs_path,lat);2 W7 u% P" q3 G: j
Lon_ini=ncread(abs_path,lon);+ b0 C7 I5 _/ i& f" H" h
Time_ini=ncread(abs_path,time);
4 d. Z; | S* E" E6 o Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);; }2 V2 L+ H+ S/ T! o; q4 n& K1 t
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);+ U" U6 Y& K/ w" v
toc;clear abs_path;/ K5 R% p+ x- k
%%
+ s1 n1 Y8 ^0 }: Q* ? %第三步:确定边界/截取数据; q4 T+ M% d9 p4 }0 u
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
- J) j; u, ` S tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序
) n& y! ^5 T- d2 C& p$ @ Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
9 q" u/ q8 C, m* S Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)! B6 i: {, b/ b$ U8 }6 u0 a
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
0 g3 e+ I# J) I) M Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)" P/ J% N, _+ h5 ?5 ~$ U/ L7 u
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)" c* C6 T* |& e( G' M, M3 l
Lon=Lon_ini(Lon_start_No:Lon_end_No);- q4 I+ V! C( r
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的* _' ^4 A3 b5 I
clear Lat_ini;clear Lon_ini;%回收内存
7 w8 A' i7 b& j% V" s: x$ t. h Lat=double(Lat);Lon=double(Lon);%双精度化
" S1 Y4 L% Z( ~, ~% o latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];* P8 a5 G5 c# O% _+ ]
Time=9%输入时间,注意三小时的倍数
7 h W( y" `1 K7 j q Time_No=Time/3+1;
3 |; B. d2 |: p( E; R$ _ %截取数据并降维度, U2 Q/ \2 A$ i7 u9 F
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
1 b) T% J5 m Q# Z* S) Z Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的* T5 i; v! m9 k9 U; P
clear Sp_Re;toc;%清除不再使用的变量0 a" \8 R& g) J$ c; {6 N
%%" j0 q% w$ G+ c0 ^' Q1 M
%第四步:绘图
6 k( n' ^1 H5 [9 _7 K0 D5 x tic;figure;# f* b; {( ^% `6 p2 g+ E
m_proj(mercator,lat,latlim,lon,lonlim);5 Q) o6 i# W* S( E4 F) \, R' W- h
[longrid,latgrid]=meshgrid(Lon,Lat);
9 p7 V" }4 ]( D" U m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
. m1 m' W G0 K: ?* F tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f7 ~1 w* l S5 \0 H! h
m_grid(box,fancy,tickdir,in);%网格化1 c& q; n% R- E) J
%brighten(.5);%亮化1 w4 J4 h8 g1 g- v
colormap(hsv);9 l/ k( h4 I9 R3 `
h = colorbar(h);%色标) H" m1 `; A Q& v" I2 v9 t4 p
h.Label.String = W·m^{-2}# x! y" [; B! a" J- O K1 m
h.Location = eastoutside;%色标位置- w+ }4 o' E" ]
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...0 l! g1 D6 o" i
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
- H* f) F3 R. J# W xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
5 M' ^0 }. L. \" R0 O$ w6 S( e4 ] toc;
9 }& n5 E( }& S+ F0 s; X: O$ | D+ K* D9 y s
附上另外俩残次品绘图结果,数据来源:IOCADS
8 X9 U0 b, N. ]5 w" g t( [' U9 W ; }( l9 Z# C( a& L: a5 M3 {
$ t8 t, z0 s1 B
6 k! v& z+ n' x
2 | s: S" N7 D @$ S/ k8 z& p7 b& O7 h5 n1 N8 t
. S9 W6 U6 }& V8 u/ o
|