新版本1 matlab可以使用ncread
命令来读取NC数据,使用起来更加方便。
clc,clear;
ncid = netcdf.open('E:\数据\空间数据\NECP\air.2m.mon.mean.nc','NOWRITE'); %打开nc文件
ncdisp('E:\数据\空间数据\NECP\air.2m.mon.mean.nc'); %在命令窗中显示nc文件的变量
AirData = ncread('E:\数据\空间数据\NECP\air.2m.mon.mean.nc','air'); %读入变量air
TimeData = ncread('E:\数据\空间数据\NECP\air.2m.mon.mean.nc','time'); %读入变量time
LonData = ncread('E:\数据\空间数据\NECP\air.2m.mon.mean.nc','lon'); %读入变量lon
LatData = ncread('E:\数据\空间数据\NECP\air.2m.mon.mean.nc','lat'); %读入变量lat
Time_bndsData = ncread('E:\数据\空间数据\NECP\air.2m.mon.mean.nc','time_bnds'); %读入变量time_bnds
AirData=squeeze(AirData);%除去size为1的维度,变为三维<192*94*420double>
由于原数据的温度为热力学温度,所以应该转换为摄氏温度。
TemData = AirData-273.15; %开尔文温度转换为摄氏度
下面利用matlab绘图,绘图命令有pcolor
、contourf
等,pcolor
可以绘出颜色填充图,contourf
可以绘制等值面图。由于pcolor
命令绘制出来的图自带黑色网格线,所以可以使用shading flat
去掉网格线;shading interp
命令可以使等值面图的色彩平滑过渡。我们使用的是高斯网格数据,所以用pcolor
命令就可以。为了使中国区域处于地图中心,则需要将纬度范围从[0,360]更改为[-180,180]。
[X, Y] = meshgrid(LatData,LonData);
pcolor(Y-179.0625,X,TemData(:,:,9)); %以第一年的9月为例,画颜色填充图
shading flat;%去掉网格线
colorbar('SouthOutside','Position',[0.142,0.03,0.75,0.04]); %添加颜色条 [左右,上下,长,宽]
load coast; %加载全球海岸线,但是不显示出来
geoshow(lat,long-179.0625); %显示出海岸线,lat和long是coast的属性
接下来设置标注:
hold on;
set(gca,'LineWidth',1,'FontSize',10,'Ylim',[-88.5420,88.5420],'Xlim',[-179.0625,179.0625],'Position',[0.142,0.09,0.75,0.84]...
,'XTick',[-180:60:180],'XTicklabel',{'-180W','-120W','-60W','0','60E','120E','180E'}...
,'YTick',[-90:30:90],'YTicklabel',{'-90S','-60S','-30S','0','30N','60N','90N'}); %添加经纬度信息
hold off;
netcdf.close(ncid); %关闭nc文件
得到下图:
相关链接:
Matlab处理气象数据——目录
本文写于2012年,当时用的matlab为R2012a。 ↩︎