Skip to content

Quality Data Model

All the analyses implemented in this package have been designed to abstract away the dependency on the input format, relying solely on a generic Python protocol. Once this protocol is satisfied, it enables the execution of all implemented analyses regardless of the type of input product.

This data model protocol and its utilities are available in the perseo_quality.io module.

Protocol

Definition of an input product protocol structure for analyses and processing inside PERSEO Quality

Classes

SARCoordinatesFunction

Bases: Protocol

Protocol to define a function taking SAR coordinates (Azimuth, Range) as inputs and returns a float This can be any generic f: SAR Times -> R.

Methods:

evaluate
Python
evaluate(azimuth_time: PreciseDateTime, range_time: float) -> float

Evaluate the wrapped function at given azimuth and range times.

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

azimuth time at which evaluate the function

required
range_time float

range time at which evaluate the function

required

Returns:

Type Description
float

output of the wrapped function

QualityInputProduct

Bases: Protocol

Protocol to define characteristics of input product for quality tool

Attributes

name property
Python
name: str

Get product name

channels_list property
Python
channels_list: list[int] | list[str]

Get list of available channels for this product

Methods:

get_channel_data
Python
get_channel_data(channel_id: int | str) -> ChannelData | ExtendedChannelData

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

Parameters:

Name Type Description Default
channel_id int | str

selected channel identifier

required

Returns:

Type Description
ChannelData | ExtendedChannelData

ChannelData/ExtendedChannelData-compliant object containing data corresponding to the selected channel

ChannelData

Bases: Protocol

Protocol to define an object that contains all the channel dependent info and data

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: int | str

Identifier corresponding to the 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 sampling constants

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

mid_range_time property
Python
mid_range_time: float

Range time at half swath

trajectory property
Python
trajectory: Trajectory

Channel trajectory/orbit

attitude property
Python
attitude: Attitude | None

Channel attitude defined in ECEF Reference Frame

doppler_centroid property
Python
doppler_centroid: SARCoordinatesFunction | None

Channel doppler centroid polynomial wrapper

doppler_rate property
Python
doppler_rate: SARCoordinatesFunction | None

Channel doppler rate polynomial wrapper

range_axis property
Python
range_axis: NDArray[floating]

Range axis

slant_range_axis property
Python
slant_range_axis: NDArray[floating]

Slant 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 array, a value for each burst in the swath

radiometric_quantity property
Python
radiometric_quantity: SARRadiometricQuantity

Channel radiometric quantity

Methods:

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

Compute mid azimuth and range times for a given burst.

Returns:

Type Description
tuple[PreciseDateTime, float] | tuple[None, None]

azimuth and range mid burst times, (None, None) if no bursts

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

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
float

pixel corresponding to azimuth time

float

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

read_data
Python
read_data(azimuth_index: int, range_index: int, cropping_size: tuple[int, int], output_radiometric_quantity: SARRadiometricQuantity, 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.

Data block to be read will be assembled this way: 0. first line to be read: azimuth_index - cropping_size[1] // 2 1. first sample to be read: range_index - cropping_size[0] // 2 2. total number of lines to be read: cropping_size[1] 3. total number of samples to be read: cropping_size[0]

Parameters:

Name Type Description Default
azimuth_index int

index of azimuth time in swath array

required
range_index int

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)

required
output_radiometric_quantity SARRadiometricQuantity

selected output radiometric quantity to convert the read data to, if needed

required
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, data is provided with shape (samples, lines) by default the output radiometric quantity is BETA_NOUGHT, unless specified otherwise

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

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

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

selected absolute azimuth time

required
range_time float

selected absolute range time

required

Returns:

Type Description
LocationData

LocationData instance related to the selected location

ExtendedChannelData

Bases: ChannelData, Protocol

Extension of original base ChannelData protocol used for Product Channel representation in PERSEO Quality. Extension grants access to new methods that can be used inside for additional computations.

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: int | str

