diff --git a/weather_mv/loader_pipeline/sinks.py b/weather_mv/loader_pipeline/sinks.py index 47873d2b..bf3abe9d 100644 --- a/weather_mv/loader_pipeline/sinks.py +++ b/weather_mv/loader_pipeline/sinks.py @@ -163,7 +163,7 @@ def _get_band_data(i): ds = xr.merge(band_data_list) ds.attrs['is_normalized'] = ds_is_normalized_attr - end_time = None + start_time, end_time = None, None if initialization_time_regex and forecast_time_regex: try: start_time = match_datetime(uri, initialization_time_regex) @@ -175,18 +175,22 @@ def _get_band_data(i): raise RuntimeError("Wrong regex passed in --forecast_time_regex.") ds.attrs['start_time'] = start_time ds.attrs['end_time'] = end_time + elif 'start_time' in ds.attrs and 'end_time' in ds.attrs: + start_time, end_time = ds.attrs['start_time'], ds.attrs['end_time'] # TODO(#159): Explore ways to capture required metadata using xarray. with rasterio.open(filename) as f: - datetime_value_ms = None + datetime_value_s = None try: - datetime_value_s = (int(end_time.timestamp()) if end_time is not None - else int(f.tags()[tif_metadata_for_datetime]) / 1000.0) + datetime_value_s = ( + int(end_time.timestamp()) if end_time is not None + else int(f.tags()[tif_metadata_for_datetime]) / 1000.0 + ) ds = ds.assign_coords({'time': datetime.datetime.utcfromtimestamp(datetime_value_s)}) except KeyError: raise RuntimeError(f"Invalid datetime metadata of tif: {tif_metadata_for_datetime}.") except ValueError: - raise RuntimeError(f"Invalid datetime value in tif's metadata: {datetime_value_ms}.") + raise RuntimeError(f"Invalid datetime value in tif's metadata: {datetime_value_s}.") return ds