satorbis_kit.patch_generation module

Patch generation module using object-oriented design.

Follows SOLID principles and design patterns.

class satorbis_kit.patch_generation.PatchConfig(input_tif: str, output_folder: str, patch_size: int = 2048, overlap: int = 0, downsample_factor: float | None = 1.0, driver: str = 'GTiff', rasterio_env: dict | None = None)[source]

Bases: object

Configuration for patch generation.

downsample_factor: float | None = 1.0
driver: str = 'GTiff'
input_tif: str
output_folder: str
overlap: int = 0
patch_size: int = 2048
rasterio_env: dict | None = None
class satorbis_kit.patch_generation.PatchGenerator(config: PatchConfig, backend: Backend | None = None)[source]

Bases: object

Main class for generating patches from GeoTIFF files.

Follows OOP principles: - Encapsulation: All patch generation logic in one class - Single Responsibility: Only responsible for patch generation - Dependency Injection: Accepts Backend for flexibility

generate(show_progress: bool = True) int[source]

Generate patches from the input GeoTIFF.

Parameters:

show_progress – Whether to show progress bar

Returns:

Number of patches created

class satorbis_kit.patch_generation.PatchProcessor[source]

Bases: object

Utility class for patch processing operations (SRP).

static downsample_patch(patch: numpy.ndarray, src_transform: rasterio.transform.Affine, downsample_factor: float, resampling: rasterio.enums.Resampling = rasterio.enums.Resampling.bilinear) Tuple[numpy.ndarray, rasterio.transform.Affine][source]

Downsample patch by downsample_factor.

static pad_to_size(data: numpy.ndarray, target_h: int, target_w: int, dtype) numpy.ndarray[source]

Pad data to (bands, target_h, target_w) with zeros on bottom/right.

class satorbis_kit.patch_generation.PatchWriter(config: PatchConfig)[source]

Bases: object

Utility class for writing patches to disk (SRP).

write_patch(patch_id: int, x: int, y: int, src_path: str) str[source]

Read, process, and write a single patch.

satorbis_kit.patch_generation.create_patches(input_tif: str, output_folder: str, patch_size: int = 2048, overlap: int = 0, downsample_factor: float | None = 1.0, rasterio_env: dict | None = None, backend: str = 'dask', scheduler_address: str | None = None, n_workers: int = 4, threads_per_worker: int = 1, processes: bool = True, show_progress: bool = True) int[source]

High-level wrapper that manages the backend lifecycle internally.

Parameters:
  • input_tif – Path to input GeoTIFF file

  • output_folder – Path to output folder for patches

  • patch_size – Size of each patch in pixels

  • overlap – Overlap between patches in pixels

  • downsample_factor – Downsampling factor (0-1, 1.0 = no downsampling)

  • rasterio_env – Rasterio environment settings

  • backend – Backend name (‘dask’ or ‘sedona’)

  • scheduler_address – Dask scheduler address (for ‘dask’ backend)

  • n_workers – Number of workers (for ‘dask’ backend)

  • threads_per_worker – Threads per worker (for ‘dask’ backend)

  • processes – Use processes instead of threads (for ‘dask’ backend)

  • show_progress – Show progress bar

Returns:

Number of patches created

satorbis_kit.patch_generation.create_patches_dask(input_tif: str, output_folder: str, patch_size: int = 2048, overlap: int = 0, downsample_factor: float | None = 1.0, show_progress: bool = True, rasterio_env: dict | None = None, backend: Backend | None = None) int[source]

Create patches using the specified backend. Returns number of patches written.

Parameters:
  • input_tif – Path to input GeoTIFF file

  • output_folder – Path to output folder for patches

  • patch_size – Size of each patch in pixels

  • overlap – Overlap between patches in pixels

  • downsample_factor – Downsampling factor (0-1, 1.0 = no downsampling)

  • show_progress – Show progress bar

  • rasterio_env – Rasterio environment settings

  • backend – Backend instance (if None, uses Dask directly)

Returns:

Number of patches created