我从NOAA的ftp网站上获得每小时的紫外线指数。如此处所述,预测时间在文件名中显示为 uv.t12z.grbfXX, where XX is the forecast hour (01 to 120)
。但是在 grib2 文件中,键hour
始终指示小时是 12。此外,日期在任何文件中都不会更改。截至今天,它已2016/06/04
在所有 120 个文件中。我也在文件的键中找到时区。
所以,我想知道,如果我想在2 pm
找到2016/06/05
上Delhi(28.6139, 77.2090) timezone: Asia/Kolkata
的紫外线指数,我该如何从这些文件计算出来?是uv.t12z.grbf38
文件中的UV索引,假设文件中的01
是00:00 hrs on 2016/06/04
.我在文档中找不到有关此的任何内容。
以下是查找小时的代码片段:
import pygrib
grbs = pygrib.open('uv.t12z.grbf01.grib2')
grb = grbs.select(name='UV index')[0]
year = grb.year
month = grb.month
day = grb.day
hour = grb.hour
minute = grb.minute
print year,month,day,hour,minute
输出:
>>2016 6 4 12 0
GRIB 文件中hour, day, month, year
的值仅指示天气预报的开始时间(它是生成预报的初始时间)。此文件中的日期和时间根据 UTC。要以 UTC 格式获取预测日期和时间,您需要在初始时间中添加一个值XX
。然后,要获取本地时间,请将您的时间偏移添加到此值中。
即,我需要转换 uv.t12z.grbf38,从hour, day, month, year = 12,1,1,2016
到莫斯科时间。首先,我将开始时间添加到 38 小时并得到2,3,1,2016
(这次根据 UTC)。莫斯科的时移为+3 UTC,这意味着当地时间是2016年1月3日5:00。
您可以按照我上面写的转换日期和时间,反之亦然。