OpenSarToolkit v2.2.0

Preprocessing an S1 image with OpenSarToolkit OST.

This software is licensed under the terms of the Creative Commons Attribution 4.0 International license - SPDX short identifier: CC-BY-4.0

2026-03-10 - 2026-03-30T13:19:28.307 Copyright Terradue Srl - > https://ror.org/0069cx113

Project Team

Authors

Name Email Organization Role Identifier
Vollrath, Andreas andreas.vollrath@fao.org Food and Agriculture Organization of the United Nations https://github.com/BuddyVolly
Lurcock, Pontus pontus.lurcock@brockmann-consult.de Brockmann Consult https://orcid.org/0000-0001-6994-071X

Contributors

Name Email Organization Role Identifier
Vaccari, Simone simone.vaccari@terradue.com Terradue Srl Researcher https://orcid.org/0000-0002-2757-4165

DeveloperGuide

DeveloperGuide can be found on https://terradue.github.io/eoap-open-sar-toolkit/.

Runtime environment

Supported Operating Systems

  • Linux
  • MacOS X

Requirements

Software Source code


opensartoolkit

CWL Class

Workflow

Requirements

Inputs

Id Type Label Doc
resolution int Resolution Resolution in metres
ard-type One of:
  • enum:
    • OST_GTC
    • OST-RTC
    • CEOS
    • Earth-Engine
ARD type Type of analysis-ready data to produce
with-speckle-filter One of:
  • enum:
    • APPLY-FILTER
    • NO-FILTER
Speckle filter Whether to apply a speckle filter
resampling-method One of:
  • enum:
    • BILINEAR_INTERPOLATION
    • BICUBIC_INTERPOLATION
Resampling method Resampling method to use
target_datetime DateTime: Target datetime Target datetime in ISO 8601 format
bbox Polygon:
  • type: enum:
    • Polygon
  • coordinates: array of array of array of double
  • bbox: array of double
Area of interest AOI polygon (bbox field will be used for STAC bbox)

Steps

Id Runs Label Doc
build_search_request #build_search_request Build search_request and add datetime-interval None
discovery #odata-client OData API discovery Discover STAC items from a OData API endpoint based on a search request
convert_search #convert-search Convert Search Convert Search results to get the item self hrefs
s1_subworkflow #s1_subworkflow Sub-workflow to process searched S1 data Sub-workflow to process searched S1 data

Outputs

Id Type Label Doc
output array of Directory None None

OGC API - Processes

When opensartoolkit Workflow is exposed through OGC API - Processes - Part 1: Core, inputs and outputs fields below represent the interface of the getProcessDescription API.

Inputs

opensartoolkit OGC API Processes JSON Inputs schema

Outputs

opensartoolkit OGC API Processes JSON Outputs schema

UML Diagrams

Activity diagram

Learn more about the Activity diagram below.

opensartoolkit flow diagram

Component diagram

Learn more about the Component diagram below.

opensartoolkit flow diagram

Class diagram

Learn more about the Class diagram below.

opensartoolkit flow diagram

Sequence diagram

Learn more about the Sequence diagram below.

opensartoolkit flow diagram

State diagram

Learn more about the State diagram below.

opensartoolkit flow diagram

Run in step

build_search_request

build_search_request

CWL Class

ExpressionTool

Inputs

Id Option Type
target_datetime --target_datetime DateTime:
bbox --bbox Polygon:
  • type: enum:
    • Polygon
  • coordinates: array of array of array of double
  • bbox: array of double

Run in step

discovery

odata-client

CWL Class

CommandLineTool

Inputs

Id Option Type
api_endpoint --api_endpoint APIEndpoint:
search_request --search_request STACSearchSettings:

Execution usage example:

odata-client search $(inputs.api_endpoint.url.value) ${ const args = []; const collections = inputs.search_request.collections; args.push('--collections', collections.join(",")); return args; } ${ const args = []; const bbox = inputs.search_request?.bbox; if (Array.isArray(bbox) && bbox.length >= 4) { args.push('--bbox', ...bbox.map(String)); } return args; } ${ const args = []; const limit = inputs.search_request?.limit; args.push("--limit", (limit ?? 10).toString()); return args; } ${ const maxItems = inputs.search_request?.['max-items']; return ['--max-items', (maxItems ?? 20).toString()]; } ${ const args = []; const filter = inputs.search_request?.filter; const filterLang = inputs.search_request?.['filter-lang']; if (filterLang) { args.push('--filter-lang', filterLang); } if (filter) { args.push('--filter', JSON.stringify(filter)); } return args; } ${ const datetime = inputs.search_request?.datetime; const datetimeInterval = inputs.search_request?.datetime_interval; if (datetime) { return ['--datetime', datetime]; } else if (datetimeInterval) { const start = datetimeInterval.start?.value || '..'; const end = datetimeInterval.end?.value || '..'; return ['--datetime', `${start}/${end}`]; } return []; } ${ const ids = inputs.search_request?.ids; const args = []; if (Array.isArray(ids) && ids.length > 0) { args.push('--ids', ...ids.map(String)); } return args; } ${ const intersects = inputs.search_request?.intersects; if (intersects) { return ['--intersects', JSON.stringify(intersects)]; } return []; } --save discovery-output.json \
--api_endpoint <API_ENDPOINT> \
--search_request <SEARCH_REQUEST>

