libera_utils.footprint_matching.geometry.compute_viewing_frames#
- libera_utils.footprint_matching.geometry.compute_viewing_frames(boresight_lat_deg: ArrayLike, boresight_lon_deg: ArrayLike, subsatellite_lat_deg: ArrayLike, subsatellite_lon_deg: ArrayLike, *, satellite_radius_km: ndarray) ViewingFrame#
Build every footprint’s viewing frame in one batched call.
Uses the same viewing geometry and scan-plane axes as the bounding box, so the angles
project_to_angular()reads off a frame are consistent with the box. Off-Earth views have no frame: drop them (e.g. theNoneentries ofcompute_footprint_bounding_boxes()) before calling.- Parameters:
boresight_lat_deg (array_like) – Per-footprint boresight centroids, degrees.
boresight_lon_deg (array_like) – Per-footprint boresight centroids, degrees.
subsatellite_lat_deg (array_like) – Per-footprint geodetic spacecraft sub-points (L1B
Subsatellite_Latitude/Subsatellite_Longitude), degrees.subsatellite_lon_deg (array_like) – Per-footprint geodetic spacecraft sub-points (L1B
Subsatellite_Latitude/Subsatellite_Longitude), degrees.satellite_radius_km (np.ndarray) – 1-D array of each footprint’s spacecraft distance from Earth’s center (L1B
Radius_of_Satellite_from_Center_of_Earth), km, one per footprint.
- Returns:
The
Nbatched frames.- Return type:
- Raises:
ValueError – If an input is more than 1-D, the inputs do not share a length, or
satellite_radius_kmdoes not hold one radius per footprint.MissingGeolocationError – If any footprint’s ephemeris fields are unusable or the footprint is not visible from its satellite.
OffLimbError – If any boresight latitude or longitude is fill, non-finite or out of range (an off-Earth view).