diff --git a/scripts/stac/imagery/create_stac.py b/scripts/stac/imagery/create_stac.py index ae44152e..6ccb7806 100644 --- a/scripts/stac/imagery/create_stac.py +++ b/scripts/stac/imagery/create_stac.py @@ -96,6 +96,8 @@ def get_providers(licensors: list[str], producers: list[str]) -> list[Provider]: return providers +#pylint: disable=too-many-locals +#pylint: disable=too-many-nested-blocks def create_item( asset_path: str, start_datetime: str, @@ -135,20 +137,27 @@ def create_item( if derived_from is not None: for derived in derived_from: - derived_item_content = read(derived) - derived_stac = json.loads(derived_item_content.decode("UTF-8")) - if not start_datetime or derived_stac["properties"]["start_datetime"] < start_datetime: - start_datetime = derived_stac["properties"]["start_datetime"] - if not end_datetime or derived_stac["properties"]["end_datetime"] > end_datetime: - end_datetime = derived_stac["properties"]["end_datetime"] - item.add_link( - Link( - path=derived, - rel=Relation.DERIVED_FROM, - media_type=StacMediaType.GEOJSON, - file_content=derived_item_content, + try: + derived_item_content = read(derived) + derived_stac = json.loads(derived_item_content.decode("UTF-8")) + if not start_datetime or derived_stac["properties"]["start_datetime"] < start_datetime: + start_datetime = derived_stac["properties"]["start_datetime"] + if not end_datetime or derived_stac["properties"]["end_datetime"] > end_datetime: + end_datetime = derived_stac["properties"]["end_datetime"] + if item.stac.get("links"): + for link in item.stac["links"]: + if link["rel"] == "derived_from": + get_log().info(f"Existing derived_from {link['href']}", href=link["href"]) + item.add_link( + Link( + path=derived, + rel=Relation.DERIVED_FROM, + media_type=StacMediaType.GEOJSON, + file_content=derived_item_content, + ) ) - ) + except NoSuchFileError as e: + get_log().error(f"Error loading derived item {derived}", json_file=derived, error=str(e)) item.update_datetime(start_datetime, end_datetime) item.update_spatial(*get_extents(gdalinfo_result))