Skip to content

API Reference

Plugin Interface

Sentinel-1 SCT plugin interface.

Attributes

Classes

Sentinel1InputProductPlugin

Plugin for Sentinel-1 product format

Attributes

version class-attribute instance-attribute
Python
version = __version__

Methods:

get_manager classmethod
Python
get_manager() -> type[SCTInputProduct]

Implementation of Plugin interface method to get the Product Manager class

get_detector classmethod
Python
get_detector() -> Callable[[str | Path], bool]

Implementation of Plugin interface method to get the product detection function

get_ale_corrector classmethod
Python
get_ale_corrector() -> ALECorrectionFunctionType

Implementation of Plugin interface method to get the Absolute Localization Error Correction class

Protocol Implementation

Sentinel-1 format reader protocol-compliant wrapper for PERSEO-quality.

Attributes

ALPHA_ROLL module-attribute

Python
ALPHA_ROLL = 0.0566

SENSOR_HEIGHT_REF module-attribute

Python
SENSOR_HEIGHT_REF = 711.7

BORESIGHT_ANGLE_REF module-attribute

Python
BORESIGHT_ANGLE_REF = 29.45

Classes

Sentinel1DopplerPolynomial

PERSEO-quality Doppler Polynomial protocol compliant SAFE doppler polynomial wrapper

Methods:

__init__
Python
__init__(evaluator: DopplerEvaluator) -> None
evaluate
Python
evaluate(azimuth_time: PreciseDateTime, range_time: float) -> float

Evaluate the Doppler Polynomial at given azimuth and range times.

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

azimuth time at which evaluate the polynomial

required
range_time float

range time at which evaluate the polynomial

required

Returns:

Type Description
float

doppler centroid at that time

Sentinel1ProductManager

SCTInputProduct protocol compliant SAFE wrapper

Attributes

path property
Python
path: Path

Get product path

name property
Python
name: str

Get product name

footprint property
Python
footprint: Polygon

Get product footprint

channels_list property
Python
channels_list: list[str]

Get list of available channels for this product

Methods:

__init__
Python
__init__(path: str | Path, external_orbit_path: str | Path | None = None, **kwargs) -> None
get_channel_data
Python
get_channel_data(channel_id: str) -> Sentinel1ChannelManager

Gathering all the information that are channel dependent and storing them in a protocol compliant object.

Parameters:

Name Type Description Default
channel_id int

selected channel identifier

required

Returns:

Type Description
SafeChannelManager

ChannelData-compliant object containing data corresponding to the selected channel

Sentinel1ChannelManager

PERSEO-quality ChannelData protocol compliant SAFE channel wrapper

Attributes

sensor_name property
Python
sensor_name: str

Name of the sensor

swath_name property
Python
swath_name: str

Name of the swath being analyzed

channel_id property
Python
channel_id: str

Identifier of current channel data

prf property
Python
prf: float

Sensor Pulse Repetition Frequency (PRF)

range_step_m property
Python
range_step_m: float

Step along range direction, in meters

azimuth_step_s property
Python
azimuth_step_s: float

Step along azimuth direction, in seconds

projection property
Python
projection: SARProjection

Channel data projection

polarization property
Python
polarization: SARPolarization

Channel data polarization

acquisition_mode property
Python
acquisition_mode: SARAcquisitionMode

Channel data acquisition mode

orbit_direction property
Python
orbit_direction: SAROrbitDirection

Channel data orbit direction

image_type property
Python
image_type: SARImageType

Channel raster image type

sampling_constants property
Python
sampling_constants: SARSamplingFrequencies

Channel data signal sampling frequencies

pulse_rate property
Python
pulse_rate: float

Signal pulse rate

looking_side property
Python
looking_side: SARSideLooking

Sensor look direction for this channel

carrier_frequency property
Python
carrier_frequency: float

Signal carrier frequency

mid_azimuth_time property
Python
mid_azimuth_time: PreciseDateTime

Azimuth time at half swath

trajectory property
Python
trajectory: Trajectory

Channel trajectory rx 3D curve

attitude property
Python
attitude: None

Channel attitude boresight normal 3D curve

doppler_centroid property
Python
doppler_centroid: Sentinel1DopplerPolynomial

