Source code for eogrow.utils.eopatch_list

"""Utilities for working with lists of EOPatch names."""

from __future__ import annotations

import json
from collections import defaultdict

from fs.base import FS

from sentinelhub import CRS

from ..types import PatchList


[docs]def save_names(filesystem: FS, file_path: str, names: list[str]) -> None: """Saves a list of names (EOPatch, execution, etc.) to a file :param filesystem: Filesystem used to save the file. :param filename: Path of a JSON file where names will be saved. :param names: A list of names. """ with filesystem.open(file_path, "w") as file: json.dump(names, file, indent=2)
[docs]def load_names(filesystem: FS, file_path: str) -> list[str]: """Loads a list of names (EOPatch, execution, etc.) from a file :param filesystem: Filesystem used to load the file. :param filename: Path of a JSON file where names are saved. :return: A list of names loaded from file. """ with filesystem.open(file_path, "r") as file: return json.load(file)
[docs]def group_by_crs(patch_list: PatchList) -> dict[CRS, list[str]]: patches_by_crs: defaultdict[CRS, list[str]] = defaultdict(list) for name, bbox in patch_list: patches_by_crs[bbox.crs].append(name) return patches_by_crs