Beispiel #1
0
 def test_to_time_range(self):
     ds = create_default_dataset(time_mode="time")
     t1, t2 = self.processor.get_time_range(ds)
     self.assertEqual(to_time_in_days_since_1970("20100301T120000Z"), t1)
     self.assertEqual(to_time_in_days_since_1970("20100301T120000Z"), t2)
     ds = create_default_dataset(time_mode="time_bnds")
     t1, t2 = self.processor.get_time_range(ds)
     self.assertEqual(to_time_in_days_since_1970("20100301T000000Z"), t1)
     self.assertEqual(to_time_in_days_since_1970("20100301T235959Z"), t2)
     ds = create_default_dataset(time_mode="time_coverage")
     t1, t2 = self.processor.get_time_range(ds)
     self.assertEqual(to_time_in_days_since_1970("20100301T000000Z"), t1)
     self.assertEqual(to_time_in_days_since_1970("20100301T235959Z"), t2)
     ds = create_default_dataset(time_mode="start_stop_time")
     t1, t2 = self.processor.get_time_range(ds)
     self.assertEqual(to_time_in_days_since_1970("20100301T000000Z"), t1)
     self.assertEqual(to_time_in_days_since_1970("20100301T235959Z"), t2)
     ds = create_default_dataset(time_mode="start_stop_date")
     t1, t2 = self.processor.get_time_range(ds)
     self.assertEqual(to_time_in_days_since_1970("20100301T000000Z"), t1)
     self.assertEqual(to_time_in_days_since_1970("20100301T235959Z"), t2)
     ds = create_default_dataset(time_mode="no_time")
     with self.assertRaises(ValueError) as cm:
         self.processor.get_time_range(ds)
     self.assertEqual(
         "invalid input: missing time coverage information in dataset",
         f"{cm.exception}")
Beispiel #2
0
    def get_time_range(self, dataset: xr.Dataset) -> Tuple[float, float]:
        time_coverage_start, time_coverage_end = None, None
        if "time" in dataset:
            time = dataset["time"]
            time_bnds_name = time.attrs.get("bounds", "time_bnds")
            if time_bnds_name in dataset:
                time_bnds = dataset[time_bnds_name]
                if time_bnds.shape == (1, 2):
                    time_coverage_start = str(time_bnds[0][0].data)
                    time_coverage_end = str(time_bnds[0][1].data)
            if time_coverage_start is None or time_coverage_end is None:
                time_coverage_start, time_coverage_end = self.get_time_range_from_attrs(
                    dataset)
            if time_coverage_start is None or time_coverage_end is None:
                if time.shape == (1, ):
                    time_coverage_start = str(time[0].data)
                    time_coverage_end = time_coverage_start
        if time_coverage_start is None or time_coverage_end is None:
            time_coverage_start, time_coverage_end = self.get_time_range_from_attrs(
                dataset)
        if time_coverage_start is None or time_coverage_end is None:
            raise ValueError(
                "invalid input: missing time coverage information in dataset")

        return to_time_in_days_since_1970(
            time_coverage_start), to_time_in_days_since_1970(time_coverage_end)
Beispiel #3
0
 def test_from_time_in_days_since_1970(self):
     self.assertEqual(
         '2017-06-07T12:00:00.000000000',
         str(
             from_time_in_days_since_1970(
                 to_time_in_days_since_1970('201706071200'))))
     self.assertEqual(
         '2017-06-08T12:00:00.000000000',
         str(
             from_time_in_days_since_1970(
                 to_time_in_days_since_1970('201706081200'))))
     self.assertEqual(
         '2018-06-08T12:00:00.000000000',
         str(
             from_time_in_days_since_1970(
                 to_time_in_days_since_1970('2018-06-08 12:00'))))
     self.assertEqual(
         '2018-06-08T12:00:00.000000000',
         str(
             from_time_in_days_since_1970(
                 to_time_in_days_since_1970('2018-06-08T12:00'))))
     self.assertEqual(
         '2019-10-04T10:13:48.538000000',
         str(
             from_time_in_days_since_1970(
                 to_time_in_days_since_1970(
                     '04-OCT-2019 10:13:48.538184'))))
Beispiel #4
0
 def test_to_time_in_days_since_1970(self):
     self.assertEqual(17324.5, to_time_in_days_since_1970('201706071200'))
     self.assertEqual(17325.5, to_time_in_days_since_1970('201706081200'))
     self.assertEqual(17690.5,
                      to_time_in_days_since_1970('2018-06-08 12:00'))
     self.assertEqual(17690.5,
                      to_time_in_days_since_1970('2018-06-08T12:00'))
     self.assertEqual(
         18173.42625622898,
         to_time_in_days_since_1970('04-OCT-2019 10:13:48.538184'))
Beispiel #5
0
    def get_time_range(self, dataset: xr.Dataset) -> Tuple[float, float]:

        if "time_coverage_start" in dataset.attrs:
            t1 = str(dataset.attrs["time_coverage_start"])
            t2 = str(dataset.attrs.get("time_coverage_end", t1))
        else:
            t1 = dataset.attrs.get('start_date')
            t2 = dataset.attrs.get('stop_date', t1)
        if t1 is None or t2 is None:
            raise ValueError('illegal L2 input: missing start/stop time')
        t1 = to_time_in_days_since_1970(t1)
        t2 = to_time_in_days_since_1970(t2)
        return t1, t2
Beispiel #6
0
    def get_time_range(self, dataset: xr.Dataset) -> Tuple[float, float]:
        time_coverage_start, time_coverage_end = None, None
        date_format = '%Y-%m-%d %H:%M:%S'
        if "time" in dataset:
            time_coverage_start = str(dataset.time[0].values)
            date = pd.to_datetime(str(dataset.time[0].values), utc=True)
            if 'daily' in str(dataset.attrs.values()):
                time_coverage_end = datetime.datetime.strftime(
                    (date + datetime.timedelta(days=1)), date_format)
            if 'hourly' in str(dataset.attrs.values()):
                time_coverage_end = datetime.datetime.strftime(
                    (date + datetime.timedelta(hours=1)), date_format)

        return to_time_in_days_since_1970(
            time_coverage_start), to_time_in_days_since_1970(time_coverage_end)
Beispiel #7
0
 def get_time_range(self, dataset: xr.Dataset) -> Tuple[float, float]:
     time_coverage_start, time_coverage_end = get_time_range_from_data(
         dataset)
     if time_coverage_start is not None:
         time_coverage_start = str(time_coverage_start)
     if time_coverage_end is not None:
         time_coverage_end = str(time_coverage_end)
     if time_coverage_start is None or time_coverage_end is None:
         time_coverage_start, time_coverage_end = get_time_range_from_attrs(
             dataset)
     if time_coverage_start is None:
         raise ValueError(
             "invalid input: missing time coverage information in dataset")
     if time_coverage_end is None:
         time_coverage_end = time_coverage_start
     return to_time_in_days_since_1970(time_coverage_start), \
            to_time_in_days_since_1970(time_coverage_end)
Beispiel #8
0
 def test_get_time_range(self):
     ds = create_s2plus_dataset()
     t1, t2 = self.processor.get_time_range(ds)
     self.assertEqual(to_time_in_days_since_1970("2018-08-02T10:59:38.888000Z"), t1)
     self.assertEqual(to_time_in_days_since_1970("2018-08-02T10:59:38.888000Z"), t2)