收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

Matlab海洋绘图:海面热通量分布——以南海为例

[复制链接]
' `; J: w) r @' J3 R4 J' `' M

图片赏析

9 U; T+ H& [% W( W0 _# \0 z
7 b, S1 q5 C/ i0 \/ M
3 g5 w/ K( U9 n3 x8 O

) \- l1 Z$ a7 m

前言

( K% y1 M* V7 H

! c! v2 _' E6 I( f! B/ }

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

/ p! M i4 E! A' c0 h7 f# o7 J( E3 o

数据来源:

H3 ]& I+ b: \+ q" R ! N, _6 J# W& w- q5 C' G0 Z& X

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

; U4 E5 V/ s# c( v

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

9 q9 t/ k0 F2 x) h; z( _

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

" \; P/ Z$ B- P, j( p8 z

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

6 @- s$ N: M) e5 l

空间精度:0.25°

/ G6 p( }; w) w0 ^; f

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

7 |0 ~& P0 {8 [! I1 o

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

5 L) @3 [4 ~5 v: i, ~) j# C7 {" r% F% }5 z

源代码

K7 B8 I8 |- `2 G( B, G
%南海1998年12月31日某时的海面热通量数据及分布图. O2 y# D( k6 j" d. ?, d S( _& R %%, l4 _- T4 A. T6 N' y %第一步:数据的展示 8 U9 @% V, m1 B3 X) A tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址 % [9 W; k6 C0 q# t) O$ H$ {& g filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名 9 v1 i( R% S' u; B6 U0 w- z3 x abs_path=fullfile(Path,filename);%合并,绝对路径文件 & K" H W% ~) z& g clearvars -except abs_path;%清除除了abs_path以外所有变量0 A% O# {4 e( H; a( w2 X; H: ~; R ncdisp(abs_path);%读取所选文件* W& ?) d) |% b- C! q# j* s B whos;toc;0 ]2 Z8 o; c6 X5 A9 u f5 c3 D _ %% ) {2 J0 t2 S. j1 x2 ^8 \ %第二步:数据读取 ' j( a b; i% ~5 Z9 I6 a tic;Lat_ini=ncread(abs_path,lat); , A. d% I. e4 i0 }# ~* M- H- M; n6 C Lon_ini=ncread(abs_path,lon); ' q/ t8 c/ s0 V& S Time_ini=ncread(abs_path,time);' W) { y! z0 D/ d7 G Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);6 x5 M7 G% h- m+ x3 v6 n Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);% j Z6 r. b& P3 N: V/ v toc;clear abs_path;0 ]+ |; ?4 m5 y: \& t %%5 ?+ K3 \5 }2 P8 y2 T %第三步:确定边界/截取数据8 {/ z' m$ U* j3 ^( X+ V %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°/ H7 x% T4 m$ K# K" j& } tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序 2 o2 i0 z- W# h Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度 O* D( G( M8 _+ _ Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号) ' G( L# g x. j* s; h( e$ A: S* q) f Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)3 r2 i9 h# G/ V0 ] Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号) 3 t/ \+ d$ e- u3 q' F. E' ^( F Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号) 0 t1 i m/ L1 V) B% F" p. {# c8 N Lon=Lon_ini(Lon_start_No:Lon_end_No); 3 V8 j4 T, A8 I R; T4 Q. J# D Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的 & {6 G3 N" [& O2 X+ L clear Lat_ini;clear Lon_ini;%回收内存% G) z- y# H9 r5 }- i* L Lat=double(Lat);Lon=double(Lon);%双精度化: {; d# ]# u7 m! P; O' Q% g latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];' t+ s& D. H# n% h$ K Time=9%输入时间,注意三小时的倍数' h8 h8 G3 u1 [ Time_No=Time/3+1;8 _5 \1 o3 `$ p/ K1 L %截取数据并降维度 0 K* M- f# A8 P- V+ S( X Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的 & B8 Z! S- ?( \& E b% @: H( M Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的 1 ?* i9 C& ^" R! n" V7 o) i" R% g, Q2 u clear Sp_Re;toc;%清除不再使用的变量 7 x# X$ ~& E+ C7 _+ r %%$ @( h/ m0 v" i8 c W %第四步:绘图 - i7 ?( P9 t& P tic;figure;5 U) b+ x" E3 g1 | m_proj(mercator,lat,latlim,lon,lonlim); # H5 O: E3 v, d- }! U8 T. r( E% W [longrid,latgrid]=meshgrid(Lon,Lat); 1 n3 e5 X* y' c3 G6 D: c5 d m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf+ Q3 B# {) ^4 k tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f * e/ }$ F1 Y$ h3 a$ d* U, I" ] m_grid(box,fancy,tickdir,in);%网格化) i0 x8 E5 `$ P$ H2 B3 r %brighten(.5);%亮化 0 N) l$ y% H$ w& X- v+ U+ _5 C colormap(hsv); ( x k+ ?9 ^) Y( G! }! c) {5 } h = colorbar(h);%色标 / L0 G* d4 X. M3 I h.Label.String = W·m^{-2} , Z N8 w+ L* h8 d/ R8 [ h.Location = eastoutside;%色标位置! q- t+ E1 ?" }# X1 R0 ~! K title([1998年12月31日,num2str(Time),:00,南海海面感热通量],... * c/ j7 W3 p F$ ]- T. ? FontName,黑体,fontsize,12,FontWeight,"bold") %标题 $ r1 i6 d9 r8 E5 b0 M" O' a xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);) J) ^+ s$ H& O% p2 ^: _4 G! d* O8 \ toc; 8 X. e! d8 ~0 C2 K$ a; C- ~
4 x' M' I. O+ Y% o, m# V f. A

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

, t6 A/ ]9 Z( v- F( p) g) G
( c t. h$ Q$ `. D! V F+ E
5 a# p: x) o9 [4 r2 O 6 O+ P/ K# i9 Z+ }) ?: X3 Q4 i1 T& \% V7 z! S- N6 [ 0 P: k/ L: C0 S" @( }! U3 H 3 S0 o; k8 G r
回复

举报 使用道具

相关帖子

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