API
Angles
High-level computation of incidence, look, squint, and other angles from sensor trajectories.
Attributes
Classes
Functions:
compute_incidence_angles
compute_incidence_angles(trajectory: Trajectory, azimuth_time: PreciseDateTime | datetime64, range_times: float | NDArray[floating], look_direction: SensorLookDirection, geodetic_altitude: float | None = None, doppler_frequencies: float | NDArray[floating] | None = None, carrier_wavelength: float | None = None, *, radians: bool = True) -> float | npt.NDArray[np.floating]
Compute incidence angles in radians/degrees from sensor trajectory.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
trajectory
|
Trajectory
|
sensor trajectory |
required |
azimuth_time
|
PreciseDateTime | datetime64
|
azimuth time at which compute the incidence angles corresponding to the input range times |
required |
range_times
|
float | NDArray[floating]
|
range times where to compute the incidence angles, a float or a (N,) array |
required |
look_direction
|
SensorLookDirection
|
sensor looking side where to perform geocoding, "RIGHT" or "LEFT" |
required |
geodetic_altitude
|
float | None
|
the altitude over wgs84, if None is set to 0, by default None |
None
|
doppler_frequencies
|
float | NDArray[floating] | None
|
frequency_doppler_centroid value or set of values, one for each range time, if None is set to 0, by default None |
None
|
carrier_wavelength
|
float | None
|
carrier signal wavelength, if None is set to 1, by default None |
None
|
radians
|
bool
|
output angles are expressed in radians if this flag is set to True (default), if False are expressed in degrees |
True
|
Returns:
| Type | Description |
|---|---|
float | NDArray[floating]
|
incidence angles in radians/degrees corresponding to the input range times at the given azimuth time |
compute_look_angles
compute_look_angles(trajectory: Trajectory, azimuth_time: PreciseDateTime | datetime64, range_times: float | NDArray[floating], look_direction: SensorLookDirection, geodetic_altitude: float | None = None, doppler_frequencies: float | NDArray[floating] | None = None, carrier_wavelength: float | None = None, *, radians: bool = True) -> float | npt.NDArray[np.floating]
Compute look angles in radians/degrees from sensor trajectory.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
trajectory
|
Trajectory
|
sensor trajectory |
required |
azimuth_time
|
PreciseDateTime | datetime64
|
azimuth time at which compute the look a angles corresponding to the input range times |
required |
range_times
|
float | NDArray[floating]
|
range times where to compute the look angles, a float or a (N,) array |
required |
look_direction
|
SensorLookDirection
|
sensor looking side where to perform geocoding, "RIGHT" or "LEFT" |
required |
geodetic_altitude
|
float | None
|
the altitude over wgs84, if None is set to 0, by default None, |
None
|
doppler_frequencies
|
float | NDArray[floating] | None
|
doppler frequencies values, if None is set to 0, by default None |
None
|
carrier_wavelength
|
float | None
|
carrier signal wavelength, if None is set to 1, by default None |
None
|
radians
|
bool
|
output angles are expressed in radians if this flag is set to True (default), if False are expressed in degrees |
True
|
Returns:
| Type | Description |
|---|---|
float | NDArray[floating]
|
look angles in radians/degrees corresponding to the input range times at the given azimuth time |
Doppler
Computation of Doppler-related quantities.
Classes
Functions:
doppler_equation
doppler_equation(wavelength: float, pv_scalar: float | NDArray[floating], distance: float | NDArray[floating], doppler_frequency: float | NDArray[floating], sensor_velocity: NDArray[floating], los: NDArray[floating]) -> tuple[float | npt.NDArray[np.floating], npt.NDArray[np.floating]]
Doppler equation solver.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
wavelength
|
float
|
carrier signal wavelength |
required |
pv_scalar
|
(float | NDArray[floating],)
|
scalar product between sensor velocity and line of sight scalar or shape (N,) |
required |
distance
|
float
|
ground point - sensor position distance scalar or shape (N,) |
required |
doppler_frequency
|
float
|
doppler frequency scalar or shape (N,) |
required |
sensor_velocity
|
NDArray[floating]
|
sensor velocity (3,) or shape (N, 3) |
required |
los
|
NDArray[floating]
|
ground point - sensor position (3,) or shape (N, 3) |
required |
Returns:
| Type | Description |
|---|---|
float | NDArray[floating]
|
doppler equation solution scalar or shape (N,) |
NDArray[floating]
|
doppler equation gradient (3,) or shape (N, 3) |
doppler_equation_monostatic_residuals
doppler_equation_monostatic_residuals(ground_point: NDArray[floating], sensor_positions: NDArray[floating], sensor_velocities: NDArray[floating], doppler_frequency: float, wavelength: float) -> float | npt.NDArray[np.floating]
Evaluate SAR doppler equation residual, assuming monostatic approximation.
Doppler Equation
Doppler Equation Residual
where LOS is defined as the line of sight, a.k.a. the position difference between the ground point and the sensor positions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ground_point
|
NDArray[floating]
|
ground point in ECEF coordinates, with shape (3,) |
required |
sensor_positions
|
NDArray[floating]
|
sensor positions, with shape (3,) or (N, 3) |
required |
sensor_velocities
|
NDArray[floating]
|
sensor velocities, with shape (3,) or (N, 3) |
required |
doppler_frequency
|
float
|
frequency doppler centroid in Hz |
required |
wavelength
|
float
|
signal carrier wavelength in meters |
required |
Returns:
| Type | Description |
|---|---|
float | NDArray[floating]
|
doppler equation residual (Hz) for each input sensor position, scalar or (N,) |
doppler_equation_bistatic_residuals
doppler_equation_bistatic_residuals(sensor_pos_rx: NDArray[floating], sensor_pos_tx: NDArray[floating], sensor_vel_rx: NDArray[floating], sensor_vel_tx: NDArray[floating], ground_points: NDArray[floating], wavelength: float, doppler_frequency: float) -> float | npt.NDArray[np.floating]
Evaluate doppler equation residual for bistatic sensors.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sensor_pos_rx
|
NDArray[floating]
|
sensor rx position, (3,) or (N, 3) |
required |
sensor_pos_tx
|
NDArray[floating]
|
sensor tx position, (3,) or (N, 3) |
required |
sensor_vel_rx
|
NDArray[floating]
|
sensor rx velocity, (3,) or (N, 3) |
required |
sensor_vel_tx
|
NDArray[floating]
|
sensor tx velocity, (3,) or (N, 3) |
required |
ground_points
|
NDArray[floating]
|
ground points from direct geocoding solution, (3,) or (N, 3) |
required |
wavelength
|
float
|
carrier signal wavelength in meters |
required |
doppler_frequency
|
float
|
doppler frequency in Hz |
required |
Returns:
| Type | Description |
|---|---|
float | NDArray[floating]
|
doppler equation residual, scalar or (N,) |
get_geometric_doppler_centroid
get_geometric_doppler_centroid(sensor_positions: NDArray[floating], sensor_velocities: NDArray[floating], ground_points: NDArray[floating], wavelength: float) -> float
Compute doppler centroid (geometrically) from squint angle.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sensor_positions
|
NDArray[floating]
|
sensor positions array, in the form (3,) or (N, 3) |
required |
sensor_velocities
|
NDArray[floating]
|
sensor velocities array, in the form (3,) or (N, 3) |
required |
ground_points
|
NDArray[floating]
|
ground points array, in the form (3,) or (N, 3) |
required |
wavelength
|
int
|
carrier signal wavelength in meters |
required |
Returns:
| Type | Description |
|---|---|
float | NDArray[floating]
|
doppler centroid in Hz, scalar or with shape (N,) |
compute_theoretical_doppler_rate
compute_theoretical_doppler_rate(trajectory: Trajectory, azimuth_time: PreciseDateTime | datetime64, ground_points: NDArray[floating], carrier_frequency: float) -> float | npt.NDArray[np.floating]
Compute theoretical doppler rate.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
trajectory
|
Trajectory
|
sensor trajectory |
required |
azimuth_time
|
PreciseDateTime | datetime64
|
azimuth time when to evaluate the doppler rate |
required |
ground_points
|
NDArray[floating]
|
ground point coordinates, with shape (3,) or (N, 3) |
required |
carrier_frequency
|
float
|
signal carrier frequency in Hz |
required |
Returns:
| Type | Description |
|---|---|
float | NDArray[floating]
|
theoretical doppler rate in Hz/s, scalar or with shape (N,) if multiple ground points are provided |
compute_steering_doppler_frequency
compute_steering_doppler_frequency(trajectory: Trajectory, azimuth_time: PreciseDateTime | datetime64, az_mid_burst_time: PreciseDateTime | datetime64, doppler_rate: float, az_steering_rate: float, carrier_frequency: float) -> float
Compute doppler frequency related to the antenna electrical steering.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
trajectory
|
Trajectory
|
sensor trajectory |
required |
azimuth_time
|
PreciseDateTime | datetime64
|
azimuth time at which compute the steering frequency |
required |
az_mid_burst_time
|
PreciseDateTime | datetime64
|
azimuth mid burst time |
required |
doppler_rate
|
float
|
sensor doppler rate in Hz/s |
required |
az_steering_rate
|
float
|
azimuth steering rate in rad/s |
required |
carrier_frequency
|
float
|
signal carrier frequency |
required |
Returns:
| Type | Description |
|---|---|
float
|
steering doppler frequency in Hz |
Velocities
Computation of sensor velocity quantities.
Attributes
Classes
Functions:
compute_ground_velocity
compute_ground_velocity(trajectory: Trajectory, azimuth_time: PreciseDateTime | datetime64, look_angles_rad: NDArray[floating], reference_frame: ReferenceFrame = 'ZERODOPPLER', geodetic_altitude: float = 0, averaging_interval_relative_origin: float = 0, averaging_interval_duration: float = 1, averaging_interval_num_points: int = 11) -> npt.NDArray[np.floating] | float
Numerical computation of the ground velocity [m/s] at given look angles.
The algorithm is based on the direct geocoding, via look angles, of points at different azimuth times in a averaging interval.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
trajectory
|
Trajectory
|
sensor trajectory |
required |
azimuth_time
|
PreciseDateTime | datetime64
|
azimuth time at which compute the ground velocity |
required |
look_angles_rad
|
NDArray[floating]
|
look angles in radians, float or array with shape (N,) |
required |
reference_frame
|
('GEOCENTRIC', 'GEODETIC', 'ZERODOPPLER')
|
the reference frames in which the look angles are intended, by default "ZERODOPPLER" |
'ZERODOPPLER'
|
geodetic_altitude
|
float
|
altitude of the points over wgs84, by default 0 |
0
|
averaging_interval_relative_origin
|
float
|
averaging interval starts at time_point + averaging_interval_relative_origin, by default 0 |
0
|
averaging_interval_duration
|
float
|
total duration of the averaging interval, by default 1.0 |
1
|
averaging_interval_num_points
|
int
|
number of time points in the averaging interval, by default 11 |
11
|
Returns:
| Type | Description |
|---|---|
NDArray[floating] | float
|
ground velocity in m/s |