Identifier corresponding to the 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 sampling constants

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

mid_range_time property
Python
mid_range_time: float

Range time at half swath

trajectory property
Python
trajectory: Trajectory

Channel trajectory/orbit

attitude property
Python
attitude: Attitude | None

Channel attitude defined in ECEF Reference Frame

doppler_centroid property
Python
doppler_centroid: SARCoordinatesFunction | None

Channel doppler centroid polynomial wrapper

doppler_rate property
Python
doppler_rate: SARCoordinatesFunction | None

Channel doppler rate polynomial wrapper

range_axis property
Python
range_axis: NDArray[floating]

Range axis

slant_range_axis property
Python
slant_range_axis: NDArray[floating]

Slant 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 array, a value for each burst in the swath

radiometric_quantity property
Python
radiometric_quantity: SARRadiometricQuantity

Channel radiometric quantity

Methods:

get_roll_angle_deg
Python
get_roll_angle_deg(azimuth_time: PreciseDateTime) -> float | None

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 | None

roll angle in degrees, None if roll angle is not available

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), if any else None

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.

Parameters:

Name Type Description Default
azimuth_times ArrayLike

azimuth time array in PreciseDateTime format

required

Returns:

Type Description
list[int]

burst associated with the given time

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 the given pixel index

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

Compute mid azimuth and range times for a given burst.

Returns:

Type Description
tuple[PreciseDateTime, float] | tuple[None, None]

azimuth and range mid burst times, (None, None) if no bursts

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

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
float

pixel corresponding to azimuth time

float

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

read_data
Python
read_data(azimuth_index: int, range_index: int, cropping_size: tuple[int, int], output_radiometric_quantity: SARRadiometricQuantity, 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.

Data block to be read will be assembled this way: 0. first line to be read: azimuth_index - cropping_size[1] // 2 1. first sample to be read: range_index - cropping_size[0] // 2 2. total number of lines to be read: cropping_size[1] 3. total number of samples to be read: cropping_size[0]

Parameters:

Name Type Description Default
azimuth_index int

index of azimuth time in swath array

required
range_index int

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)

required
output_radiometric_quantity SARRadiometricQuantity

selected output radiometric quantity to convert the read data to, if needed

required
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, data is provided with shape (samples, lines) by default the output radiometric quantity is BETA_NOUGHT, unless specified otherwise

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

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

Parameters:

Name Type Description Default
azimuth_time PreciseDateTime

selected absolute azimuth time

required
range_time float

selected absolute range time

required

Returns:

Type Description
LocationData

LocationData instance related to the selected location

Protocol utilities and support functionalities for Quality I/O

Classes

Functions:

roi_validation

Python
roi_validation(roi: list[int, int, int, int], raster_boundaries: list[int, int, int, int], burst_boundaries: list[int, int, int, int] | None = None) -> None

Validating the region of interest to be read from raster.

Parameters:

Name Type Description Default
roi list[int, int, int, int]

[reading start line, reading start sample, number of lines to be read, number of samples to be read]

required
raster_boundaries list[int, int, int, int]

[0, 0, raster number of lines, raster number of samples]

required
burst_boundaries list[int, int, int, int] | None

[current burst starting line, current burst starting sample, lines of current burst, samples of current burst], if None no validation against burst boundaries is performed, by default None

None

Raises:

Type Description
AzimuthExceedsBoundariesError

if roi boundaries exceed raster or burst azimuth boundaries

RangeExceedsBoundariesError

ir roi boundaries exceed raster or burst range boundaries

Layout

SAR Product Layout data models

Classes

L1BurstLayout dataclass

L1 Burst layout definition and manager

Attributes

