Skip to content

TerraSAR-X

Reader Interface

TERRASAR-X product format reader.

Attributes

prod_path module-attribute

Python
prod_path = 'C:\\Users\\marco.spadoni\\Desktop\\TSX_2024\\TDX1_SAR__SSC______SC_S_SRA_20240825T052632_20240825T052643'

prod module-attribute

Python
prod = open_product(prod_path)

channels module-attribute

Python
channels = support.generate_channels_names(prod_path.joinpath(f'{prod_path.name}.xml'))

channel_id module-attribute

Python
channel_id = channels[-1]

raster_file module-attribute

Python
raster_file = prod.get_raster_files_from_channel_name(channel_id)

channel_metadata module-attribute

Python
channel_metadata = read_channel_metadata(prod_path.joinpath(f'{prod_path.name}.xml'), raster_file)

block_to_read module-attribute

Python
block_to_read = None

data module-attribute

Python
data = np.abs(read_channel_data(raster_file, block_to_read, channel_metadata.burst_info)) ** 2

Classes

Functions:

read_channel_metadata

Python
read_channel_metadata(xml_path: str | Path, associated_cos_raster_path: str | Path | None = None) -> support.TERRASARXChannelMetadata

Generate TERRASARXChannelMetadata object from product metadata

Parameters:

Name Type Description Default
xml_path str | Path

path to xml metadata file

required
associated_cos_raster_path str | Path | None

path to the channel .cos raster, provide None if product is MGD, by default None

None

Returns:

Type Description
TERRASARXChannelMetadata

TERRASAR-X channel metadata object

read_product_metadata

Python
read_product_metadata(xml_path: str | Path) -> dict[str, support.TERRASARXChannelMetadata]

Read all channels' metadata

Parameters:

Name Type Description Default
xml_path str | Path
required

Returns:

Type Description
dict[str, TERRASARXChannelMetadata]

channels' metadata dictionary

open_product

Python
open_product(file_path: str | Path) -> support.TERRASARXProduct

Open a TERRASARX product

Parameters:

Name Type Description Default
file_path str | Path

Path to the TERRASAR-X product

required

Returns:

Type Description
TERRASARXProduct

TERRASARXProduct object corresponding to the input TERRASAR-X product

read_channel_data

Python
read_channel_data(raster_file: str | Path, block_to_read: list[int], burst_info: BurstInfo, scaling_conversion: float = 1) -> np.ndarray

Read channel raster data

Parameters:

Name Type Description Default
raster_file str | Path

path to channel raster data

required
block_to_read list[int]

data block to be read, to be specified as a list of 4 integers, in the form:

Text Only
0. first line to be read
1. first sample to be read
2. total number of lines to be read
3. total number of samples to be read
required
burst_info BurstInfo

burst info object

required
scaling_conversion float

scaling conversion to be multiplied to the data read (sqrt of calibration factor), by default 1

1

Returns:

Type Description
ndarray

ROI read from raster

Raises:

Type Description
ValueError

out of bounds in lines

ValueError

out of bounds in samples

ValueError

invalid raster file

Utilities

TERRASAR-X reader support module.

Classes

InvalidTERRASARXProduct

Bases: RuntimeError

Invalid TERRASAR-X product

InvalidTERRASARXProjection

Bases: RuntimeError

Invalid TERRASAR-X projection

TERRASARXProductVariant

Bases: Enum

TERRASAR-X product type

Attributes

SSC class-attribute instance-attribute
Python
SSC = 'SSC'
MGD class-attribute instance-attribute
Python
MGD = 'MGD'
GEC class-attribute instance-attribute
Python
GEC = 'GEC'
EEC class-attribute instance-attribute
Python
EEC = 'EEC'

TERRASARXAcquisitionModes

Bases: Enum

TERRASAR-X L1 acquisition modes

Attributes

STRIPMAP class-attribute instance-attribute
Python
STRIPMAP = 'STRIPMAP'
SCANSAR class-attribute instance-attribute
Python
SCANSAR = 'SCANSAR'
SPOTLIGHT class-attribute instance-attribute
Python
SPOTLIGHT = 'SPOTLIGHT'

