Matlab海洋绘图:海面热通量分布——以南海为例 - 海洋地质热流测量

[复制链接]
& v. y2 E6 F/ O$ N9 C7 v% w

图片赏析

z3 j) a3 o! Z- ^0 ?+ w; i- m
( G+ T$ v8 F9 Y; g4 n+ B( y
' n) i; m. z3 a7 D( _

! ^2 @2 e: i5 h3 q; v( A/ f; W

前言

% F: W3 l8 ]2 X& Y; q# G# g% |

# H9 {, M- ~: F2 U0 M

南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°

S$ J0 a) w' n, b0 z. h

数据来源:

- f" p9 U6 I. }1 g. _ H6 x0 K7 z * c6 |$ m4 c; Y) I, [) e

数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学

4 }3 e) a }( f% \1 {# c7 i

数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心

$ w# `7 n! q: H9 v

产品名称:Ocean Heat Fluxes海洋热通量

( C2 }' r& l. Y; w

时间精度:每日3-hourly记录

! [% P6 Q! ` a8 F) t* X

空间精度:0.25°

8 x' c& j! `9 P# }1 a

注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map

5 a5 h z. h( o3 t; q7 }4 F$ E

亦需调用gshhs高精度海岸线数据。

# k. b3 _$ \3 A) [3 }- t

源代码

2 J! z& B6 Y1 ^7 \1 f5 s
%南海1998年12月31日某时的海面热通量数据及分布图+ L. ]0 z5 Q% C %%+ m/ U* K! O: I" R %第一步:数据的展示 4 ~" Y2 w/ e5 L% p tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址( f& _" s$ E! q* v& w filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名. `7 b0 ?6 H) L1 ^3 j" o abs_path=fullfile(Path,filename);%合并,绝对路径文件 2 F8 C+ m2 e& z* q clearvars -except abs_path;%清除除了abs_path以外所有变量% ^5 c* g) Y! k# G ncdisp(abs_path);%读取所选文件) e; M$ v6 X. r5 _5 o whos;toc;, R, i- I7 R7 }! C1 r+ `. d% j %% / b) s$ m4 T' o) I2 p+ S7 y %第二步:数据读取5 d3 {: G. A/ g% t) R tic;Lat_ini=ncread(abs_path,lat);$ X7 i' f D; E2 F. }% s Lon_ini=ncread(abs_path,lon);# D/ J% q$ V3 V3 p6 R( w1 w Time_ini=ncread(abs_path,time); 3 V6 y7 o: N+ v9 t Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);, V9 X+ j& O2 @) x6 J. I Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux); # r+ z; a+ V1 H9 p toc;clear abs_path; ' P. m% s& r- g$ j7 \& c %%8 g! V4 l. n4 U0 O %第三步:确定边界/截取数据 # @; {" |9 f8 L$ l" a2 n! f %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124° + n& n( d6 z5 N" S7 J1 L0 ?% ^ tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序 ! `$ [) x8 {. V- U/ Z Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度 " u! [; ^ t/ p1 E" i8 ~+ g Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号) 5 h6 ?( `& y6 l: @; T5 y. F Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)9 ^9 _ T$ U7 A& a5 y Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)* }7 Q. G1 w8 p8 ~ Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号) ; h6 e3 @1 G: ]3 C) M" F+ M Lon=Lon_ini(Lon_start_No:Lon_end_No); 9 F- A F! ^+ i Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的) l- R1 b, M' }: r' v$ p) M$ ? clear Lat_ini;clear Lon_ini;%回收内存& G# L+ R; @3 u Lat=double(Lat);Lon=double(Lon);%双精度化 3 `! N& |2 ?! Q7 ` latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)]; 1 _: @! ^0 a) F9 _ Time=9%输入时间,注意三小时的倍数 2 D5 c* Q" T! f! b6 v2 d Time_No=Time/3+1;4 u7 l# X$ ?4 Y9 w `4 j %截取数据并降维度 : |$ k, c9 O, [& l; h( }% c Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的 + W4 y8 u; ]0 c- e s% T8 g Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的, h" g- j V0 h8 n$ ~4 H) _ clear Sp_Re;toc;%清除不再使用的变量, v- i8 ~8 Z" w7 f9 O' P$ ?+ d6 ? %% , t: I' s, Z \: R% e: n %第四步:绘图 j& b5 A4 n: Q8 O tic;figure; 7 T8 X; \. o- g3 t m_proj(mercator,lat,latlim,lon,lonlim);0 P( E6 p' _* a! ` [longrid,latgrid]=meshgrid(Lon,Lat); z) K6 x; ?1 ?8 p) n m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf 7 D8 k: H0 M7 }. `( ]' { tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f ) q7 R9 B4 ~$ v" S m_grid(box,fancy,tickdir,in);%网格化2 E) ?& B6 t ] %brighten(.5);%亮化0 A8 T0 H& i: s: T1 {$ ~: s. h8 j colormap(hsv);7 V$ u$ {9 `5 h) @2 D8 Q3 n, q7 i h = colorbar(h);%色标+ _0 J U8 |2 n h.Label.String = W·m^{-2}) a8 s" Q/ u; h" G) o' d h.Location = eastoutside;%色标位置+ f6 {6 \6 ^6 f7 e5 ` title([1998年12月31日,num2str(Time),:00,南海海面感热通量],... ) D+ ~ L7 ^) S, m. b FontName,黑体,fontsize,12,FontWeight,"bold") %标题 1 m) n* Y2 O0 m% Z xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9); 3 w: W4 w( a, a toc;" V' }7 l% w: m0 ~+ }
# Y4 Z( O# J/ \: }

附上另外俩残次品绘图结果,数据来源:IOCADS

0 h# c3 y0 F2 ` N
# `% u1 k& z$ ]. ^5 F
6 o" q k Y( D- f1 V9 [ 7 l3 B2 i- ]- ]- d6 R' r4 g4 ~& ^1 n" M/ {- E8 E/ e% B& V1 p# y" d * ?+ Q4 U5 _; A2 x; T0 r 5 k9 w* E9 L5 d" N7 ?: i2 I
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
汉再兴
活跃在3 小时前
快速回复 返回顶部 返回列表