HYCOM数据画出二维流场图的方法

在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('某年月日流场分布图')

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值