本代码目的:
1.批量读取nc降水数据集。
2.按照季节平均来粗略绘制降水量图。
3.保存所有处理后的数据集,以备下次精细化绘图。
原始数据请见美国2013-2021年每日降水的nc数据集资源-CSDN文库
##1.导入需要的库和函数
import xarray as xr
import os
from netCDF4 import Dataset
##2.指定文件路径,实现批量读取满足条件的文件.(批量读取多个nc文件)
path = r"D:/baseCode/raw/"
#file = os.listdir(path)
#print(file) #输出nc文件列表
##3.创建一个空的数据集来存储结果
result = xr.DataArray()
##4.遍历文件夹下的nc文件
for root_dir, sub_dir, files in os.walk(path):
for file in files:
if file.endswith('.nc'):
file_name=os.path.join(root_dir, file)
#print(file_name) #读取nc文件路径
##5.通过xarray读取nc数据
f1=xr.open_dataset(file_name)
#print(f1)
#print(f1.dims) #返回一个字典类型。维度包括time,lat,lon。
#print(f1.variables) #查看nc文件中的变量。
dims =['time', 'lat', 'lon']
#for dim in dims:
#print('%s:%s' %(dim, f1.dims[dim]))
##6.读取nc数据中的经纬度和时间以及其他变量
lat=f1.variables['lat'][:]
lon=f1.variables['lon'][:]
time=f1.variables['time'][:]
#print(time.attrs)
#print(time[90:270])
precip=f1['precip']
##7.计算年降水量
f1_season_sum = precip.groupby('time.year').sum(dim='time')
print(type(f1_season_sum))
#print(f1_season_sum)
##8.计算季节性降水平均值
f1_season_mean = precip.groupby('time.season').mean(dim='time')
#绘制并导出季节性平均降水量图。
#f1_season_mean.plot(col='season')
#plt.savefig(path+'season_figure.png', dpi=300)
##9.将计算结果添加到结果数据集中
result = xr.concat([result, f1_season_sum], dim='file')
#print(result) #查阅合并的数据集。
##10.将结果数据导出到path路径下。
result.to_netcdf(path+'f1_season_sum_eachyear.nc')