利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)

 以中国日降雨量月均数据(nc文件包含12月)为例,提取某经纬度下的多月份像元值。

(【数据分享】1960-2020年中国1公里分辨率月降水数据集)

利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)_第1张图片

一、确定经纬度所在行列

92.18E,30.475N为例,首先在Matlab中输入以下代码:

ncdisp('CN_Prec_MonthlyMean_1km_2019.nc');		%读取nc文件信息

lat = ncread('CN_Prec_MonthlyMean_1km_2019.nc','latitude');
lon = ncread('CN_Prec_MonthlyMean_1km_2019.nc','longitude');
pre = ncread('CN_Prec_MonthlyMean_1km_2019.nc','pre') ;

工作区获取到lat、lon和pre的信息,打开lat和lon文件

利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)_第2张图片

92.18E定位至92.1754~92.1838,确定的单元格为92.1754所在的2248(选择数值小的单元格);

30.475N定位至30.4718~30.4634,确定的单元格为30.4718所在的2771(选择数值小的单元格);

利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)_第3张图片利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)_第4张图片

二、提取多月单像元数值

将得到的行列号输入至以下代码,得到多月单像元数值——2019.xls:

ncdisp('CN_Prec_MonthlyMean_1km_2019.nc');		%读取nc文件信息

lat = ncread('CN_Prec_MonthlyMean_1km_2019.nc','latitude');
lon = ncread('CN_Prec_MonthlyMean_1km_2019.nc','longitude');
pre = ncread('CN_Prec_MonthlyMean_1km_2019.nc','pre') ;

pre1= [];
for i = [1:12]
    pre1 = [pre1;pre(2771,2248,i)];
end

xlswrite('2019',pre1)

利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)_第5张图片

完毕。 

疑问待解决:

1、如何不通过经纬度范围,使用find函数批量提取多经纬度对应的行列号?

2、如何批量提取大范围的数值?

参考链接:

NetCDF(.nc)文件数据的读取_哔哩哔哩_bilibili

5分钟!利用MATLAB读取.nc(netCDF)文件并转Excel格式_哔哩哔哩_bilibili

请教:matlab提取数据文件中某个经纬度的数据?谢谢! – MATLAB中文论坛

你可能感兴趣的:(matlab)