' 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 |