def test_julian2datetime(): dt = julian2datetime(2457533.9306828701) dt_should = datetime(2016, 5, 25, 10, 20, 10, 999976) assert dt == dt_should dt = julian2datetime(2457173.8604166666) dt_should = datetime(2015, 5, 31, 8, 39) assert dt == dt_should
def CCI_genIO(valid_gpis, start_date, end_date, plot=False): start_jd = julian.julday(start_date.month, start_date.day, start_date.year, start_date.hour, start_date.minute, start_date.second) end_jd = julian.julday(end_date.month, end_date.day, end_date.year, end_date.hour, end_date.minute, end_date.second) parent_grid = cci_grid.ESA_CCI_SM_grid_v4_1_indl() nearest_gpis = parent_grid.find_nearest_gpi(valid_gpis['lon'], valid_gpis['lat']) nearest_gpis = np.unique(nearest_gpis[0]) cells = parent_grid.gpi2cell(nearest_gpis) header = 'jd,sm,sm_noise,sensor,freqband,nobs,year,month,day' descr = [('year', np.uint), ('month', np.uint), ('day', np.uint)] for cell in sorted(np.unique(cells)): gpis, lons, lats = parent_grid.grid_points_for_cell(cell) grid = CellGrid(lons, lats, np.ones_like(lons, dtype=np.int16) * cell, gpis=gpis) cfg_path = ('/home/ipfeil/GitRepos/rs-data-readers/rsdata/'+ 'ESA_CCI_SM/datasets/') version = 'ESA_CCI_SM_v02.3' param = 'esa_cci_sm_monthly' cci_io = ESA_CCI_SM(version=version, parameter=param, grid=grid, cfg_path=cfg_path) for ts, gp in cci_io.iter_ts(): if gp not in nearest_gpis: continue valid_date_idx = np.where((ts['jd']>=start_jd) & (ts['jd']<=end_jd))[0] ts_valid_dates = ts[valid_date_idx] ts_dates = add_field(ts_valid_dates, descr) dates = julian.julian2datetime(ts_dates['jd']) years = [date.year for date in dates] ts_dates['year'] = years ts_dates['month'] = [date.month for date in dates] ts_dates['day'] = [date.day for date in dates] np.savetxt('/media/sf_D/CCI_csv/'+str(gp)+'.csv', ts_dates, delimiter=',', header=header) if plot == True: valid_ind = np.where(ts_valid_dates['sm'] != -999999) dates = julian.julian2datetime(ts_valid_dates['jd'][valid_ind]) plt.plot(dates, ts_valid_dates['sm'][valid_ind]) plt.title('ESA CCI SM combined monthly average, gpi: '+str(gp)) plt.xlabel('date') plt.ylabel('soil moisture [%]') plt.show()
def test_julian2datetime_array(): dt = julian2datetime(np.array([2457533.9306828701, 2457533.9306828701])) dts = datetime(2016, 5, 25, 10, 20, 10, 999976) dt_should = np.array([dts, dts]) assert type(dt) == np.ndarray assert np.all(dt == dt_should)
def read_CCI(gpi, start=None, end=None): warp_grid = warp_dgg.DGGv21CPv20_ind_ld() cci_grid = cci_quarter_grid.ESA_CCI_SM_grid_v4_1_indl() cci_gpi = cci_grid.find_nearest_gpi(warp_grid.gpi2lonlat(gpi)[0], warp_grid.gpi2lonlat(gpi)[1])[0] version = 'ESA_CCI_SM_v02.2' parameter = 'esa_cci_sm' cci_io = ESA_CCI_SM(version, parameter) ts = cci_io.read_ts(cci_gpi) date_ind = julian.julian2datetime(ts['jd']) cci_df = pd.DataFrame(ts['sm'], index=date_ind, columns=['sm']) if start is not None and end is not None: cci_ts = cci_df[start:end] elif start is not None: cci_ts = cci_df[start:] elif end is not None: cci_ts = cci_df[:end] else: cci_ts = cci_df return cci_ts
def test_julian2datetime(): dt = julian2datetime(2457533.9306828701) dt_should = datetime(2016, 5, 25, 10, 20, 10, 999976) assert dt == dt_should