我从NOAA的ftp网站获得每小时紫外线指数 . 如上所述here,预测时间在文件名中显示为 uv.t12z.grbfXX, where XX is the forecast hour (01 to 120)
. 但是在grib2文件中,键 hour
始终表示小时为12.此外,任何文件中的日期都不会发生变化 . 截至今天,在所有120个文件中都是 2016/06/04
. 我也无法在文件的密钥中找到时区 .
所以,我想知道,如果我想在 2 pm
的 2016/06/05
上找到 Delhi(28.6139, 77.2090) timezone: Asia/Kolkata
的UV索引,我该如何从这些文件中计算出来?它是 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
1 回答
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 .如上所述,您可以将日期和时间转换为反之亦然 .