从年初开始编写NetCDF时间变量

时间:2015-12-01 21:52:48

标签: python netcdf

我正在编写一个netCDF文件并尝试创建一个从年初开始的秒的时间变量。我正在为温度变量写这个,每年有6小时的记录值(1459个元素)。如何创建一个netCDF文件,将这两个变量写入时间范围从一年开始到每隔6小时一次?

if year_desired % 4 == 0:
ntime = 1462
else : ntime = 1458
n_air_temperature = np.reshape(air_temperature_opendap,(ntime,1,1))

# Assign the dimension data to the new NetCDF file.
ntime = int(ntime)
ncfile.createDimension('time',ntime)
ncfile.createDimension('latitude',1)
ncfile.createDimension('longitude',1)
air_temperature =    ncfile.createVariable('air_temperature',dtype('float32').char, ('time','latitude','longitude'))

air_temperature[21600::] = n_air_temperature

ncfile.close()

1 个答案:

答案 0 :(得分:0)

你问如何计算:

  

从年初开始的秒数变量。

您可以使用以下方式执行此操作:

import datetime

now = datetime.datetime.now()
yearStart = datetime.datetime(now.year, 1, 1)
diffTime = now - yearStart
yearSeconds = int(diffTime.total_seconds())

你继续询问创造:

  

温度变量,一年中每6小时记录一次值(1459个元素)。

您可以使用以下方法将年份秒转换为样本索引:

index = yearSeconds / (60*60*6) # / 60 sec/min * 60 min/hour * 6 hours

但是你想要:

  

时间从年初开始到每6小时踩一次

所以也许你需要走另一条路。您有索引(样本编号)并想要相应的日期。您可以使用以下方法计算:

sampleDateTime = yearStart + datetime.timedelta(0, index * 60 * 60 * 6)

确保为数据设置了正确的yearStart。