satorbis_kit.raster.raster_to_vector module

Raster to vector conversion module with OpenEO integration.

Provides functionality to convert raster data to vector format using OpenEO backend.

satorbis_kit.raster.raster_to_vector.raster_to_vector(raster_s3_path: str, output_s3_path: str, band: int = 1, output_driver: str = 'GeoJSON', simplify_tolerance: float | None = None, job_title: str | None = None, wait_for_completion: bool = False) openeo.rest.job.BatchJob[source]

Convert raster data to vector format using OpenEO backend.

This function takes a raster file (e.g., GeoTIFF) and converts it to a vector format (e.g., GeoJSON, GeoPackage) by vectorizing pixel values. It uses the OpenEO backend for processing and supports S3 storage for both input and output.

Parameters:
  • raster_s3_path (str) – S3 URI to input raster file. Example: “s3://bucket/input.tif”

  • output_s3_path (str) – S3 URI for output vector file. Example: “s3://bucket/output.geojson”

  • band (int, optional) – Band number to vectorize (1-indexed). Defaults to 1.

  • output_driver (str, optional) – Output vector format driver. Options: “GeoJSON”, “GPKG”, “GML”, “KML”. Defaults to “GeoJSON”.

  • simplify_tolerance (float, optional) – Tolerance for geometry simplification. If None, no simplification is applied. Defaults to None.

  • job_title (str, optional) – Custom job title. If None, auto-generated from input filename.

  • wait_for_completion (bool, optional) – If True, blocks until job completes. If False, returns immediately after starting. Defaults to False.

Returns:

OpenEO batch job object that can be monitored

and managed. Use job.status() to check status.

Return type:

openeo.rest.job.BatchJob

Raises:
  • ConnectionError – If unable to connect to OpenEO backend.

  • ValueError – If S3 paths are invalid or band number is out of range.

Examples

Basic raster to vector conversion:

>>> from satorbis_kit.raster import raster_to_vector
>>> job = raster_to_vector(
...     raster_s3_path="s3://satimg-to-be-deleted/Sentinel2/TCX8021/20251201_091002001000000_TCX8021.tif",
...     output_s3_path="s3://satsure-products-testing/20251201_091002001000000_TCX8021.geojson"
... )
>>> print(job.status())

Convert specific band with simplification:

>>> job = raster_to_vector(
...     raster_s3_path="s3://bucket/input.tif",
...     output_s3_path="s3://bucket/output.geojson",
...     band=2,
...     simplify_tolerance=0.001,
...     wait_for_completion=True
... )
>>> print(f"Conversion complete: {job.status()}")

Convert to GeoPackage format:

>>> job = raster_to_vector(
...     raster_s3_path="s3://bucket/input.tif",
...     output_s3_path="s3://bucket/output.gpkg",
...     output_driver="GPKG",
...     job_title="Raster to GeoPackage Conversion"
... )

Using OpenEO directly:

>>> import openeo
>>> from satorbis_kit.constants import Constants
>>> con = openeo.connect(Constants.DEV_URL)
>>> cube = con.datacube_from_process(
...     process_id="raster_to_vector",
...     raster_s3_path="s3://bucket/input.tif",
...     output_s3_path="s3://bucket/output.geojson",
...     band=1,
...     output_driver="GeoJSON",
...     simplify_tolerance=None
... )
>>> job = cube.create_job(title="Raster to Vector Job")
>>> job.start_and_wait()

Note

  • Requires AWS credentials configured for S3 access

  • OpenEO backend accessible via Constants.DEV_URL

  • Input must be a valid raster file with proper georeferencing

  • Output format determined by output_driver parameter

  • Simplification can significantly reduce output file size

  • Large rasters may take considerable time to vectorize