在HYCOM网页上获取到cn文件之后,可以通过这段代码生成二维流场图。
中国某岛周围海流图
代码部分:
%% 画流场图
lat = ncread('HYCOM.nc','lat');
lon = ncread('HYCOM.nc','lon');
[Lat,Lon]=meshgrid(lat,lon);
%读取u,v数据
u = ncread('HYCOM.nc','water_u');
v = ncread('HYCOM.nc','water_v');
U = nanmean(squeeze(u(:,:,1,:)),3);
V = nanmean(squeeze(v(:,:,1,:)),3);
speed = sqrt(U.^2+V.^2);
Speed=speed(:);Lon=Lon(:);Lat=Lat(:);U=U(:);V=V(:);
ind=find(Speed==0);
Speed(ind)=nan;Lon(ind)=nan;Lat(ind)=nan;U(ind)=nan;V(ind)=nan;
Speed=ceil(Speed*100);
%保留U,V,Lon,Lat,Speed与(Speed中的非nan值相应位置)的数值
U=U(~isnan(Speed));V=V(~isnan(Speed));
Lon=Lon(~isnan(Speed));Lat=Lat(~isnan(Speed));
Speed=Speed(~isnan(Speed));
mm=flipud(hot(130));
figure(2)
m_proj('Mercator','lon',[119 129],'lat',[23 33]);
%画地形水深图
[CS,CH]=m_etopo2('contourf',-7000:500:3000,'edgecolor','none');
colormap([ m_colmap('blues')]);shading interp;colorbar;
m_gshhs_i('color','k','linewidth',0.2,'linestyle','none');
m_gshhs_i('patch',[.5 .8 0],'edgecolor','none');
m_grid('box','none','xtick',6,'ytick',6,'frontsize',15);
hold on
%画流速矢量图
for j=1:5:length(Speed)
if Speed(j)<=130
m_quiver(Lon(j),Lat(j),U(j),V(j),0.5,'color',mm(Speed(j),:),...
'maxheadsize',1,'linewidth',1)
else
m_quiver(Lon(j),Lat(j),U(j),V(j),0.5,'color',mm(130,:),...
'maxheadsize',1,'linewidth',1)
end
end
title('某年月日流场分布图')