# V F" B: F/ y* X
图片赏析
& o- Q! U8 H% t! l " |; _0 N* l. d
" `( h! }, B: A: z. M
! q$ [/ |2 N8 T2 D0 w) L 前言 " _. w# W8 J. M* F* r
3 T1 ]$ h9 k8 v
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° 4 C7 U( ^1 [ j& o2 r1 N
数据来源:
+ g" x4 O2 d6 X. m# }2 N5 H
, p; n5 g: n* I- m 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 1 o# d* f+ m# h0 @1 D& r% s3 p
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 # M' [7 q" \+ J
产品名称:Ocean Heat Fluxes海洋热通量
0 C8 ]8 ]1 S, J+ v1 u 时间精度:每日3-hourly记录
3 L8 I5 Q; {) A3 v0 D I 空间精度:0.25°
* Y @2 l5 `) m( w( e e 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
& \9 b* T" ?7 K6 ^$ A" `( G1 U 亦需调用gshhs高精度海岸线数据。
3 \- p- Z+ d& P4 g3 i$ m* P 源代码
F3 Z. \* i# M %南海1998年12月31日某时的海面热通量数据及分布图
& A% H/ u6 i4 t& G1 b %%
' A/ x0 {. x3 n; k9 d %第一步:数据的展示
: f$ B8 O/ d; V$ [; B6 d4 _$ \% S tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
, O8 }8 D3 o/ t9 r filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
# R e H+ s* W6 C9 s& Y abs_path=fullfile(Path,filename);%合并,绝对路径文件7 o/ l# j, g% v( B% X& ^
clearvars -except abs_path;%清除除了abs_path以外所有变量/ _# g. e4 n" t3 s' I' f
ncdisp(abs_path);%读取所选文件& ?/ C/ f' G3 n% e& o& \& }" m2 x
whos;toc;
) p/ [6 p& p; M/ W1 v$ u %%
8 |9 p4 l, A K$ l5 F+ l$ N! M6 y %第二步:数据读取
/ l' {- X! L4 j2 F tic;Lat_ini=ncread(abs_path,lat);% L1 {2 a$ S3 z2 N' q2 g
Lon_ini=ncread(abs_path,lon);
( Y$ j" ^1 j4 e# m3 ]$ u8 h1 G Time_ini=ncread(abs_path,time);
4 l$ `' }! g" D, B Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);' _! H A6 t d; Q6 \* W0 A
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);& m# e% w5 ]2 h% G, \4 M' d1 `) i# r
toc;clear abs_path;5 w- n5 G: E% V, C! G
%%5 p7 X% o# p/ @- ~3 w! o' E( n+ K- I
%第三步:确定边界/截取数据; Y% {2 A2 ^* f9 Y0 f8 v6 t
%空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
6 a) ?8 P5 ~$ L: \1 q tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序9 O0 d* p I8 j3 E; ^) ~* q+ U# \
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度( ] C3 E( L6 Y
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)7 [: U3 Y, S- x1 n9 r% A
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)7 T- _5 M# V/ D: D
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)9 o0 ?, R5 ^; ]) L, e
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
: A0 s. \9 k: w# e. I' y Lon=Lon_ini(Lon_start_No:Lon_end_No);' ?$ y+ G" @ {) M0 {
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的8 W R1 C' x! }# ?$ d2 u
clear Lat_ini;clear Lon_ini;%回收内存
- W8 {0 D; C: J' l) W# U/ o) M Lat=double(Lat);Lon=double(Lon);%双精度化0 r. i+ R5 P+ C0 E+ {6 b* Y3 x
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];
4 `. V: c7 v5 k2 Q) n Time=9%输入时间,注意三小时的倍数
5 I3 l- E( I" z* H+ U! r! W Time_No=Time/3+1;
# B3 U8 @: j2 n3 ]. Z$ m) {9 h %截取数据并降维度
5 T' N/ k! a' S/ J Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的+ t7 }8 p5 U. Y
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
' e5 C% R6 n0 c6 _" s1 y clear Sp_Re;toc;%清除不再使用的变量
: C: x6 s; z- H* v0 d6 u9 X %%
) I5 l; J% X; |( m0 T+ s% R2 ]; v %第四步:绘图
7 k4 c7 R E$ C. E( E7 [: S) r" ` tic;figure;
0 B. I6 `3 y/ P1 t5 A- M m_proj(mercator,lat,latlim,lon,lonlim);
4 h3 n/ G( [, z/ ^# r" k6 P. j [longrid,latgrid]=meshgrid(Lon,Lat);
. a P; y% G, w+ I- d+ H m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
) v6 W/ I. m k/ e8 ]% p tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
1 o; ~/ V/ p" K+ I G m_grid(box,fancy,tickdir,in);%网格化% ?: s9 u' Y! b3 h% F
%brighten(.5);%亮化# N* ~ X- o8 p/ |
colormap(hsv);
* U0 H2 d9 w" i! E) [8 b h = colorbar(h);%色标
2 Y+ h9 n2 t- Q& Q, D4 ], Z: ? h.Label.String = W·m^{-2}
# ?2 P* M, B# B& k7 y, n h.Location = eastoutside;%色标位置 f: t; @. [" S
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],..., |3 Y. U1 @1 h! l* n+ T& T4 b
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
+ U/ Z+ {0 x% l* t xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);) M# `' t& ?* [! m3 I
toc;$ g/ r/ c: B9 I$ V3 [# l
' z+ r2 k5 l- q# e
附上另外俩残次品绘图结果,数据来源:IOCADS 3 l y' A0 a. t4 f6 y
4 j6 Z: R5 G$ C. g+ c
# T6 ~) x% \4 I
- Y g$ n/ ?0 ^0 v' H5 l
$ [8 G8 ]9 e" V, z9 S- R1 b5 u' S$ ]& p$ s3 v- u
( [/ i- ^: H" y, T6 R4 A) p5 B |