예제 #1
0
def test_GLDAS_Noah_v21_025Ds_img_reading_landpoints():
    landgrid = GLDAS025LandGrid()

    parameter = ['SoilMoi10_40cm_inst', 'SoilMoi0_10cm_inst', 'SoilTMP0_10cm_inst',
                 'AvgSurfT_inst', 'SWE_inst']

    img = GLDAS_Noah_v21_025Ds(data_path=os.path.join(os.path.dirname(__file__),
                                                     'test-data',
                                                     'GLDAS_NOAH_image_data'),
                              parameter=parameter,
                              subgrid=landgrid,
                              array_1D=True)

    image = img.read(
        datetime(2015, 1, 1, 0))

    assert sorted(image.data.keys()) == sorted(parameter)
    # gpi for testing on the land grid: 527549, lat: 1.625, lon: -52.625
    assert image.timestamp == datetime(2015, 1, 1, 0)
    assert round(image.data['SoilMoi0_10cm_inst'][50000],3) == 26.181
    assert round(image.data['SoilMoi10_40cm_inst'][50000],3) == 84.558
    assert round(image.data['SoilTMP0_10cm_inst'][50000],3) == 301.276
    assert round(image.data['AvgSurfT_inst'][50000],3) == 294.863
    assert round(image.data['SWE_inst'][50000],3) == 0
    assert (image.lon.size, image.lat.size) == (landgrid.activearrlat.size,
                                                landgrid.activearrlon.size)
    assert sorted(list(image.metadata.keys())) == sorted(parameter)
    assert image.metadata['AvgSurfT_inst']['units'] == u'K'
    assert image.metadata['AvgSurfT_inst']['long_name'] == u'Average Surface Skin temperature'
예제 #2
0
def test_GLDAS_Noah_v21_025Ds_timestamps_for_daterange():

    parameter = [
        "SoilMoi10_40cm_inst",
        "SoilMoi0_10cm_inst",
        "SoilTMP0_10cm_inst",
        "AvgSurfT_inst",
        "SWE_inst",
    ]
    img = GLDAS_Noah_v21_025Ds(
        data_path=os.path.join(
            os.path.dirname(__file__), "test-data", "GLDAS_NOAH_image_data"
        ),
        parameter=parameter,
        subgrid=None,
        array_1D=True,
    )

    tstamps = img.tstamps_for_daterange(
        datetime(2000, 1, 1), datetime(2000, 1, 1)
    )
    assert len(tstamps) == 8
    assert tstamps == [
        datetime(2000, 1, 1, 0),
        datetime(2000, 1, 1, 3),
        datetime(2000, 1, 1, 6),
        datetime(2000, 1, 1, 9),
        datetime(2000, 1, 1, 12),
        datetime(2000, 1, 1, 15),
        datetime(2000, 1, 1, 18),
        datetime(2000, 1, 1, 21),
    ]
예제 #3
0
def test_GLDAS_Noah_v21_025Ds_img_reading():
    parameter = ['SoilMoi10_40cm_inst', 'SoilMoi0_10cm_inst', 'SoilTMP0_10cm_inst',
                 'AvgSurfT_inst', 'SWE_inst']
    img = GLDAS_Noah_v21_025Ds(data_path=os.path.join(os.path.dirname(__file__),
                                                     'test-data',
                                                     'GLDAS_NOAH_image_data'),
                              parameter=parameter,
                              subgrid=None,
                              array_1D=True)

    image = img.read(
        datetime(2015, 1, 1, 0))

    assert sorted(image.data.keys()) == sorted(parameter)
    assert image.timestamp == datetime(2015, 1, 1, 0)
    assert round(image.data['SoilMoi0_10cm_inst'][998529],3) == 38.804
    assert round(image.data['SoilMoi10_40cm_inst'][998529],3) == 131.699
    assert round(image.data['SoilTMP0_10cm_inst'][998529],3) == 254.506
    assert round(image.data['AvgSurfT_inst'][998529],3) == 235.553
    assert round(image.data['SWE_inst'][998529],3) == 108.24
    assert image.lon.shape == (360 * 180 * (1 / 0.25)**2,)
    assert image.lon.shape == image.lat.shape
    assert sorted(list(image.metadata.keys())) == sorted(parameter)
    assert image.metadata['AvgSurfT_inst']['units'] == u'K'
    assert image.metadata['AvgSurfT_inst']['long_name'] == u'Average Surface Skin temperature'
예제 #4
0
파일: reshuffle.py 프로젝트: rameezu/gldas
def reshuffle(input_root, outputpath,
              startdate, enddate,
              parameters, land_points=True,
              imgbuffer=50):
    """
    Reshuffle method applied to GLDAS data.

    Parameters
    ----------
    input_root: string
        input path where gldas data was downloaded
    outputpath : string
        Output path.
    startdate : datetime
        Start date.
    enddate : datetime
        End date.
    parameters: list
        parameters to read and convert
    imgbuffer: int, optional
        How many images to read at once before writing time series.
    """

    if land_points:
        landgrid = GLDAS025LandGrid()
    else:
        landgrid = None

    if get_filetype(input_root) == 'grib':
        input_dataset = GLDAS_Noah_v1_025Ds(input_root, parameters,
                                            array_1D=True)
        if land_points:
            warnings.warn('Land Grid is fit to GLDAS 2.x netCDF data')
    else:
        input_dataset = GLDAS_Noah_v21_025Ds(input_root, parameters, landgrid,
                                             array_1D=True)

    if not os.path.exists(outputpath):
        os.makedirs(outputpath)

    global_attr = {'product': 'GLDAS'}

    # get time series attributes from first day of data.
    data = input_dataset.read(startdate)
    ts_attributes = data.metadata
    if landgrid:
        grid = landgrid
    else:
        grid = BasicGrid(data.lon, data.lat)

    reshuffler = Img2Ts(input_dataset=input_dataset, outputpath=outputpath,
                        startdate=startdate, enddate=enddate, input_grid=grid,
                        imgbuffer=imgbuffer, cellsize_lat=5.0,
                        cellsize_lon=5.0, global_attr=global_attr, zlib=True,
                        unlim_chunksize=1000, ts_attributes=ts_attributes)
    reshuffler.calc()