Reading GLDAS images¶
Reading of the GLDAS raw grib files can be done in two ways.
Reading by file name¶
import os
from datetime import datetime
from gldas.interface import GLDAS_Noah_v1_025Img
# read several parameters
parameter = ['086_L2', '086_L1', '085_L1', '138', '132', '051']
# the class is initialized with the exact filename.
img = GLDAS_Noah_v1_025Img(os.path.join(os.path.dirname(__file__),
'test-data',
'GLDAS_NOAH_image_data',
'2015',
'001',
'GLDAS_NOAH025SUBP_3H.A2015001.0000.001.2015037193230.grb'),
parameter=parameter)
# reading returns an image object which contains a data dictionary
# with one array per parameter. The returned data is a global 0.25 degree
# image/array.
image = img.read()
assert image.data['086_L1'].shape == (720, 1440)
assert image.lon[0, 0] == -179.875
assert image.lon[0, 1439] == 179.875
assert image.lat[0, 0] == 89.875
assert image.lat[719, 0] == -89.875
assert sorted(image.data.keys()) == sorted(parameter)
assert image.data['086_L1'][26, 609] == 30.7344
assert image.data['086_L2'][26, 609] == 93.138
assert image.data['085_L1'][576, 440] == 285.19
assert image.data['138'][26, 609] == 237.27
assert image.data['051'][26, 609] == 0
assert image.lon.shape == (720, 1440)
assert image.lon.shape == image.lat.shape
Reading by date¶
All the gldas data in a directory structure can be accessed by date. The filename is automatically built from the given date.
from gldas.interface import GLDAS_Noah_v1_025Ds
parameter = ['086_L2', '086_L1', '085_L1', '138', '132', '051']
img = GLDAS_Noah_v1_025Ds(data_path=os.path.join(os.path.dirname(__file__),
'test-data',
'GLDAS_NOAH_image_data'),
parameter=parameter)
image = img.read(datetime(2015, 1, 1, 0))
For reading all image between two dates the
gldas.interface.GLDAS_Noah_v1_025Ds.iter_images()
iterator can be
used.