% z1 r& p }8 @6 o/ i* \2 g7 G
图片赏析
. m; w& o c5 f- Q" |7 S) O
. k2 _/ f" g8 Z. V$ z d7 g % B/ R0 d/ D/ v9 ]% H
# p- @2 ~% M0 i1 m
前言 1 M- X5 I6 [' W1 Q: K- s. j
& w. z: |* t9 s
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° . n& }" g1 q; R
数据来源: ! i+ ^2 s1 ?5 b3 F. B0 A
# k2 ]- t# f( {7 \6 b" u3 o 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
# |& Y3 A+ `" k" w 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心
/ {8 Y# I: D: {' Q8 O& z& | 产品名称:Ocean Heat Fluxes海洋热通量
' Q: N) W$ d" n+ I 时间精度:每日3-hourly记录
. w8 D$ G* l; l' F( l 空间精度:0.25°
/ n1 ?9 q) t8 x 注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
' N! q6 C2 X$ f6 d0 I' w4 c4 ?3 ^9 Z6 x U 亦需调用gshhs高精度海岸线数据。 8 ^$ B. j5 H6 {# y* d$ l) X1 O: _
源代码
- v6 M$ H& }. ]$ A- C# V0 a5 r' j %南海1998年12月31日某时的海面热通量数据及分布图7 ^- n7 T5 r# _; h/ A
%%- P# L9 X7 W0 B, c) l- a% B1 u) M
%第一步:数据的展示6 v& w% @( p0 M
tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
3 Z6 Z4 V h {3 Y5 G. } filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名
9 ~3 x! U2 ]2 j abs_path=fullfile(Path,filename);%合并,绝对路径文件
( a) x" c- j; V0 f% P- S2 K clearvars -except abs_path;%清除除了abs_path以外所有变量2 @) B' {( {! X/ y9 _
ncdisp(abs_path);%读取所选文件
! X; ^( o& ~- k/ l- [2 u4 C, ` whos;toc;
# y# a) O( x2 i" s& q) h( n3 y7 E %% 1 r+ K$ j, e2 D
%第二步:数据读取% r- s9 U( Z& B& [1 B" M
tic;Lat_ini=ncread(abs_path,lat);
' S# Y! e# G/ d3 |0 p2 u Lon_ini=ncread(abs_path,lon);
7 s0 i% t7 n6 g8 H2 p6 ?! { Time_ini=ncread(abs_path,time);9 J1 z+ t, J2 u, @7 l0 c- u- F
Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);7 e! o7 R E' [+ \# @+ e2 q
Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);; p( n h' V5 B) M
toc;clear abs_path;
: ], h8 Q! |! n %%' `, Q, c. L7 c9 Y: X! h3 x( j
%第三步:确定边界/截取数据
4 Q1 g) v! k1 k %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°
* \1 Y/ j- s/ ]- Z tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序6 _1 z% i" x- U5 M0 `
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度( ]1 t$ X" p" I h
Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)$ A9 |& r4 \4 r1 `: D+ O% [
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号). l2 }; z- b' E1 q
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号), d% D% K9 C% D. Q: G+ P6 U. M5 m
Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
7 G( O% B3 d4 ^( @$ t Lon=Lon_ini(Lon_start_No:Lon_end_No);
7 ]- w2 j( a3 A3 b, J+ c0 E Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的+ R5 d# d: J& U7 r; J# J, U, L4 k
clear Lat_ini;clear Lon_ini;%回收内存8 v8 d$ v' K& S
Lat=double(Lat);Lon=double(Lon);%双精度化. Z$ T, W. d# b% h2 W4 T
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];: B: s* e1 U' j/ A: ?1 t
Time=9%输入时间,注意三小时的倍数* m7 k+ X5 y# |" Y8 P/ H3 c
Time_No=Time/3+1;
+ m8 m* n+ x9 l4 a$ o %截取数据并降维度: E( K8 L" [" O; S
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的, t: u, a' y5 }
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
4 I% p; Q8 u) b clear Sp_Re;toc;%清除不再使用的变量5 o9 T0 l1 _' }4 d) v7 V
%%
1 w) r2 M. O8 e0 B; z) |' R( e( | %第四步:绘图* v) ^& x! L2 z) L4 e o
tic;figure; G# B! `! v% n) E- ~
m_proj(mercator,lat,latlim,lon,lonlim);
- I+ t$ e F! s3 ]0 @3 f [longrid,latgrid]=meshgrid(Lon,Lat);8 X% b( U* ~/ ]" `/ {
m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf) t8 ~9 i4 m' Y2 s: m. a0 D
tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
2 |% M$ T& K" G m_grid(box,fancy,tickdir,in);%网格化
# E/ S) s) R# [; U( f %brighten(.5);%亮化; r9 ?% A* P k9 B
colormap(hsv);: |. \ M X2 G0 C& L) X' [
h = colorbar(h);%色标
$ X4 [+ u, J# o" p, n' R h.Label.String = W·m^{-2}' M1 V" V6 a. k: X
h.Location = eastoutside;%色标位置 v/ [) {. r0 T6 G
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...* j% P9 J" J9 I8 R+ Y2 H) g5 ~; c
FontName,黑体,fontsize,12,FontWeight,"bold") %标题7 R4 ~+ J8 I2 j/ h" P$ d
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);# i3 X9 [$ F4 o
toc;
3 ]; e/ Y2 p9 B6 D1 k+ W
1 d0 F3 l! j( G 附上另外俩残次品绘图结果,数据来源:IOCADS
' m" ~8 J6 ?2 B. h8 B 8 y n, R7 ~- V2 z6 s7 f8 d: s
+ L) f8 l7 U* ~
3 o& K @+ E5 O" r
0 U# z/ }/ v: n: r+ Z) E( G/ ~/ |% O1 h3 ~. @! G
& c% f0 L8 F( b/ G% D3 _4 \
|