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

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

[复制链接]
6 l% U, a- X8 N9 V9 }

图片赏析

/ ?) f& {$ I9 p* r4 q
* M" B: J% s) g6 O! Y/ ]
: c- P; U/ ^6 b) e8 R2 \5 I

$ U9 Y8 P% D1 s" T, Z s

前言

8 @( s3 {6 A4 u- e9 e( Q3 m* G

' \5 M6 P' S" `

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

9 a2 w: I) V9 o% C) n, l

数据来源:

) }7 s# t) j3 f" q , L8 A* g3 }. u! O7 }) V& f* v" X( d6 W

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

5 H& h8 W) h2 A. A" u- I$ c6 h

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

1 | f* ?, r4 M; `' U/ R0 \6 n

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

8 |; I6 P. ]' ]" W# s

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

( b# |1 ^: y2 J, v/ t- _

空间精度:0.25°

/ A) M- l- Q" D( c

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

$ }! t4 T# g5 b. {; W+ _

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

) j3 N& o& o0 f+ T& `9 |

源代码

* `9 Q' i7 \4 m: A- l
%南海1998年12月31日某时的海面热通量数据及分布图 % S- l0 E+ M9 A) B( H+ F %% o) Z1 \8 {: ^" R! `4 U %第一步:数据的展示 # ]8 d8 E0 @$ K! U3 C8 ~& u( L tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址 4 A/ I4 h$ G% x$ `+ \, U# f filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名 8 q5 C8 L( r2 |7 Q e abs_path=fullfile(Path,filename);%合并,绝对路径文件 ) g) U7 P' x/ g& K clearvars -except abs_path;%清除除了abs_path以外所有变量8 b" _/ w& g" m; f) s1 M3 n! t ncdisp(abs_path);%读取所选文件 / r7 ~) z# E& V6 _' I. \0 o2 e whos;toc;+ p/ e6 z3 ?* \9 Z %% & Q- ~: _% y" k4 W %第二步:数据读取& D- u8 n2 g, \# S* o7 {9 k, C tic;Lat_ini=ncread(abs_path,lat);# L- J" u. d4 v. w, q Lon_ini=ncread(abs_path,lon);" M" a7 C1 R# c/ `" D$ g8 E Time_ini=ncread(abs_path,time);' S. P% r7 i7 d2 }& I/ ] Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);& K$ p0 e. e3 s* m; F# ~. t Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux); 7 G. a; J: S0 l1 X1 W toc;clear abs_path;3 I' P1 V3 O: e& j %% m* ?2 T+ k/ V1 F$ d8 X' f %第三步:确定边界/截取数据; T6 ]; I- S* E7 ?( V( Z7 t %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°: k. r5 T, R. a4 l+ U9 u$ z6 o/ U tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序 $ K- m6 y8 I# ` Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度 u4 e) F! k% n+ j Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)* u' P! ~2 Z+ L5 _3 A9 x1 M; t( y Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号) ( B8 s( a& _2 |7 g Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号) 8 J; k+ e0 F" S( O+ v+ K8 [( e2 i Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号), y- E( _. I O# c `8 X Lon=Lon_ini(Lon_start_No:Lon_end_No);9 V! S& j. O* y3 ]# [2 p' u# q Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的0 T) Z0 m' ?5 |1 }9 F clear Lat_ini;clear Lon_ini;%回收内存 % v# w! T# ^, l) {, g- I% V Lat=double(Lat);Lon=double(Lon);%双精度化 , u) f+ z; V" |- s- Z latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)]; ( N( p" Q y: B: g Time=9%输入时间,注意三小时的倍数 , ~+ Y5 }+ Q ]' x+ [ Time_No=Time/3+1;6 H. l* c7 F$ U. J %截取数据并降维度0 e. E& a- b, K- C. d Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的' d& J& W1 y+ X. p Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的 5 |: A$ \+ ]. e+ J clear Sp_Re;toc;%清除不再使用的变量 ! M% m# \3 G' L* g* {% M' V% V/ H- c %%' E) G# a8 g, K: ]) k5 S% w# g %第四步:绘图 6 O3 b9 f! N) c7 \1 Q tic;figure;- B7 J5 Y f8 n$ R0 b) B. n' a m_proj(mercator,lat,latlim,lon,lonlim);# K) N6 w. Y. D; G+ S [longrid,latgrid]=meshgrid(Lon,Lat); . F2 K% n/ g/ w3 M3 g m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf % f2 P% V! @3 X- W tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f. L0 m, p+ `0 \ m_grid(box,fancy,tickdir,in);%网格化 0 P' J1 F% o& u6 ]; k" g$ Z %brighten(.5);%亮化6 H: F% w- O* L colormap(hsv); : g% C' j4 j: a; r h = colorbar(h);%色标, k; S9 F/ b% y h.Label.String = W·m^{-2}9 J- A+ Y4 f- K: W h.Location = eastoutside;%色标位置" J- W! G* A3 p1 g( C _" l title([1998年12月31日,num2str(Time),:00,南海海面感热通量],... 4 A; S4 A& a% J2 w% s' ^7 ]4 P FontName,黑体,fontsize,12,FontWeight,"bold") %标题0 i4 B1 i7 L1 L" V b xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);# K( X+ ]' {% S+ G toc;3 _* ^# J, G) @( i5 q: D6 k8 i7 l
: X5 A( U! n( t8 R+ u! ^, K9 i

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

8 S9 h: |# w$ ? Z$ Z" X; w3 |
4 S! R9 R* z3 X/ g; r9 F3 z0 ~2 i
2 x# R) D. K6 V( d6 o6 h ( \+ a) [2 k( T5 l9 w! j1 e7 @- M# I0 z 9 @6 Y' e7 {9 E6 i' B: w4 z6 B 1 q5 C+ q5 J( o& E5 W3 o
回复

举报 使用道具

相关帖子

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