我有一个形状为180 x 360 x 720的NetCDF文件。保存数据时,180表示“2001年至2015年”的12个月,360和720分别表示89.75度至-89.75度和-179.75度至179.75度的中纬度和经度,间隔为0.5度。你知道吗
我想使用datetime
包将其写入NetCDF。你知道吗
我用于编写年度数据的代码如下所述:
import datetime
from netCDF4 import Dataset,num2date,date2num
# -----------------------
nyears = 15; ## From 2001-2015 but time axis is 180 in shape
unout = 'days since 2001-01-01 00:00:00'
# -----------------------
res = 0.5
lon = np.arange(-179.75,180,res);
lat = np.arange(-89.75,-90,res);
dataout = X; # create some random data
datesout = [datetime.datetime(2001+iyear,1,1) for iyear in range(nyears)]; # create datevalues
# =========================
ncout = Dataset('/home/chandra/data/Temp_data_evap/BESS_ET.nc','w','NETCDF4'); # using netCDF3 for output format
ncout.createDimension('lon',nx);
ncout.createDimension('lat',ny);
ncout.createDimension('time',nyears);
lonvar = ncout.createVariable('lon','float32',('lon'));lonvar[:] = lon;
latvar = ncout.createVariable('lat','float32',('lat'));latvar[:] = lat;
timevar = ncout.createVariable('time','float64',('time'));timevar.setncattr('units',unout);timevar[:]=date2num(datesout,unout);
myvar = ncout.createVariable('Evaporation','float32',('time','lat','lon'));myvar.setncattr('units','mm');myvar[:] = dataout;
ncout.close();
有人能帮我把代码从每年改成每月吗?你知道吗
您应该使用月份数作为时间轴的大小,即维度的长度。所以,如果你有15年的月度数据,你有15*12=180的时间值。你知道吗
下面是示例代码:
相关问题 更多 >
编程相关推荐