MATLAB读取nc数据并实现可视化 (以全球海洋风场反演为例-更新版)
1、海面风场数据下载
从ECNWF(https://apps.ecmwf.int/datasets/data/era40-daily/levtype%3Dsfc/)下载
以下为可以下载的参数数据,选择10 metre U wind Component和10 metre V wind Component(这里我们下载的是.nc格式的6:00的海风数据)
2、MATLAB实现风场数据可视化
注意:如果报错请安装m_map工具箱
clc;
clear all;
%% 读取数据
path1='*********.nc'; % 请自行填补
v10=double(ncread(path1,'v10')); %读取v10类型的nc文件
u10=double(ncread(path1,'u10')); %读取u10类型的nc文件
nlon=double(ncread(path1,'longitude')); %读取经度变量
nlat=double(ncread(path1,'latitude')); %读取纬度变量%% 可视化
[mlat,mlon]=meshgrid(nlat,nlon);
day=24; %展示第24天的数据
v_day = v10(:,:,day);
u_day = u10(:,:,day);
P = sqrt(v_day.^2 + u_day.^2);
%投影类型 'Miller','hammer-aitoff','Equidistant Cylindrical'
m_proj('Equidistant Cylindrical','lon',[0 358.875],'lat',[-89.14152 89.14152]);
%m_pcolor(mlon,mlat,P); # 显示原像素(分辨率较低)
m_contourf(mlon,mlat,P,'linestyle','none'); %等值线 ---类似于插值后的效果colormap(flipud(m_colmap('jet')));%设置颜色legend
hold on;
shading flat;
m_coast('line','Color', [.0 .0 .0]);% 只保留大陆轮廓线line;轮廓线的颜色
%m_coast('patch',[.6 1 .6]);%m_coast('color','k');
m_quiver(mlon,mlat,u_day,v_day,'color','k'); % 添加风场矢量的方向箭头
% 格网格式设置
m_grid('linestyle','none','box','fancy','tickdir','out','LineWidth',0.5);
title({'全球海洋风场示意图',''},'fontsize',14,'fontweight','bold');
hh=colorbar('h');
set(hh,'tickdir','out');
xlabel(hh,'Wind m/s');
hold off;
3、可视化效果
(1) m_pcolor(mlon,mlat,P)
(2) m_contourf(mlon,mlat,P,‘linestyle’,‘none’)
等值线不显示,为None
(3) m_contourf(mlon,mlat,P,‘linestyle’,’–’)
等值线为虚线:
(4) 局部放大图(可以更加清晰的看到风矢量的方向箭头)
注意:
1、可能需要安装m_map工具箱;
2、可以直接m_map工具箱(.zip),解压后在将路径添加到Matlab:
addpath('***********\m_map');
3、 显示nc数据的结构:
ncdisp(ncFilePath);%显示nc文件的所有结构,以便大概了解里面的内容ncdisp(ncFilePath,'v10');%显示指定变量的内容,注意一定要是变量variables才可以
ncdisp(ncFilePath,'/','min');%简单显示结构以及定义
ncdisp(ncFilePath,'/','full');%全部显示所有结构和定义信息