Source code for smosaic.smosaic_filter_scenes

import os
import pyproj
import tqdm
import shapely
import rasterio
from pyproj import Transformer

from rasterio.mask import mask as rasterio_mask
from shapely.ops import transform

from smosaic.smosaic_utils import find_grid_by_name, get_coverage_projection, load_jsons

[docs] def filter_scenes(collection, data_dir, geom): """ Filter and select specific scenes from a collection based on spatial criteria. Args: collection (str): BDC collection identifier (e.g., "S2_L2A-1"). data_dir (str): Directory path where scene data is stored. clip_geometry (shapely.geometry): Spatial boundary for clipping. """ if collection in ['S2_L2A-1','S2_L1C_BUNDLE-1']: grid_data = find_grid_by_name("MGRS") list_dir = [item for item in os.listdir(os.path.join(data_dir, collection)) if os.path.isdir(os.path.join(data_dir, collection, item))] filtered_scenes = [] for scene in list_dir: item = [item for item in grid_data["features"] if item["properties"]["name"] == scene] if item: grid_geom = shapely.geometry.shape(item[0]['geometry']) if geom.intersects(grid_geom): filtered_scenes.append(item[0]['properties']['name']) return filtered_scenes