1. 读取SubX的温度、降水数据
- 读取温度数据
读取SubX数据时,如果是全球数据,用MATLAB读进来发现是360×181,读取代码如下:
filepath='E:\tas_2m_GMAO-GEOS_V2p1_19990101.ensember1.daily.nc';%读取的是温度
ncdisp(filepath) ;%显示nc文件结构
forcastAllData=ncread(filepath,'tas');%'pr' 'tas' %读取温度字段,若降水则pr
dailydata=forcastAllData(:,:,1); %获取第一天的预测值360×181
imagesc(dailydata); %显示一下,如下
发现整个图不符合我们全球显示方式,所以需要对其进行旋90°一下,
dailydata= rot90(dailydata,1); %逆时针旋转90度,如下
可以清晰的看到了中国(特别是青藏高原),澳大利亚和美洲的轮廓。之所以读取温度因为温度在大陆上明显有温度梯度,与海洋容易区分。如果直接读取降水,很难区分读取的是否正确,因为海上降水和大陆降水没有区别,很难辨别是否正确。
- 读取降水数据
filepath='E:\pr_sfc_GMAO-GEOS_V2p1_19990101.ensember1.daily.nc'; %读取的是降水
forcastAllData=ncread(filepath,'pr'); %读取降水pr变量
dailydata=forcastAllData(:,:,1); %读取第一天
dailydata= rot90(dailydata,1)*3600*24; %原始单位是kgm-2s-1,所以要转为mm·d-1。
如下图所示(如果不是事先读取了温度数据,你根本不知道是不是读取的争取。这也是作者纠结了好久,才找到的这个规律)
2. 读取GPCP的降水数据
全球1度的降水GPCP数据,下载地址是:https://www.ncei.noaa.gov/data/global-precipitation-climatology-project-gpcp-daily/access/。可以通过MATLAB编程实现对数据的轻松下载。
读取代码如下:
filepath='E:\19970101.nc'
ncdisp(filepath);
data=ncread(filepath,'precip');%读取降水变量,结果也是360行,180列
data=rot90(data,1);%逆时针旋转90度,就编程我们所熟知的数据展示方式了,由于原始本来就是mm/day,所以不需要特殊处理
imagesc(data)%显示的结果如下:
%Refference=georasterref('RasterSize',size(YearSumResult),'Latlim',[-90 90],'Lonlim',[0 360]);%设置全球坐标参考
%geotiffwrite('E:\Prep.tif',data,Refference);%保存成arcgis可打开的tif文件