& g5 Z- W7 ]. N) ]# v4 _
图片赏析
4 u* v; A. ]8 k4 O- C) N( Z) }) ?( K
7 L2 T0 O' C6 O' { + d+ v5 B4 F N5 h! l& a% H, E' C
D, x4 x& Z! Z2 V! D 前言
# y- m9 x3 o0 ^- H- ^9 S0 @ 4 h E/ O' b, V: v! s
南海的经纬度:南海范围北纬2°至北纬25° 东经104°至东经124°
6 `, B/ p& ?: g! w7 c$ c4 K 数据来源:
( ?1 c8 X" E/ G) h8 V; z6 M* h
) G2 d1 s |- I 数据链接提供者:广东海洋大学海洋与气象学院海洋科学系纪同学 , t2 d' }8 `! }! z
数据来源机构:NOAA美国国家海洋与大气管理局-NCDC环境信息国家中心 1 V% u. ]% {, ]* \) K3 Z6 H5 Q
产品名称:Ocean Heat Fluxes海洋热通量
?3 c0 L c1 }, [9 k+ C 时间精度:每日3-hourly记录 % b7 h/ s% n& {
空间精度:0.25° 3 ~! d/ b5 g/ q# }1 c- n
注:本程序需调用UBC英属哥伦比亚大学Rich Pawlowicz 开发的程序包m_map;
/ q/ h+ G0 }1 N' R/ w1 T 亦需调用gshhs高精度海岸线数据。
7 z* f$ V0 N, @/ R* {* K 源代码5 l+ u! N7 [: F& y: A8 @. ]
%南海1998年12月31日某时的海面热通量数据及分布图 s0 s0 I5 F" a6 H7 \0 X
%%1 H% o" d9 P8 x: W+ a/ N. I+ e# m
%第一步:数据的展示
5 \& b8 Q; w7 J* j1 N5 `# c9 j tic;Path="E:\OneDrive - Inc\Share_science\NC文件\";%文件夹地址2 I4 `! M# }# b
filename="SEAFLUX-OSB-CDR_V02R00_FLUX_D19981231_C20160824.nc";%文件名3 z# j6 C8 u! W- ^! m8 h
abs_path=fullfile(Path,filename);%合并,绝对路径文件$ p/ f2 m9 m. q
clearvars -except abs_path;%清除除了abs_path以外所有变量
* E0 {3 j" y' @& I% W; g ^ ncdisp(abs_path);%读取所选文件# P. o* v( q& L- g" T# y4 r4 ?0 }
whos;toc;! S7 n- O% C$ B; W
%% % t3 D" `- O0 X- D+ H3 o! z- x* M7 G1 X
%第二步:数据读取
$ j, _+ v/ G% c; x1 A5 S5 ^. y tic;Lat_ini=ncread(abs_path,lat);( M8 c* {; Q$ W' i2 l* {) O* c
Lon_ini=ncread(abs_path,lon);
& W4 u- {" e1 P" l/ F& g Time_ini=ncread(abs_path,time);
* a: b n3 U8 h* O4 u5 \ Lflx_ini=ncread(abs_path,surface_upward_latent_heat_flux);
# u& f3 n) ~ }9 y Sflx_ini=ncread(abs_path,surface_upward_sensible_heat_flux);
: [) g! |* Y$ I" F' @$ x4 L# U4 N toc;clear abs_path;
6 x" _/ c2 x8 Z! `9 B/ | %%! ~% V2 `6 Q9 `! ^
%第三步:确定边界/截取数据
8 y2 m1 M& d* B" I( s %空间边界:南海范围北纬2°至北纬25° 东经104°至东经124°% a) Y8 ?* V" _8 f0 x# O
tic;Boundary=[104,124;2,25;]%修改范围[经度;纬度],注意顺序. j' G3 |6 y& P3 V* R
Spatial_Resolution=abs(Lat_ini(1)-Lat_ini(2));Sp_Re=Spatial_Resolution;%自动确定精度
# g" w W5 A5 O. Q, d! s Lon_start_No=find(Lon_ini-(Boundary(1))<=Sp_Re&Lon_ini-(Boundary(1))>=0);%找到离104°最近格点的编号(行号)2 x g9 Y5 A6 G8 t, l
Lon_end_No=find(Lon_ini-(Boundary(3))<=Sp_Re&Lon_ini-(Boundary(3))>=0);%找到离124°最近格点的编号(行号)5 b4 g6 E/ }+ z) K: Z( n- W9 c, o0 x, L
Lat_start_No=find(Lat_ini-(Boundary(2))<=Sp_Re&Lat_ini-(Boundary(2))>=0);%找到离2°最近格点的编号(行号)
9 d* @1 X% U8 `: [ Lat_end_No=find(Lat_ini-(Boundary(4))<=Sp_Re&Lat_ini-(Boundary(4))>=0);%找到离25°最近格点的编号(行号)
5 w; \7 w% y! R# G: X Lon=Lon_ini(Lon_start_No:Lon_end_No);
, r. O% g% G, ]0 P- M/ K2 A/ G) [: | Lat=Lat_ini(Lat_start_No:Lat_end_No);%北半球可能要颠倒一下编号,因为是从北极往赤道计数的
: v' d1 ? [$ t- l( }: m. n clear Lat_ini;clear Lon_ini;%回收内存7 Q; W+ r( N- F/ }7 x
Lat=double(Lat);Lon=double(Lon);%双精度化& V5 o7 z2 ?& G1 A' K6 q
latlim=[min(Lat),max(Lat)];lonlim=[min(Lon),max(Lon)];6 S" F) r% A4 }- k. ^' t; j! \
Time=9%输入时间,注意三小时的倍数
9 w: Y* H" N. F8 j9 _, u: S Time_No=Time/3+1;
* b9 W; c/ k p0 P* ?4 ^ %截取数据并降维度
5 h; R0 V- m& A. i# j Lflx=squeeze(Lflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的
9 h: l, g ^ G+ k$ r Sflx=squeeze(Sflx_ini(Lon_start_No:Lon_end_No,Lat_start_No:Lat_end_No,Time_No));;%北半球有时可能要颠倒一下编号,因为是从北极往赤道计数的! O5 X! I& T* {) ~8 H \
clear Sp_Re;toc;%清除不再使用的变量
% {- i5 V3 b6 g2 R %%8 Z% G5 R5 _4 n
%第四步:绘图, b5 p* f3 K- }# C; l$ l- ^
tic;figure;
l! t6 _2 V. c2 o' y& M! `/ S' w m_proj(mercator,lat,latlim,lon,lonlim);9 r0 t' d; R# F3 Z
[longrid,latgrid]=meshgrid(Lon,Lat);
9 d. g; a- z; y1 A& g' ~' b m_pcolor(longrid,latgrid,Sflx); %pcolor或contourf
3 }' Z2 M, R, U& | tic;m_gshhs_f(patch,k);toc;%添加海岸线:c<l<h<f
; y, y5 o1 s; V( m m_grid(box,fancy,tickdir,in);%网格化 G: w6 P' u* Q2 a. Y& z2 b3 ?
%brighten(.5);%亮化1 g) v9 Y' m' {) {0 ?: x0 q- D4 ^
colormap(hsv);
+ o$ P3 ?; i% e) E h = colorbar(h);%色标
1 b7 i ~3 {6 l6 t h.Label.String = W·m^{-2}
6 N* W& `& H& _# ^- N2 ~1 ? E* H h.Location = eastoutside;%色标位置6 q4 F. h0 ?6 }: ~& f
title([1998年12月31日,num2str(Time),:00,南海海面感热通量],.../ l) N# A, d: V, p, M# V, w6 [
FontName,黑体,fontsize,12,FontWeight,"bold") %标题
" P8 [1 o1 A7 v5 U: ^ xlabel(Longitude);ylabel(Latitude) ;set(gca,fontsize,9);6 D$ I$ Y% E! W% x+ ~. \) [
toc;
% j( D0 L$ r. N: V 2 G% D5 a a1 S% N# Y
附上另外俩残次品绘图结果,数据来源:IOCADS
( o8 z( I: A! M# v . m+ o N) r, S7 @3 T
/ B4 F. ^) g6 r, x# P+ J
8 V4 d% y! t* [- y% w8 p0 S
4 q2 k1 q* c: N+ d$ \: y1 B3 g) z, [# D: Q3 f
& ~! \' L8 P" E/ g N) i4 q* ^3 _; j
|