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

[复制链接]
' c. @9 ?5 H' Q% c5 P

图片赏析

' G' [- x* a$ E3 X! j- ~! m9 i6 K
/ a! K% d4 @ i7 E* n* }6 ~" {
2 s# d$ Q5 m" p

# U% a6 \, `# U+ ?' `

前言

" K( G4 Q. o9 _. u5 m/ h3 e7 s+ f- ]

9 ]( O( \7 k( a; k9 B' D2 f# E% K

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

) w6 e# G6 o5 H% G8 X

数据来源:

& `9 ]( j& _& r2 o- R 9 J: f5 t3 Q' {' H' G+ D$ ^7 }0 C

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

8 f: @/ I/ K2 r% a* x' Z( g: _( }

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

& i0 E2 m6 \7 U& }+ F; \4 ~

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

( v2 \8 l5 u* u. ?4 x

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

) h g9 N/ W& o: C; q6 {

空间精度:0.25°

9 {+ m7 ? A% F: W! ]5 g5 R$ V$ l8 J7 n

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

0 A3 k3 Z6 P1 T

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

1 m S# d8 t# Z* D E5 h( \" ^

源代码

% I: C3 v8 O$ Y. A1 T
%南海1998年12月31日某时的海面热通量数据及分布图/ Y& B5 b& a6 E8 f %% . ~* Z* {& q) e6 T. K1 K %第一步:数据的展示: B) n% D& u. Y/ P9 H S0 a tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址( {/ P' R7 C7 t! |) W filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名) O) q9 \ G. ^+ ~ abs_path=fullfile(Path,filename);%合并,绝对路径文件# K' I+ @# V! \! y" l2 v clearvars -except abs_path;%清除除了abs_path以外所有变量 7 n# C1 O4 q! E ncdisp(abs_path);%读取所选文件1 y1 F5 ~! n, u9 o whos;toc;1 e' K3 e" G; \2 d* s %% + Y [2 a7 e- K/ \ %第二步:数据读取 1 v8 Y9 f) Y5 F. `# u, N tic;Lat_ini=ncread(abs_path,lat); + ?3 ?& Y3 p; N# ]7 X Lon_ini=ncread(abs_path,lon); " }! Y- W6 V: c* U1 r Time_ini=ncread(abs_path,time); ( u) `1 ]# b, \! k' E. H2 v" ]2 ]! y Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);: m) R9 u, [: D; U Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);; Z& {3 F, a) o+ k0 ?1 `8 G toc;clear abs_path; 1 h4 w" Z8 T. K4 L+ _" K %%$ P* Q* `# C$ E; c! z% O9 r+ { %第三步:确定边界/截取数据- @9 F; q) K: ?4 Z5 F0 p" g1 \2 B( Z# s %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124° 1 n% Z+ X* ?+ @3 p tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序$ o. U+ y4 f5 }: N2 ^ Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度% d+ P+ O) |9 b( p) i5 ^* [* W Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号), E0 k& q) {! K! }8 m# U Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号) . D g$ u0 e6 Q; ~- L0 _/ ~; I7 _9 O8 v" m Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)) c! s2 H6 t. @2 t1 D8 T( x Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)4 p! |9 v: f3 D; q2 c Lon=Lon_ini(Lon_start_No:Lon_end_No);) F$ {( E; Q& M$ c: M7 m& J Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的 ; F2 }: C. D, s, M: t( y8 _6 W clear Lat_ini;clear Lon_ini;%回收内存/ p5 J4 D) c, Y: B* \5 R7 P! E9 d Lat=double(Lat);Lon=double(Lon);%双精度化+ Q0 K& c3 F# d% J3 S4 k+ Z M: Z latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)]; ! B# I7 J Z: g, E0 L5 Y Time=9%输入时间,注意三小时的倍数 : \ V1 |" n+ q' F Time_No=Time/3+1;5 x3 B) p+ a4 o %截取数据并降维度 / {9 Q& q0 c2 z. B9 l Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的 2 J" f, H9 \- J! |0 s$ d& x& E Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的7 U' ?8 a6 l0 V7 V clear Sp_Re;toc;%清除不再使用的变量 / |) q3 S1 t; \7 p- d4 b %%( p9 x e) h [+ R& N% K4 V6 ` %第四步:绘图- x; _2 a0 l1 W$ A; Y; z tic;figure;* s. |6 O- R7 h$ o m_proj(mercator,lat,latlim,lon,lonlim);/ S7 W! N" y& W$ o ] [longrid,latgrid]=meshgrid(Lon,Lat);: P+ S8 ^* `5 E9 ]0 N m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf ( ]% a% V3 A1 N3 ~ tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f/ C2 n# `1 b6 J+ U m_grid(box,fancy,tickdir,in);%网格化 7 H! T; D( r" V9 t8 z7 v6 a %brighten(.5);%亮化 ' A% u5 h) R: P3 N2 h colormap(hsv);+ @# Q+ _- v( t% i" s" j! ^3 n h = colorbar(h);%色标* d" L. r6 d0 I& a& o! @( s7 k: ? h.Label.String = W·m^{-2}$ m6 j. T0 a5 E$ {7 {6 }: j h.Location = eastoutside;%色标位置9 V7 @/ B% u+ m7 \ title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...$ r- R; Y/ V3 [+ h n FontName,黑体,fontsize,12,FontWeight,"bold") %标题 3 a6 H6 A4 A% |9 Q( H' \ xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9); , R8 r6 b+ \2 M# M% b7 R- s toc;* I6 Y( r$ ^- B" D: E' B
1 q: y$ z* R S' m/ y W$ ?4 r

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

. y* O2 }- f' @
& s0 d) v; H' q4 O: X5 A$ i! f
, D/ W- w3 S& E2 E2 l * a6 {2 {4 `5 w3 l" r9 g; w5 m : C& g! j+ E) Z" X( l l; U" i% `) ^' c" ~* ?: _* P* q5 k - _4 I$ F& E* R) W5 m+ x& C
回复

举报 使用道具

相关帖子

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