libera_utils.footprint_matching.types.RadiometerFootprint#
- class libera_utils.footprint_matching.types.RadiometerFootprint(bbox: BoundingBox | None, time: datetime64, latitude: float, longitude: float, viewing_zenith_angle: float, subsatellite_latitude: float, subsatellite_longitude: float, satellite_radius_km: float, cone_angle_rate: float | None = None, off_limb: bool = False)#
Bases:
objectOne radiometer-timescale footprint, ready for external-variable aggregation.
The radiometer-timescale FMATCH modes take their footprints straight from the L1B Daily radiometer product. This is the minimal object the aggregation path needs: a geographic bounding box (the region the readers serve ancillary samples from) plus the boresight geolocation and viewing zenith the PSF weighting reads. It is the radiometer-path analog of the camera path’s
PseudoFootprint, kept deliberately small so it stays dependency-free here.The subsatellite point and satellite radius are required: L1B RAD populates them from the ephemeris for every record, and together with the boresight they fix the satellite viewing frame the ray-traced bounding box (
compute_footprint_bounding_box()) and the PSF weighting are built on.- Variables:
bbox (BoundingBox or None) – Geographic box enclosing the footprint’s PSF ground contour, or
Noneexactly whenoff_limb(an off-Earth view has no ground contour).time (np.datetime64) – Radiometer observation time (L1B
RADIOMETER_TIME). The readers’ time selection (TimeMatch) matches ancillary samples to it.latitude (float) – Boresight centroid latitude (L1B
Latitude), degrees.longitude (float) – Boresight centroid longitude (L1B
Longitude), degrees.viewing_zenith_angle (float) – Viewing zenith angle (L1B
Viewing_Zenith_Surface), degrees.subsatellite_latitude (float) – Geodetic sub-point latitude of the spacecraft (L1B
Subsatellite_Latitude), degrees.subsatellite_longitude (float) – Geodetic sub-point longitude of the spacecraft (L1B
Subsatellite_Longitude), degrees.satellite_radius_km (float) – Spacecraft distance from Earth’s center (L1B
Radius_of_Satellite_from_Center_of_Earth), km. Not L1BAltitude, which is the height of the boresight’s ellipsoid intersection.cone_angle_rate (float or None) – Instrument cone-angle rate (L1B
Cone_Angle_Rate), degrees per second: negative toward nadir, positive away, 0 when the scanner is stationary.Nonewhen unavailable. TODO[LIBSDC-884]: adopt libera_rad PR #34’s (LIBSDC-739) definition and fill convention once it merges, and handle a footprint with no usable rate in one stated way: kept, weighted direction-independently, and QA-flagged.off_limb (bool) –
Truefor a space / calibration view whose centroid is off the Earth’s limb, i.e. one with no Earth footprint (OffLimbError).bboxis thenNone; the aggregation path skips these records (fill values, zero coverage) and flags themOFF_LIMB.
- Raises:
ValueError – If
bboxisNonewhileoff_limbisFalse, or abboxis given whileoff_limbisTrue.
- __init__(bbox: BoundingBox | None, time: datetime64, latitude: float, longitude: float, viewing_zenith_angle: float, subsatellite_latitude: float, subsatellite_longitude: float, satellite_radius_km: float, cone_angle_rate: float | None = None, off_limb: bool = False) None#
Attributes