burst_id instance-attribute
Python
burst_id: int
lines instance-attribute
Python
lines: int
samples instance-attribute
Python
samples: int
azimuth_axis class-attribute instance-attribute
Python
azimuth_axis: ndarray = field(init=False)
range_axis class-attribute instance-attribute
Python
range_axis: NDArray[floating] = field(init=False)
mid_burst_azimuth class-attribute instance-attribute
Python
mid_burst_azimuth: PreciseDateTime = field(init=False)
mid_burst_range class-attribute instance-attribute
Python
mid_burst_range: float = field(init=False)

Methods:

__init__
Python
__init__(burst_id: int, lines: int, samples: int, lines_step: InitVar[float], lines_start: InitVar[PreciseDateTime], samples_step: InitVar[float], samples_start: InitVar[float]) -> None
__post_init__
Python
__post_init__(lines_step: float, lines_start: PreciseDateTime, samples_step: float, samples_start: float)
is_azimuth_in_burst
Python
is_azimuth_in_burst(az: PreciseDateTime) -> bool

Checking if input azimuth belongs to the burst azimuth axis.

Parameters:

Name Type Description Default
az PreciseDateTime

azimuth to be checked

required

Returns:

Type Description
bool

True if azimuth belongs to the current burst azimuth axis, else False

is_range_in_burst
Python
is_range_in_burst(rng: float) -> bool

Checking if input range belongs to the burst range axis.

Parameters:

Name Type Description Default
rng float

range to be checked

required

Returns:

Type Description
bool

True if range belongs to the current burst range axis, else False

is_azimuth_relative_pixel_in_burst
Python
is_azimuth_relative_pixel_in_burst(az_burst_pixel: float) -> bool

Checking if input azimuth relative pixel index belongs to the burst azimuth axis.

Parameters:

Name Type Description Default
az_burst_pixel float

azimuth pixel index to be checked

required

Returns:

Type Description
bool

True if azimuth pixel index belongs to the current burst azimuth axis, else False

is_range_relative_pixel_in_burst
Python
is_range_relative_pixel_in_burst(rng_burst_pixel: float) -> bool

Checking if input range relative pixel index belongs to the burst range axis.

Parameters:

Name Type Description Default
rng_burst_pixel float

range pixel index to be checked

required

Returns:

Type Description
bool

True if range pixel index belongs to the current burst range axis, else False

azimuth_to_burst_pixel
Python
azimuth_to_burst_pixel(az: PreciseDateTime) -> float

Associating input azimuth with corresponding pixel relative to burst azimuth start.

Parameters:

Name Type Description Default
az PreciseDateTime

input azimuth value

required

Returns:

Type Description
float

pixel index (sub-pixel precision) corresponding to the input azimuth, relative to the burst azimuth start

Raises:

Type Description
AzimuthExceedsBoundariesError

if input azimuth exceeds the current burst azimuth axis

range_to_burst_pixel
Python
range_to_burst_pixel(rng: float) -> float

Associating input range with corresponding pixel relative to burst range start.

Parameters:

Name Type Description Default
rng float

input range value

required

Returns:

Type Description
float

pixel index (sub-pixel precision) corresponding to the input range, relative to the burst range start

Raises:

Type Description
RangeExceedsBoundariesError

if input range exceeds the current burst range axis

burst_pixel_to_azimuth
Python
burst_pixel_to_azimuth(az_burst_pixel: float) -> PreciseDateTime

Associating input azimuth relative pixel (sub-pixel precision accepted) to corresponding azimuth value.

Parameters:

Name Type Description Default
az_burst_pixel float

relative azimuth pixel

required

Returns:

Type Description
PreciseDateTime

azimuth associated to the input azimuth relative pixel index

Raises:

Type Description
AzimuthExceedsBoundariesError

if input azimuth pixel index exceeds the current burst azimuth axis

burst_pixel_to_range
Python
burst_pixel_to_range(rng_burst_pixel: float) -> float

Associating input range relative pixel (sub-pixel precision accepted) to corresponding range value.

Parameters:

Name Type Description Default
rng_burst_pixel float

relative range pixel

required

Returns:

