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

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

[复制链接]
) c; t4 L* J7 t. `, g0 W

图片赏析

9 B4 P n A+ e3 S4 R5 y- e
' `1 s2 q9 B8 H2 d+ a: q$ N
: G; a7 _% t2 }- {1 t

. K' \/ x1 S- u( I5 z

前言

. `6 P* @8 S: G; S5 J8 a: R( B. ?: B

2 W( T1 V. A# |3 V: j, v

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

7 }5 e# E5 }0 ^$ A& y& e3 i

数据来源:

# x0 y- j. x+ e. y" m# _8 q : N6 [9 F! Q# {, H+ `5 Q8 X% H

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

, c E- t+ R/ y2 ]% V0 N

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

& \; A- q9 D) x1 l' X

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

/ P z+ A$ i$ L+ G

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

0 D) H q2 }( z9 U, Y* t

空间精度:0.25°

9 G0 B: @4 J* y/ y' f5 b

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

6 ]. f" {7 F3 [. ]: ]" n( i9 V9 q

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

+ z% x- N" r F) a+ c% f

源代码

# |( ]! j& ~7 T& f
%南海1998年12月31日某时的海面热通量数据及分布图4 O3 G2 }. ^* P3 M( Z$ q! w %%1 v, c f0 E) M- R Q %第一步:数据的展示 1 R5 t+ p& h& x* W$ a tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址8 ?7 l3 f3 Y+ l$ M+ e filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名 : V7 ?0 O0 B B+ f; f5 `8 w abs_path=fullfile(Path,filename);%合并,绝对路径文件 W1 e* R# i& i# o2 U clearvars -except abs_path;%清除除了abs_path以外所有变量 j1 @ C" O+ n: z7 Y) Z ncdisp(abs_path);%读取所选文件 . ]3 ~/ j& ]4 C3 F" { whos;toc; $ {4 y' f. n2 i. A3 \ %% - N6 x7 D( d$ Q) K4 z$ ^; l F0 ^ %第二步:数据读取/ {( o+ J( {) u! V3 W( J( v tic;Lat_ini=ncread(abs_path,lat); % V7 f5 ~* l8 l- X Lon_ini=ncread(abs_path,lon);2 A9 D$ `* u; V/ m2 K, b Time_ini=ncread(abs_path,time); 8 n% U! S- {2 I, {2 | Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux); f& }/ i+ k, w Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux); ! I+ z3 _0 m, q# d" E2 l, E toc;clear abs_path;; _8 L5 W) n( f/ ~5 |+ C$ I H %% " A0 n$ o9 _6 {% ]6 [0 n9 l %第三步:确定边界/截取数据 ! v: E7 q% \: [- y %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°3 ?7 {( M8 W* i! ~: R' v$ I& T tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序 7 x) }" G$ n: R( W Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度% ^) f0 N8 P5 W# |, S+ D" V Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号) . q5 @9 @. J5 v0 e& F Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)1 ~2 \' ]/ s' E. c Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)5 n; r- E% m, D& s2 p% L( _3 u/ t Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)' s3 S6 l g: \( p% W Lon=Lon_ini(Lon_start_No:Lon_end_No);! k0 l9 E3 ]4 L% P Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的 ; W- S) K6 @& s: n% k clear Lat_ini;clear Lon_ini;%回收内存 1 J! R# ]% q7 D/ n Lat=double(Lat);Lon=double(Lon);%双精度化 G% z0 ^) A& n0 ^, f" E7 k latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];6 x0 ? s0 E0 G# a Time=9%输入时间,注意三小时的倍数 0 x8 {$ A1 s& F3 H2 T7 c+ h Time_No=Time/3+1; 4 U2 T( Q. e+ J- ]/ h7 ] %截取数据并降维度1 W& \+ T. w- i Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的; F9 \8 H2 I" \0 I! F9 X Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的 + V2 [ B9 U; Y: v7 H; \! V% L9 f clear Sp_Re;toc;%清除不再使用的变量 3 P/ O1 P& _6 K x %%" p! ^ I- h, v! |! r: f1 { %第四步:绘图 6 C5 s( W) O5 W- O d1 P( O0 P; w tic;figure;% t6 J2 m' d7 `9 S m_proj(mercator,lat,latlim,lon,lonlim); 2 R& T( y: V% ^( m+ P3 V [longrid,latgrid]=meshgrid(Lon,Lat); 9 ^+ n3 q6 X7 Z0 u0 V1 C0 n. H m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf / @3 V. B2 e2 E, s2 X6 K tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f 9 O0 s4 f9 Z( c' k m_grid(box,fancy,tickdir,in);%网格化' Y- F/ y0 d8 N/ O, v* a %brighten(.5);%亮化7 C, p- a3 u z/ y5 s' [: f colormap(hsv);1 m# i' k2 I* b: n/ `) p6 s$ X h = colorbar(h);%色标 % W N% I7 g# A- p& ?# Y- V. ^ h.Label.String = W·m^{-2} 8 N! _. @9 l7 a `5 _" u1 t" e h.Location = eastoutside;%色标位置 1 \/ j+ T' }8 B8 Z' N, i, [: p title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...7 l4 T2 B" p% N/ g% [& Q" @ FontName,黑体,fontsize,12,FontWeight,"bold") %标题 0 _) Y$ E% V7 _ xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9); r# n! v/ i: Z& b toc; + x' v' y3 g. Z
5 B! E5 I" v/ @/ S; ?1 N

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

: M! R7 B3 y' j M, q0 D0 f
. ]( X6 H- G. I6 y' d0 Z" u5 J
) q; E# j* {# f6 ^6 a5 ]. t- r+ m / e1 N4 F9 p8 u, G8 r1 { - i; I3 F+ R |* }5 c( s ! C* a4 C/ \. R3 ^( [ 7 |4 Y, X j( Y; H
回复

举报 使用道具

相关帖子

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