Source code for tds2stac.dimensions.temporal
from datetime import datetime
# SPDX-FileCopyrightText: 2023 Karlsruher Institut für Technologie
#
# SPDX-License-Identifier: CC0-1.0
import pytz
[docs]
class Temporal(object):
[docs]
def regulator(self, main_dict, temporal_format_by_dataname, data_name):
errors = []
if (
main_dict["temporal_extent_start_datetime"] is not None
and temporal_format_by_dataname is None
):
main_dict["temporal_extent_start_datetime"] = main_dict[
"temporal_extent_start_datetime"
]
elif (
main_dict["temporal_extent_start_datetime"] is None
or main_dict["temporal_extent_start_datetime"] is not None
) and temporal_format_by_dataname is not None:
print("data_name", data_name)
print(
"temporal_format_by_dataname",
datetime.strptime(
str(data_name),
temporal_format_by_dataname,
)
.strftime("%Y-%m-%dT%H:%M:%SZ")
.lstrip("0"),
)
main_dict["temporal_extent_start_datetime"] = (
datetime.strptime(
str(data_name),
temporal_format_by_dataname,
).strftime("%Y-%m-%dT%H:%M:%SZ")
# .lstrip("0")
# .replace(" 0", " ")
)
elif (
main_dict["temporal_extent_start_datetime"] is None
and temporal_format_by_dataname is None
):
errors.append(
"Start DateTime is None in the given dataset. Please review your `tag_config.json` file or use `temporal_format_by_dataname` attr to the date of your data will be read from file names."
)
if (
main_dict["temporal_extent_end_datetime"] is not None
and temporal_format_by_dataname is None
):
main_dict["temporal_extent_end_datetime"] = main_dict[
"temporal_extent_end_datetime"
]
elif (
main_dict["temporal_extent_end_datetime"] is None
or main_dict["temporal_extent_end_datetime"] is not None
) and temporal_format_by_dataname is not None:
main_dict["temporal_extent_end_datetime"] = (
datetime.strptime(
str(data_name),
temporal_format_by_dataname,
).strftime("%Y-%m-%dT%H:%M:%SZ")
# .lstrip("0")
# .replace(" 0", " ")
)
elif (
main_dict["temporal_extent_end_datetime"] is None
and temporal_format_by_dataname is None
):
errors.append(
"End DateTime is None in the given dataset. Please review your `tag_config.json` file or use `temporal_format_by_dataname` attr to the date of your data will be read from file names."
)
try:
main_dict["collection_interval_time"].append(
datetime.strptime(
main_dict["temporal_extent_start_datetime"],
"%Y-%m-%dT%H:%M:%S.%fZ",
).replace(tzinfo=pytz.utc)
)
main_dict["collection_interval_time"].append(
datetime.strptime(
main_dict["temporal_extent_end_datetime"],
"%Y-%m-%dT%H:%M:%S.%fZ",
).replace(tzinfo=pytz.utc)
)
except ValueError:
main_dict["collection_interval_time"].append(
datetime.strptime(
main_dict["temporal_extent_start_datetime"],
"%Y-%m-%dT%H:%M:%SZ",
).replace(tzinfo=pytz.utc)
)
main_dict["collection_interval_time"].append(
datetime.strptime(
main_dict["temporal_extent_end_datetime"],
"%Y-%m-%dT%H:%M:%SZ",
).replace(tzinfo=pytz.utc)
)
main_dict["collection_interval_time"] = sorted(
main_dict["collection_interval_time"]
)
if errors != []:
return errors