def get_gridmet(self, start, end, lat, lon): # gridmet params gridmet = GridMet('pr', start=start, end=end, lat=lat, lon=lon) ts_ppt = gridmet.get_point_timeseries() m_ppt = ts_ppt.groupby(lambda x: x.month).sum().values gridmet = GridMet('etr', start=start, end=end, lat=lat, lon=lon) ts_etr = gridmet.get_point_timeseries() m_etr = ts_etr.groupby(lambda x: x.month).sum().values return m_ppt, m_etr
def test_agrimet_mesonet_gridmet_etr(self): agrimet = Agrimet(station=self.fetch_site, start_date=self.start, end_date=self.end, interval='daily') formed = agrimet.fetch_met_data() agri_etr = formed['ETRS'].values s, e = datetime.strptime(self.start, '%Y-%m-%d'), \ datetime.strptime(self.end, '%Y-%m-%d') gridmet = GridMet('etr', start=s, end=e, lat=self.lat, lon=self.lon) gridmet_etr = gridmet.get_point_timeseries() gridmet_etr = gridmet_etr.values mco = Mesonet(self.covm_mco, start=self.start, end=self.end) mesonet_daily = mco.mesonet_etr(lat=46.3, elevation=1000.0) mesonet_etr = mesonet_daily['ETR'].values plt.plot(gridmet_etr[121:273], label='gridmet') plt.plot(mesonet_etr[121:273], label='mesonet') plt.plot(agri_etr[121:273], label='agrimet') plt.xlabel('GROWING SEASON DAY (MAY 01 - SEP 30)') plt.ylabel('Tall Crop Reference ET (mm) daily') plt.legend() # plt.show() saved = os.path.join(os.path.dirname(__file__), 'grid_agri_meso_fig.png') print('saved to {}'.format(saved)) plt.savefig(saved) ga_ratio = gridmet_etr[121:273].sum() / agri_etr[121:273].sum() print('gridmet - agrimet ratio: {}'.format(ga_ratio)) ma_ratio = mesonet_etr[121:273].sum() / agri_etr[121:273].sum() print('mesonet - agrimet ratio: {}'.format(ma_ratio))
def correct_pr_mesonet_gridmet(start, end, lat, lon): s, e = datetime.strptime(start, '%Y-%m-%d'), \ datetime.strptime(end, '%Y-%m-%d') gridmet = GridMet('pr', start=s, end=e, lat=lat, lon=lon) gridmet_ppt = gridmet.get_point_timeseries() gridmet_ppt = gridmet_ppt.values mco = Mesonet(LOLO_MCO, start=start, end=end) mesonet_ppt = mco.mesonet_ppt(daily=True) mesonet_ppt = mesonet_ppt['Precipitation'].values mesonet_ppt = mesonet_ppt.reshape((mesonet_ppt.shape[0], 1)) meso_gs_ppt, grid_gs_ppt = mesonet_ppt[121:273], gridmet_ppt[121:273] comp = hstack((meso_gs_ppt, grid_gs_ppt)) pass
def test_agrimet_gridmet_precip(self): agrimet = Agrimet(station=self.fetch_site, start_date=self.start, end_date=self.end, interval='daily') formed = agrimet.fetch_met_data() agri_ppt = formed['PP'].values s, e = datetime.strptime(self.start, '%Y-%m-%d'), \ datetime.strptime(self.end, '%Y-%m-%d') gridmet = GridMet('pr', start=s, end=e, lat=self.lat, lon=self.lon) gridmet_ppt = gridmet.get_point_timeseries() gridmet_ppt = gridmet_ppt.values difference = abs(gridmet_ppt - agri_ppt) self.assertLess(nanmean(difference), -100000)
def test_get_time_series(self): """ Test native pet rasters vs. xarray netcdf point extract. :return: """ rasters = os.listdir(self.grimet_raster_dir) for ras in rasters: if ras.endswith('pet.tif'): dt = datetime.strptime(ras[:10], '%Y-%m-%d') raster = os.path.join(self.grimet_raster_dir, ras) points = raster_point_extract(raster, self.agri_points, dt) for key, val in points.items(): lon, lat = val['coords'] _, var = ras.split('_') var = var.replace('.tif', '') gridmet = GridMet(var, date=dt, lat=lat, lon=lon) gridmet_pet = gridmet.get_point_timeseries() val[dt][1] = gridmet_pet.iloc[0, 0] for key, val in points.items(): self.assertEqual(val[dt][0], val[dt][1])
def correct_etr_mesonet_gridmet(start, end, lat, lon): s, e = datetime.strptime(start, '%Y-%m-%d'), \ datetime.strptime(end, '%Y-%m-%d') gridmet = GridMet('etr', start=s, end=e, lat=lat, lon=lon) gridmet_etr = gridmet.get_point_timeseries() gridmet_etr = gridmet_etr.values mco = Mesonet(LOLO_MCO, start=start, end=end) mesonet_daily = mco.mesonet_etr(lat=46.3, elevation=1000.0) mesonet_etr = mesonet_daily['ETR'].values plt.plot(gridmet_etr[121:273], label='gridmet') plt.plot(mesonet_etr[121:273], label='mesonet') plt.xlabel('GROWING SEASON DAY (MAY 01 - SEP 30)') plt.ylabel('Tall Crop Reference ET (mm) daily') plt.legend() plt.show() ma_ratio = mesonet_etr[121:273].sum() / gridmet_etr[121:273].sum() print('mesonet - gridmet ratio: {}'.format(ma_ratio)) ma_ratio = gridmet_etr[121:273].sum() / mesonet_etr[121:273].sum() print('gridmet - mesonet ratio: {}'.format(ma_ratio))
def test_agrimet_gridmet_etr(self): agrimet = Agrimet(station=self.fetch_site, start_date=self.start, end_date=self.end, interval='daily') formed = agrimet.fetch_met_data() agri_etr = formed['ETRS'].values s, e = datetime.strptime(self.start, '%Y-%m-%d'), \ datetime.strptime(self.end, '%Y-%m-%d') gridmet = GridMet('etr', start=s, end=e, lat=self.lat, lon=self.lon) gridmet_etr = gridmet.get_point_timeseries() gridmet_etr = gridmet_etr.values # plt.plot(gridmet_etr, label='gridmet') # plt.plot(agri_etr, label='agrimet') # plt.legend() # plt.show() # plt.close() ratio = agri_etr.sum() / gridmet_etr.sum() print('ratio: {}'.format(ratio))