def test_landgrid(self): grid = CCILandGrid() gp, dist = grid.find_nearest_gpi(75.625, 14.625) assert gp == 602942 lon, lat = grid.gpi2lonlat(602942) assert lon == 75.625 assert lat == 14.625 assert np.where( grid.get_grid_points()[0] == 602942)[0][0] == 177048 # index assert grid.get_grid_points()[1][177048] == lon assert grid.get_grid_points()[2][177048] == lat assert grid.gpi2cell(602942) == 1856 assert grid.gpis.size == 1036800 assert grid.activegpis.size == 244243 assert grid.gpis[0] == 1035360 assert grid.activegpis[0] == 999942 assert np.unique(grid.get_grid_points()[3]).size == 1001
def reshuffle(input_root, outputpath, startdate, enddate, parameters=None, land_points=True, ignore_meta=False, imgbuffer=200): """ Reshuffle method applied to ESA CCI SM images. Parameters ---------- input_root: string input path where era interim data was downloaded outputpath : string Output path. startdate : datetime Start date. enddate : datetime End date. parameters: list, optional (default: None) parameters to read and convert If none are passed, we read an image in the root path and use vars from the image. land_points : bool, optional (default: True) Use the land grid to calculate time series on. Leads to faster processing and smaller files. imgbuffer: int, optional How many images to read at once before writing time series. """ if land_points: grid = CCILandGrid() else: grid = CCICellGrid() gpis, lons, lats, cells = grid.get_grid_points() grid_vars = {'gpis': gpis, 'lons': lons, 'lats': lats} # repurpose cannot handle masked arrays for k, v in grid_vars.items(): # type v: np.ma.MaskedArray if isinstance(v, np.ma.MaskedArray): grid_vars[k] = v.filled() grid = BasicGrid(lon=grid_vars['lons'], lat=grid_vars['lats'], gpis=grid_vars['gpis']).to_cell_grid(5.) if not os.path.exists(outputpath): os.makedirs(outputpath) file_args, file_vars = parse_filename(input_root) if parameters is None: parameters = [p for p in file_vars if p not in ['lat', 'lon', 'time']] input_dataset = CCI_SM_025Ds(data_path=input_root, parameter=parameters, subgrid=grid, array_1D=True) if not ignore_meta: global_attr, ts_attributes = read_metadata( sensortype=file_args['sensor_type'], version=int(file_args['version']), varnames=parameters, subversion=file_args['sub_version']) else: global_attr = {'product': 'ESA CCI SM'} ts_attributes = None 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()