TERRASARXProjections

Bases: Enum

TERRASAR-X L1 projection types

Attributes

SLANTRANGE class-attribute instance-attribute
Python
SLANTRANGE = 'SLANTRANGE'
UNDEFINED class-attribute instance-attribute
Python
UNDEFINED = 'UNDEFINED'
GROUNDRANGE class-attribute instance-attribute
Python
GROUNDRANGE = 'GROUNDRANGE'
MAP class-attribute instance-attribute
Python
MAP = 'MAP'

TERRASARXAttitude dataclass

TERRASAR-X sensor's attitude

Attributes

num instance-attribute
Python
num: int
q0 instance-attribute
Python
q0: ndarray
q1 instance-attribute
Python
q1: ndarray
q2 instance-attribute
Python
q2: ndarray
q3 instance-attribute
Python
q3: ndarray
time_axis instance-attribute
Python
time_axis: ndarray
time_step instance-attribute
Python
time_step: float

Methods:

__init__
Python
__init__(num: int, q0: ndarray, q1: ndarray, q2: ndarray, q3: ndarray, time_axis: ndarray, time_step: float) -> None

TERRASARXChannelMetadata dataclass

Attributes

image_calibration_factor instance-attribute
Python
image_calibration_factor: float
image_radiometric_quantity instance-attribute
Python
image_radiometric_quantity: SARRadiometricQuantity
polarization instance-attribute
Python
polarization: str
burst_info instance-attribute
Python
burst_info: BurstInfo
raster_info instance-attribute
Python
raster_info: RasterInfo
dataset_info instance-attribute
Python
dataset_info: DatasetInfo
swath_info instance-attribute
Python
swath_info: SwathInfo
sampling_constants instance-attribute
Python
sampling_constants: SARSamplingFrequencies
doppler_centroid_poly instance-attribute
Python
doppler_centroid_poly: DopplerEvaluator
doppler_rate_poly instance-attribute
Python
doppler_rate_poly: DopplerEvaluator
coordinate_conversions instance-attribute
Python
coordinate_conversions: CoordinatesConversions
state_vectors instance-attribute
Python
state_vectors: StateVectors
attitude instance-attribute
Python
attitude: TERRASARXAttitude

Methods:

__init__
Python
__init__(image_calibration_factor: float, image_radiometric_quantity: SARRadiometricQuantity, polarization: str, burst_info: BurstInfo, raster_info: RasterInfo, dataset_info: DatasetInfo, swath_info: SwathInfo, sampling_constants: SARSamplingFrequencies, doppler_centroid_poly: DopplerEvaluator, doppler_rate_poly: DopplerEvaluator, coordinate_conversions: CoordinatesConversions, state_vectors: StateVectors, attitude: TERRASARXAttitude) -> None

TERRASARXProduct

TERRASAR-X product object

Attributes

channels_number property
Python
channels_number: int

Returning the number of channels of TERRASAR-X product

channels_list property
Python
channels_list: list[str]

Returning the list of channels in terms of SwathID (swath-polarization)

acquisition_time property
Python
acquisition_time: PreciseDateTime

Acquisition start time for this product

acquisition_mode property
Python
acquisition_mode: TERRASARXAcquisitionModes

Acquisition mode for this product

footprint property
Python
footprint: tuple[float, float, float, float]

Product footprint as tuple of (min lat, max lat, min lon, max lon)

metadata_file property
Python
metadata_file: Path

Returning the product metadata file path of TERRASAR-X product

Methods:

__init__
Python
__init__(path: str | Path) -> None

TERRASAR-X product init from directory path

get_raster_files_from_channel_name
Python
get_raster_files_from_channel_name(channel_name: str) -> Path

Get raster file path associated to input channel name.

Parameters:

Name Type Description Default
channel_name str

selected channel name

required

Returns:

Type Description
Path

raster file path

Functions:

get_basic_info_from_metadata

Python
get_basic_info_from_metadata(metadata_path: str | Path) -> tuple[PreciseDateTime, TERRASARXProductVariant, tuple[float, float, float, float], TERRASARXAcquisitionModes]

Recovering basic product information