Type Description
float

range associated to the input range relative pixel index

Raises:

Type Description
RangeExceedsBoundariesError

if input range pixel index exceeds the current burst range axis

burst_pixels_to_coordinates
Python
burst_pixels_to_coordinates(az_burst_pixel: float, rng_burst_pixel: float) -> tuple[PreciseDateTime, float]

Associating input azimuth and range relative pixels (sub-pixel precision accepted) to corresponding coordinates.

Parameters:

Name Type Description Default
az_burst_pixel float

relative azimuth pixel

required
rng_burst_pixel float

relative range pixel

required

Returns:

Type Description
PreciseDateTime

azimuth associated to the input azimuth relative pixel index

float

range associated to the input range relative pixel index

coordinates_to_burst_pixels
Python
coordinates_to_burst_pixels(az: PreciseDateTime, rng: float) -> tuple[float, float]

Associating input azimuth and range values to corresponding pixel indexes.

Parameters:

Name Type Description Default
az PreciseDateTime

input azimuth value

required
rng float

input range value

required

Returns:

Type Description
float

relative azimuth pixel associated to the input azimuth value

float

relative range pixel associated to the input range value

L1RasterLayout dataclass

Raster layout definition and management as a collection of BurstLayout objects

Attributes

lines instance-attribute
Python
lines: int
samples instance-attribute
Python
samples: int
bursts instance-attribute
Python
bursts: list[L1BurstLayout]
burst_ids class-attribute instance-attribute
Python
burst_ids: list[int] = field(init=False)
burst_starting_line_offsets class-attribute instance-attribute
Python
burst_starting_line_offsets: ndarray = field(init=False)
raster_azimuth_axis class-attribute instance-attribute
Python
raster_azimuth_axis: ndarray = field(init=False)
raster_range_axis class-attribute instance-attribute
Python
raster_range_axis: NDArray[floating] = field(init=False)
mid_swath_azimuth class-attribute instance-attribute
Python
mid_swath_azimuth: PreciseDateTime = field(init=False)
mid_swath_range class-attribute instance-attribute
Python
mid_swath_range: PreciseDateTime = field(init=False)

Methods:

__init__
Python
__init__(lines: int, samples: int, bursts: list[L1BurstLayout]) -> None
__post_init__
Python
__post_init__()

Computing raster axes and mid swath values

get_burst_layout
Python
get_burst_layout(burst_id: int) -> L1BurstLayout

Returning the burst layout object corresponding to the selected burst id.

Parameters:

Name Type Description Default
burst_id int

selected burst id

required

Returns:

Type Description
L1BurstLayout

associated burst layout object

get_burst_start_coordinates
Python
get_burst_start_coordinates(burst_id: int) -> tuple[PreciseDateTime, float]

Returning the azimuth and range start coordinates for the selected burst.

Parameters:

Name Type Description Default
burst_id int

burst number

required

Returns:

Type Description
PreciseDateTime

azimuth start for the selected burst

float

range start for the selected burst

get_burst_lines
Python
get_burst_lines(burst_id: int) -> int

Returning the number of lines for the selected burst.

Parameters:

Name Type Description Default
burst_id int

burst number

required

Returns:

Type Description
int

azimuth lines for the selected burst

get_burst_samples
Python
get_burst_samples(burst_id: int) -> int

Returning the number of samples for the selected burst.

Parameters:

Name Type Description Default
burst_id int

burst number

required

Returns:

Type Description
int

range samples for the selected burst

is_azimuth_in_raster
Python
is_azimuth_in_raster(az: PreciseDateTime) -> bool

Check if input azimuth does not exceeds the raster azimuth boundaries.

Parameters:

Name Type Description Default
az PreciseDateTime

azimuth to be checked

required

Returns:

Type Description
bool

True if azimuth belongs to the raster azimuth axis, else False

is_range_in_raster
Python
is_range_in_raster(rng: float) -> bool