Run in step

convert_search

CWL Class

CommandLineTool

Inputs

Id Option Type
target_datetime --target-datetime DateTime:
search_results --search-results File
input_bbox --input-bbox Polygon:
  • type: enum:
    • Polygon
  • coordinates: array of array of array of double
  • bbox: array of double

Execution usage example:

convert-search \
--target-datetime <TARGET_DATETIME> \
--search-results <SEARCH_RESULTS> \
--input-bbox <INPUT_BBOX>

Run in step

s1_subworkflow

s1_subworkflow

CWL Class

Workflow

Requirements

Inputs

Id Type Label Doc
reference_ID string Product reference ID None
bbox One of: Bounding Box Bounding box [minx, miny, maxx, maxy] in the raster CRS
resolution int Resolution Resolution in metres
ard-type One of:
  • enum:
    • OST_GTC
    • OST-RTC
    • CEOS
    • Earth-Engine
ARD type Type of analysis-ready data to produce
with-speckle-filter One of:
  • enum:
    • APPLY-FILTER
    • NO-FILTER
Speckle filter Whether to apply a speckle filter
resampling-method One of:
  • enum:
    • BILINEAR_INTERPOLATION
    • BICUBIC_INTERPOLATION
Resampling method Resampling method to use

Steps

Id Runs Label Doc
stage_in #stage-in Stage-in S1 data Stage-in S1 data with Arvesto
run_script #ost_run None None
to-stac-catalog #to-stac-catalog None None

Outputs

Id Type Label Doc
ost_ard_cog Directory OST ARD COG output OST ARD COG output in a STAC catalog structure

OGC API - Processes

When s1_subworkflow Workflow is exposed through OGC API - Processes - Part 1: Core, inputs and outputs fields below represent the interface of the getProcessDescription API.

Inputs

s1_subworkflow OGC API Processes JSON Inputs schema

Outputs

s1_subworkflow OGC API Processes JSON Outputs schema

UML Diagrams

Activity diagram

Learn more about the Activity diagram below.

s1_subworkflow flow diagram

Component diagram

Learn more about the Component diagram below.

s1_subworkflow flow diagram

Class diagram

Learn more about the Class diagram below.

s1_subworkflow flow diagram

Sequence diagram

Learn more about the Sequence diagram below.

s1_subworkflow flow diagram

State diagram

Learn more about the State diagram below.

s1_subworkflow flow diagram

Run in step

stage_in

stage-in

CWL Class

CommandLineTool

Inputs

Id Option Type
reference_ID --reference_ID string

Execution usage example:

/bin/bash arvesto.sh \
--reference_ID <REFERENCE_ID>

Run in step

run_script

ost_run

CWL Class

CommandLineTool

Inputs

Id Option Type
input --input Directory
resolution --resolution int
ard-type --ard-type One of:
  • enum:
    • OST_GTC
    • OST-RTC
    • CEOS
    • Earth-Engine
with-speckle-filter --with-speckle-filter One of:
  • enum:
    • APPLY-FILTER
    • NO-FILTER
resampling-method --resampling-method One of:
  • enum:
    • BILINEAR_INTERPOLATION
    • BICUBIC_INTERPOLATION
cdse-user --cdse-user One of:
cdse-password --cdse-password One of:

Execution usage example:

/bin/bash run_me.sh --wipe-cwd \
--input <INPUT> \
--resolution <RESOLUTION> \
--ard-type <ARD-TYPE> \
--with-speckle-filter <WITH-SPECKLE-FILTER> \
--resampling-method <RESAMPLING-METHOD> \
(--cdse-user <CDSE-USER>) \
(--cdse-password <CDSE-PASSWORD>)

Run in step

to-stac-catalog

to-stac-catalog

CWL Class

CommandLineTool

Inputs

Id Option Type
input_tif --input-tif Directory
reference_ID --reference-id string
bbox --bbox One of:

Execution usage example:

stac-catalog \
--input-tif <INPUT_TIF> \
--reference-id <REFERENCE_ID> \
(--bbox <BBOX>)