Parameters:

Name Type Description Default
metadata_path str | Path

path to TERRASAR-X basic product specification xml file

required

Returns:

Type Description
PreciseDateTime

acquisition time in PreciseDateTime format

TERRASARXProductVariant

product variant

tuple[float, float, float, float]

scene footprint in [min lat, max lat, min lon, max lon]

TERRASARXAcquisitionModes

acquisition mode

raster_info_from_metadata

Python
raster_info_from_metadata(root: _Element, projection: SARProjection, beam_id: str) -> RasterInfo

Creating a RasterInfo metadata element from xml node.

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required
projection SARProjection

SAR product projection

required
beam_id str

beam identifier string

required

Returns:

Type Description
RasterInfo

RasterInfo metadata object

burst_info_from_raster

Python
burst_info_from_raster(raster_info: RasterInfo, raster_file: str | Path) -> BurstInfo

Generate burst info from raster file in the case of scansar ssc products

burst_info_from_metadata

Python
burst_info_from_metadata(raster_info: RasterInfo) -> BurstInfo

Get BurstInfo object from metadata file for non scansar ssc products

Parameters:

Name Type Description Default
raster_info RasterInfo

product raster info

required

Returns:

Type Description
BurstInfo

burst info dataclass

dataset_info_from_metadata

Python
dataset_info_from_metadata(root: _Element, projection: SARProjection, acq_mode: TERRASARXAcquisitionModes, prod_variant: TERRASARXProductVariant) -> DatasetInfo

Creating a DatasetInfo metadata element from xml nodes.

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required
projection SARProjection

SAR product projection

required
acq_mode TERRASARXAcquisitionModes

TERRASAR-X product acquisition mode

required
prod_variant TERRASARXProductVariant

TERRASAR-X product variant

required

Returns:

Type Description
DatasetInfo

DatasetInfo metadata object

sampling_constants_from_metadata

Python
sampling_constants_from_metadata(root: _Element, raster_info: RasterInfo, beam_id: str, projection: SARProjection, acq_mode: TERRASARXAcquisitionModes) -> SARSamplingFrequencies

Creating a SARSamplingFrequencies metadata element from xml nodes

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required
raster_info RasterInfo

rasterInfo

required
beam_id str

beam identifier string

required
projection SARProjection

SAR product projection

required
acq_mode TERRASARXAcquisitionModes

TERRASAR-X acquisition mode

required

Returns:

Type Description
SARSamplingFrequencies

sampling frequencies

get_acquisition_mode

Python
get_acquisition_mode(imaging_mode: str) -> TERRASARXAcquisitionModes

Convert TERRASAR-X imaging mode to acquisition mode

Parameters:

Name Type Description Default
imaging_mode str

TERRASAR-X imaging mode

required

Returns:

Type Description
TERRASARXAcquisitionModes

acquisition mode among STRIPMAP, SCANSAR, SPOTLIGHT

get_SARProjection_from_TERRASARXProjection

Python
get_SARProjection_from_TERRASARXProjection(projection: TERRASARXProjections) -> SARProjection

Convert TERRASAR-X projection to generic SAR projection

Parameters:

Name Type Description Default
projection TERRASARXProjections

TERRASAR-X product projection

required

Returns:

Type Description
SARProjection

SAR product projection

Raises:

Type Description
InvalidTERRASARXProjection

Invalid TERRASAR-X product projection

polarization_list_from_metadata

Python
polarization_list_from_metadata(product_info_node: _Element) -> list[str]

get polarization list from productInfo metadata xml node

Parameters:

Name Type Description Default
product_info_node _Element

productInfo metadata xml node

required

Returns:

Type Description
list[str]

list of polarization layers

get_radiometric_quantity_from_metadata

Python
get_radiometric_quantity_from_metadata(root: _Element) -> SARRadiometricQuantity | None

Get SARRadiometricQuantity object from metadata

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required

Returns:

Type Description
SARRadiometricQuantity | None

SAR radiometric quantity object

generate_channels_names

Python
generate_channels_names(metadata: str | Path) -> list[str]

Generate list of channels names from metadata xml file

Parameters:

Name Type Description Default
metadata str | Path

path to metadata xml file

required

Returns:

Type Description
list[str]

list of channels names

generate_raster_paths

Python
generate_raster_paths(xml_path: str | Path) -> list[Path]

Generate raster paths from metadata xml file path

Parameters:

Name Type Description Default
xml_path str | Path

path to xml metadata file

required

Returns:

Type Description
list[Path]

paths of raster files

get_beams_list_from_metadata

Python
get_beams_list_from_metadata(product_info_node: _Element) -> list[str]

Generate list of beams identifiers from metadata

Parameters:

Name Type Description Default
product_info_node _Element

productInfo metadata xml node

required

Returns:

Type Description
list[str]

list of beams identifiers

calibration_factor_from_metadata

Python
calibration_factor_from_metadata(root: _Element, beam_id: str) -> float

get calibration factor from metadata xml file

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required
beam_id str

beam identifier string

required

Returns:

Type Description
float

calibration factor

swath_info_from_metadata

Python
swath_info_from_metadata(prod_variant: TERRASARXProductVariant, root: _Element, beam_id: str) -> SwathInfo

Creating a SwathInfo metadata object from metadata file.

Parameters:

Name Type Description Default
prod_variant TERRASARXProductVariant

TERRASAR-X product variant

required
root _Element

root metadata xml node

required
beam_id str

beam identifier string

required

Returns:

Type Description
SwathInfo

SwathInfo metadata object

state_vectors_from_metadata

Python
state_vectors_from_metadata(root: _Element) -> StateVectors

Generating StateVectors object directly from product metadata.

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required

Returns:

Type Description
StateVectors

orbit's state vectors dataclass

doppler_centroid_poly_from_metadata

Python
doppler_centroid_poly_from_metadata(root: _Element, beam_id: str) -> DopplerEvaluator

Creating a DopplerEvaluator doppler centroid polynomial wrapper from metadata.

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required
beam_id str

beam identifier string

required

Returns:

Type Description
DopplerEvaluator

DopplerEvaluator dataclass for Doppler Centroid polynomial

doppler_rate_poly_from_metadata

Python
doppler_rate_poly_from_metadata(root: _Element, beam_id: str, prod_variant: TERRASARXProductVariant) -> DopplerEvaluator

Creating a DopplerEvaluator doppler rate vector polynomial wrapper from metadata.

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required
beam_id str

beam identifier string

required
prod_variant TERRASARXProductVariant

TERRASAR-X product variant

required

Returns:

Type Description
DopplerEvaluator

DopplerEvaluator dataclass for Doppler Rate polynomial

coordinates_conversions_from_metadata

Python
coordinates_conversions_from_metadata(prod_variant: TERRASARXProductVariant, root: _Element, raster_info: RasterInfo, state_vectors: StateVectors, doppler_centroid_poly: DopplerEvaluator) -> CoordinatesConversions

Generating CoordinateConversions object from metadata

Parameters:

Name Type Description Default
prod_variant TERRASARXProductVariant

TERRASAR-X product variant

required
root _Element

root metadata xml node

required
raster_info RasterInfo

product raster info

required
state_vectors StateVectors

product state vectors

required
doppler_centroid_poly DopplerEvaluator

product doppler centroid evaluator

required

Returns:

Type Description
CoordinatesConversions

polynomial for coordinate conversion dataclass

is_terrasarx_product

Python
is_terrasarx_product(product: str | Path) -> bool

Check if input path corresponds to a valid TERRASAR-X product, basic version.

Conditions to be met for basic validity: - path is dir - GEOREF.xml file exists - product.html file exists - read basic info from product.html file

Parameters:

Name Type Description Default
product str | Path

path to the product to be checked

required

Returns:

Type Description
bool

True if it is a valid product, else False

attitude_data_from_metadata

Python
attitude_data_from_metadata(root: _Element) -> TERRASARXAttitude

Creating a TERRASARXAttitude metadata element from xml node

Parameters:

Name Type Description Default
root _Element

root metadata xml node

required

Returns:

Type Description
TERRASARXAttitude

TERRASAR-X attitude using quaternions