Check if input range does not exceeds the raster range boundaries.

Parameters:

Name Type Description Default
rng float

range to be checked

required

Returns:

Type Description
bool

True if range belongs to the raster range axis, else False

azimuth_to_bursts_association
Python
azimuth_to_bursts_association(az: PreciseDateTime) -> list[int]

Detecting which bursts intersect the input azimuth.

Parameters:

Name Type Description Default
az PreciseDateTime

input azimuth

required

Returns:

Type Description
list[int]

list of burst ids intersecting the input azimuth

Raises:

Type Description
AzimuthExceedsBoundariesError

if azimuth exceeds raster boundaries

range_to_bursts_association
Python
range_to_bursts_association(rng: float) -> list[int]

Detecting which bursts intersect the input range.

Parameters:

Name Type Description Default
rng float

input range

required

Returns:

Type Description
list[int]

list of burst ids intersecting the input range

Raises:

Type Description
RangeExceedsBoundariesError

if range exceeds raster boundaries

azimuth_to_pixel_conversion
Python
azimuth_to_pixel_conversion(az: PreciseDateTime, burst_id: int | None = None) -> list[tuple[int, float]]

Converting input azimuth to raster pixel with sub-pixel precision.

Parameters:

Name Type Description Default
az PreciseDateTime

input azimuth

required
burst_id int | None

burst to be selected in case of overlapping bursts for the input azimuth, if None all the pixels associated to the given azimuth are returned, by default None

None

Returns:

Type Description
list[tuple[int, float]]

list of (burst_id, pixel) corresponding to the input azimuth, more than one tuple in case of overlapping bursts and no burst id provided as input

Raises:

Type Description
InvalidBurstIdError

if the selected burst_id does not contain the input azimuth

range_to_pixel_conversion
Python
range_to_pixel_conversion(rng: float, burst_id: int | None = None) -> list[tuple[int, float]]

Converting input range to raster pixel with sub-pixel precision.

Parameters:

Name Type Description Default
rng float

input range

required
burst_id int | None

burst to be selected in case of overlapping bursts for the input range, if None all the pixels associated to the given range are returned, by default None

None

Returns:

Type Description
list[tuple[int, float]]

list of (burst_id, pixel) corresponding to the input range, more than one tuple in case of more burst covering the input range and no burst id selected

Raises:

Type Description
InvalidBurstIdError

if the selected burst_id does not contain the input range

pixel_to_azimuth_conversion
Python
pixel_to_azimuth_conversion(az_pixel_index: float) -> PreciseDateTime

Converting input azimuth pixel index to raster azimuth.

Parameters:

Name Type Description Default
az_pixel_index float

input azimuth pixel index, sub-pixel precision is supported

required

Returns:

Type Description
PreciseDateTime

raster azimuth corresponding to the input azimuth pixel index

Raises:

Type Description
AzimuthExceedsBoundariesError

if input azimuth pixel index exceeds azimuth raster boundaries

pixel_to_range_conversion
Python
pixel_to_range_conversion(rng_pixel_index: float) -> float

Converting input range pixel index to raster range.

Parameters:

Name Type Description Default
rng_pixel_index int

input range pixel index, sub-pixel precision is supported

required

Returns:

Type Description
float

raster range corresponding to the input range pixel index

Raises:

Type Description
RangeExceedsBoundariesError

if input range pixel index exceeds range raster boundaries

is_roi_in_raster
Python
is_roi_in_raster(roi: list[int, int, int, int], burst: int | None = None) -> bool

Checking if input roi is fully within the raster boundaries.

Parameters:

Name Type Description Default
roi list[int, int, int, int]

[reading start line, reading start sample, number of lines to be read, number of samples to be read]

required
burst int | None

if provided the roi is checked against the burst boundaries and not the raster ones, by default None

None

Returns:

Type Description
bool

True if roi lies within raster or burst boundaries, else False

Functions: