7 r' U" z. q+ W, _! |% F 图片赏析
" ]) {5 L: j1 [# G$ w4 d: j % N9 R0 Z' d# `" k3 O8 ~2 n
' f9 g- M, l6 D# b
1 j5 Y1 g* {& y# }
前言 " r+ K8 L8 p( t& T
2 X5 E3 e; v1 w5 g* H6 G" A5 l
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124° ! b' d/ j% D& S7 N" y6 W
数据来源:
- B: q" K# T! t0 f/ }; V/ S! G
+ Z+ ~" i8 l& t; t. X! N 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学
" S% E8 a8 x* z, z 数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 # d: j8 Y# T, o9 v( v
产品名称:Ocean Heat Fluxes海洋热通量
: |2 B4 f! s, I9 C: }( i ] 时间精度:每日3-hourly记录 ' p w- `( S" y1 h' Z
空间精度:0.25° W) s1 m! M- O3 @9 w& y& J
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
( j; l H5 e/ l) T 亦需调用gshhs高精度海岸线数据。 + I8 a8 m( T4 C9 H6 X
源代码
' @0 i: ^; a5 s9 _ h& c %南海1998年12月31日某时的海面热通量数据及分布图
8 ] ^: c5 M9 c8 p% O %%5 X* c6 U% u5 F# p' M6 M
%第一步:数据的展示
6 r' w! x3 V/ ?- b& r tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址
. S; U* W1 b: v5 s6 R( R3 J filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名& q+ F( F" l$ {$ s4 ]
abs_path=fullfile(Path,filename);%合并,绝对路径文件
1 P, _& S8 ^% Q6 m. @5 ] clearvars -except abs_path;%清除除了abs_path以外所有变量1 B- z$ @4 P1 f+ X
ncdisp(abs_path);%读取所选文件: y. X1 X7 R) |' a
whos;toc;3 S; t: C3 ?6 ?2 }2 n
%%
( n1 h5 {7 G+ m A( ^ %第二步:数据读取/ u7 k# I3 D0 o) i/ k0 `
tic;Lat_ini=ncread(abs_path,lat);% X6 R8 t' T6 t2 F
Lon_ini=ncread(abs_path,lon);- r( y2 \: [$ @$ Y) i
Time_ini=ncread(abs_path,time);
( ]- O5 b) e+ f! O. ` Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
1 i: {" F, f! d% }; M Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
( r1 R0 e; w3 O) X- x, H# y1 z- H toc;clear abs_path;. H6 M, E# n$ [1 F# k6 V
%%+ E2 g7 A! {/ m2 R" ^$ @
%第三步:确定边界/截取数据
, ?7 a( k+ T! U% Z6 V %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°) x; C& q; t/ _, Q: b5 l% t
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序- p1 i- M/ i2 y+ x- X- X1 [) }% W7 x
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
- t k8 R& M3 Z6 l4 f$ ]/ a Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)
# s) s# r4 c8 a- Q% S1 c: b Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)
" u3 G8 N y7 m/ r5 o Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
' [- z3 m6 T- x! N Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)! d, ~+ M3 u7 [, \! x6 h
Lon=Lon_ini(Lon_start_No:Lon_end_No);0 X# N* j, X3 U& x
Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
% ]2 K1 L) a0 P2 X. U7 j clear Lat_ini;clear Lon_ini;%回收内存
: L7 |- X3 v* p( e" Q Lat=double(Lat);Lon=double(Lon);%双精度化
6 x* M8 g8 F& b7 O9 F9 ^2 i latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];- \8 a! c; W0 p; Z- k& g5 `
Time=9%输入时间,注意三小时的倍数
/ b" z: a: U# r* s* t6 { `! _ Time_No=Time/3+1;+ K( b" E# C+ G6 h2 F b) o
%截取数据并降维度 a' f3 ~2 {. O9 S, M V, }! \
Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的7 ]0 A. h$ s' _, _* [: u9 A
Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的. A4 u$ v1 q& b! ?0 Q
clear Sp_Re;toc;%清除不再使用的变量# s W2 r. B1 M; g3 Q
%%
8 v6 k/ \& T- e5 S# `. a %第四步:绘图& i9 }7 q. }) d& A& A
tic;figure;9 E, m+ [! R7 v
m_proj(mercator,lat,latlim,lon,lonlim);' o5 Q! d) @1 g# [
[longrid,latgrid]=meshgrid(Lon,Lat);
! ^8 m0 Y6 v3 e! B0 H$ h2 j. b m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
# G% m8 N! A( I3 c( p tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
2 q& ~8 L; Y7 ~5 Y$ l: a) Y. \ m_grid(box,fancy,tickdir,in);%网格化0 d8 b8 a& b, Y. ?
%brighten(.5);%亮化4 f6 r" ]5 g! r8 \' g- \, I0 W
colormap(hsv);/ D0 Z( `# I% i) {$ u
h = colorbar(h);%色标# \; V) i6 A- Y3 G% w9 V
h.Label.String = W·m^{-2}' {* R/ ^; U0 S% o: i! S$ h; n* t
h.Location = eastoutside;%色标位置
' C' ?/ p9 W( g% ~; G& h+ d title([1998年12月31日,num2str(Time),:00,南海海面感热通量],...: v. n3 F" M+ b, k8 {! ]& }# m9 H
FontName,黑体,fontsize,12,FontWeight,"bold") %标题1 I& {& ~) Y3 {1 N
xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);
& I, Z* s, {! r4 N- f3 u toc;
2 l' b: g) P; F 6 x( k+ |9 w: _6 ^
附上另外俩残次品绘图结果,数据来源:IOCADS
0 j% f% i/ a2 v' `+ L 0 z! T' X% `3 H0 g6 x3 r; J
/ \1 ]) m2 i M3 b4 ~9 S3 e
0 x8 ~. T4 R4 Z: m* E2 Z9 y, F+ a, G0 k. F6 k
! z& ]+ c1 M6 y1 n; l& b' a
+ p- t& m* e0 M- V1 ?. t7 y' a$ W
|