コード例 #1
0
ファイル: wudr_analysis.py プロジェクト: dgketchum/Metio
 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
コード例 #2
0
ファイル: test_comparisons.py プロジェクト: dgketchum/Metio
    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))
コード例 #3
0
ファイル: gridmet_correction.py プロジェクト: dgketchum/Metio
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
コード例 #4
0
ファイル: test_comparisons.py プロジェクト: dgketchum/Metio
    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)
コード例 #5
0
    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])
コード例 #6
0
ファイル: gridmet_correction.py プロジェクト: dgketchum/Metio
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))
コード例 #7
0
ファイル: test_comparisons.py プロジェクト: dgketchum/Metio
    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))