Channel doppler centroid polynomial wrapper

doppler_rate property
Python
doppler_rate: Sentinel1DopplerPolynomial

Channel doppler rate polynomial wrapper

mid_range_time property
Python
mid_range_time: float

Range time at half swath

range_axis property
Python
range_axis: ndarray

Range axis

slant_range_axis property
Python
slant_range_axis: ndarray

Range axis

azimuth_axis property
Python
azimuth_axis: ndarray

Azimuth axis, PreciseDateTime format

lines_per_burst property
Python
lines_per_burst: ndarray

Lines per burst, for each burst in the swath

radiometric_quantity property
Python
radiometric_quantity: ndarray

Product radiometric quantity

pulse_latch_time property
Python
pulse_latch_time: float

Signal pulse latch time

swst_changes property
Python
swst_changes: list[tuple[PreciseDateTime, float]]

SWST changes list as tuple of time of change and new SWST value

Methods:

__init__
Python
__init__(channel_metadata_path: Path, channel_raster_path: Path, channel_calibration_path: Path, channel_noise_path: Path, channel_name: str, external_orbit_path: str | Path | None = None) -> None

Creating a ChannelManager object compliant with the ChannelData protocol.

Parameters:

Name Type Description Default
channel_metadata_path Path

Path to the channel metadata xml file

required
channel_raster_path int

Path to the channel raster file

required
channel_calibration_path int

Path to the channel calibration file

required
channel_name int

name of current channel

required
external_orbit_path str | Path | None

path to the corresponding external orbit file, if needed, by default None

None
get_mid_burst_times
Python
get_mid_burst_times(burst: int) -> tuple[PreciseDateTime, float]

Compute mid azimuth and range times for a given burst.

Returns:

Type Description
PreciseDateTime

azimuth mid burst time

float

range mid burst time

get_steering_rate
Python
get_steering_rate(azimuth_time: PreciseDateTime, burst: int) -> float

Compute steering rate at a given azimuth time and for a given burst.

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

azimuth time

required
burst int

burst corresponding to the input time

required

Returns:

Type Description
float

azimuth steering rate

get_roll_angle_deg
Python
get_roll_angle_deg(azimuth_time: PreciseDateTime) -> float

Compute roll angle at a given azimuth time.

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

azimuth time at which compute roll angle

required

Returns:

Type Description
float

roll angle in degrees

get_altitude_m
Python
get_altitude_m(azimuth_time: PreciseDateTime) -> float

Compute altitude over WGS84 ellipsoid at a given azimuth time.

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

azimuth time at which compute altitude

required

Returns:

Type Description
float

altitude over WGS84 ellipsoid in meters

get_noise_vector
Python
get_noise_vector(azimuth_indexes: int | tuple[int, int]) -> np.ndarray | None

Get noise vector(s) at a given azimuth index(es).

Parameters:

Name Type Description Default
azimuth_indexes int | tuple[int, int]

azimuth index or tuple of azimuth indexes (start, stop)

required

Returns:

Type Description
ndarray | None

noise vector(s) corresponding to the input azimuth index(es)

get_location_data
Python
get_location_data(azimuth_time: PreciseDateTime, range_time: float) -> LocationData

Generating a LocationData object containing data and info derived from the current SafeChannelManager and declined to the specific azimuth and range times selected.

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

selected azimuth time

required
range_time float

selected range time

required

Returns:

Type Description
LocationData

LocationData instance related to the selected location

pixel_to_times_conversion
Python
pixel_to_times_conversion(azimuth_index: float, range_index: float, burst: int = None) -> tuple[PreciseDateTime, float]

Converting input raster pixel coordinates (azimuth_index and range index) to corresponding absolute times, azimuth and range.

Parameters:

Name Type Description Default
azimuth_index float

azimuth pixel index, subpixel precision

required
range_index float

range pixel index, subpixel precision

required
burst int

burst index, by default None

None

Returns:

Type Description
PreciseDateTime

azimuth time

float

range time

times_to_pixel_conversion
Python
times_to_pixel_conversion(azimuth_time: PreciseDateTime, range_time: float, burst: int = None) -> tuple[float, float]

Converting azimuth and range times to raster image pixels indexes with subpixel precision.

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

azimuth time

required
range_time float

range time

required
burst int

burst number corresponding to these times

None

Returns:

Type Description
tuple[float, float]

pixel corresponding to azimuth time, pixel corresponding to range time

ground_points_to_burst_association
Python
ground_points_to_burst_association(coordinates: ArrayLike) -> list[list[int] | None]

Determining the burst (or bursts) where the input coordinates lie. If no association can be found (i.e. the point is not visible in the scene), None is returned.

Parameters:

Name Type Description Default
coordinates ArrayLike

array of coordinates, in the form (N, 3)

required

Returns:

Type Description
list[list[int] | None]

list containing the burst association for each input point, None if no association was found

times_to_burst_association
Python
times_to_burst_association(azimuth_times: ArrayLike) -> list[int]

Associate the right burst to a given input time point. This function returns 1 association for each input time. Associating time only to the first burst containing it.

Parameters:

Name Type Description Default
azimuth_times ArrayLike

azimuth time array in PreciseDateTime format

required

Returns:

Type Description
list[int]

burst associated with a given time

Raises:

Type Description
CoordinatesOutOfBounds

if input time exceeds tme boundaries of the swath

pixel_to_burst_association
Python
pixel_to_burst_association(azimuth_px_indexes: ArrayLike) -> list[int]

Associate the azimuth pixel value to the right burst. This function returns 1 association for each input time.

Parameters:

Name Type Description Default
azimuth_px_indexes ArrayLike

azimuth pixel indexes array

required

Returns:

Type Description
list[int]

burst associated with a given pixel index

Raises:

Type Description
CoordinatesOutOfBounds

if input time exceeds tme boundaries of the swath

read_data
Python
read_data(azimuth_index: float, range_index: float, cropping_size: tuple[int, int] = (150, 150), output_radiometric_quantity: SARRadiometricQuantity = SARRadiometricQuantity.BETA_NOUGHT, burst: int | None = None) -> np.ndarray

Extracting the swath portion centered to the provided target position and of size cropping_size by cropping_size. Target position is provided via its azimuth and range indexes in the swath array.

Parameters:

Name Type Description Default
azimuth_index float

index of azimuth time in swath array

required
range_index float

index of range time in swath array

required
cropping_size tuple[int, int]

size in pixel of the swath portion to be read (number of samples, number of lines), by default (150, 150)

(150, 150)
output_radiometric_quantity SARRadiometricQuantity

selected output radiometric quantity to convert the read data to, if needed, by default SARRadiometricQuantity.BETA_NOUGHT

BETA_NOUGHT
burst int

if burst is provided, the roi extraction gives error if the boundaries exceed the burst boundaries, by default None

None

Returns:

Type Description
ndarray

cropped swath array centered to the input target coordinates, output array is (samples, lines)

Raises:

Type Description
AzimuthExceedsBoundariesError

azimuth index exceeds swath boundaries

RangeExceedsBoundariesError

range index exceeds swath boundaries

ALE Corrections

ALE Corrector for Sentinel-1 products.

Attributes

Classes

S1ALECorrector

Class to manage Absolute Localization Errors corrections form external products or internal models

Attributes

additional_corrections_fields property
Python
additional_corrections_fields: list[str]

List of all possible additional corrections fields that can be added to the output dataframe

Methods:

__init__
Python
__init__(external_product_path: Path | None)
get_ale_corrections_function
Python
get_ale_corrections_function() -> ALECorrectionFunctionType

Retrieving proper Absolute Localization Error corrections function. Returning ETAD corrections if ETAD product path is provided, Sentinel1 IPF sensor specific corrections otherwise.

Returns:

Type Description
ALECorrectionFunctionType

function to compute ALE corrections

update_corrections_config
Python
update_corrections_config(corrections_config: SCTPointTargetAnalysisCorrectionsConf) -> SCTPointTargetAnalysisCorrectionsConf

Updating the SCT Point Target Analysis corrections configuration to disable additional corrections when using ETAD products.

Parameters:

Name Type Description Default
corrections_config SCTPointTargetAnalysisCorrectionsConf

original PTA corrections configuration

required

Returns:

Type Description
SCTPointTargetAnalysisCorrectionsConf

updated PTA corrections configuration

Functions: