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}")
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)
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'))))
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'))
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
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)
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)
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)