如何迭代 grib2 文件的纬度经度值?
How to iterate over latitude longitude values of a grib2 file?
我正在尝试获取 grib2 文件中所有纬度、经度的 uvIndex
。
这是我从中获取文件的 link。问题是我无法理解文件的结构,因此无法获取数据。我正在使用 pygrib
读取文件。
这是我试过的代码:
grbs = pygrib.open('uv.t12z.grbf01.grib2')
grb = grbs.select(name='UV index')[0]
print grb.data(23.5,55.5)
我想要实现的是遍历所有经纬度并打印相应的 uvIndex 值,或者输入经纬度并获取相应的值。阅读 pygrib
的文档,但找不到任何适合我的命令。请帮忙。
您必须遍历 GRIB 文件并找到所需的记录,然后获取数据,如下所示:
for g in grbs:
print g.shortName, g.typeOfLevel, g.level # print info about all GRIB records and check names
if (g.shortName == shortName and g.typeOfLevel == typeOfLevel and g.level == level):
tmp = np.array(g.values)
# now work with tmp as numpy array
要获取纬度和经度数组,请使用:lt, ln = g.latlons()
、g
- grbs
的元素。
阅读 https://software.ecmwf.int/wiki/display/GRIB/GRIB+API+examples 第 python 节中的示例(pygrib 使用此库读取 GRIB)。
从大型 GRIB 文件获取数据的最快方法是创建索引:
# use attributes what you want to build index
indx = pygrib.index(gribfile,'typeOfLevel','level','parameterName')
# important: msg is an array and may have more then one record
# get U wind component on 10 m above ground
msg = indx.select(level = 10, typeOfLevel = "heightAboveGround",
parameterName = "U U-component of wind m s**-1")
u10 = np.array(msg[0].values)
# get V wind component on 10 m above ground
msg = indx.select(level = 10, typeOfLevel = "heightAboveGround",
parameterName = "V V-component of wind m s**-1")
v10 = np.array(msg[0].values)
我正在尝试获取 grib2 文件中所有纬度、经度的 uvIndex
。
这是我从中获取文件的 link。问题是我无法理解文件的结构,因此无法获取数据。我正在使用 pygrib
读取文件。
这是我试过的代码:
grbs = pygrib.open('uv.t12z.grbf01.grib2')
grb = grbs.select(name='UV index')[0]
print grb.data(23.5,55.5)
我想要实现的是遍历所有经纬度并打印相应的 uvIndex 值,或者输入经纬度并获取相应的值。阅读 pygrib
的文档,但找不到任何适合我的命令。请帮忙。
您必须遍历 GRIB 文件并找到所需的记录,然后获取数据,如下所示:
for g in grbs:
print g.shortName, g.typeOfLevel, g.level # print info about all GRIB records and check names
if (g.shortName == shortName and g.typeOfLevel == typeOfLevel and g.level == level):
tmp = np.array(g.values)
# now work with tmp as numpy array
要获取纬度和经度数组,请使用:lt, ln = g.latlons()
、g
- grbs
的元素。
阅读 https://software.ecmwf.int/wiki/display/GRIB/GRIB+API+examples 第 python 节中的示例(pygrib 使用此库读取 GRIB)。
从大型 GRIB 文件获取数据的最快方法是创建索引:
# use attributes what you want to build index
indx = pygrib.index(gribfile,'typeOfLevel','level','parameterName')
# important: msg is an array and may have more then one record
# get U wind component on 10 m above ground
msg = indx.select(level = 10, typeOfLevel = "heightAboveGround",
parameterName = "U U-component of wind m s**-1")
u10 = np.array(msg[0].values)
# get V wind component on 10 m above ground
msg = indx.select(level = 10, typeOfLevel = "heightAboveGround",
parameterName = "V V-component of wind m s**-1")
v10 = np.array(msg[0].values)