astra.debris module¶
ASTRA Core debris catalog filtering and statistics. Pre-propagation filtering of debris catalogs. ALL filtering in this module operates on DebrisObject parameters (derived TLE fields, NOT propagated positions). Filtering is O(N) and involves no SGP4 calls.
- astra.debris.make_debris_object(source)[source]¶
Build a DebrisObject from a SatelliteTLE or SatelliteOMM with derived elements. For TLE sources, elements are parsed directly from the raw TLE lines. For OMM sources, elements are read directly from the already-converted dataclass fields (no string parsing required).
- astra.debris.filter_altitude(objects, min_km, max_km)[source]¶
Retain only objects whose mean orbital altitude is within bounds. Also filters objects whose perigee is pathologically low (perigee < min_km * 0.9) to discard quickly-decaying objects. :param objects: List of DebrisObjects. :param min_km: Lower altitude bound (inclusive). :param max_km: Upper altitude bound (inclusive).
- Returns:
Filtered list of DebrisObjects.
- astra.debris.filter_region(objects, lat_min_deg, lat_max_deg, lon_min_deg=None, lon_max_deg=None)[source]¶
Retain objects whose ground track could pass through a bounding box. Uses a two-stage filter: Stage 1 - Latitude (inclination-based): An object with inclination i reaches latitudes up to
i(prograde) or180 - i(retrograde). Objects whose latitude band does not overlap[lat_min_deg, lat_max_deg]are excluded immediately. Stage 2 - Longitude (RAAN-based, if bounds are supplied): For short-period orbits (period < 1440 min / 24 h), Earth’s rotation causes the satellite’s ground track to sweep all longitudes within a day, so the longitude filter is vacuous and all Stage-1 survivors are kept. For long-period orbits (GEO / HEO / deep-space), the ascending node is anchored near RAAN for the duration of interest, so a window check around RAAN is applied with a margin equal to the longitude swept in half an orbital period. This remains an over-inclusive pre-filter. .. note:For hard longitude exclusion use ``propagate_trajectory()`` followed by manual geodetic post-filtering.
- Parameters:
objects – List of DebrisObjects.
lat_min_deg – Minimum latitude bound (degrees).
lat_max_deg – Maximum latitude bound (degrees).
lon_min_deg – Minimum longitude bound (degrees, -180 to +180).
Nonedisables longitude filtering entirely.lon_max_deg – Maximum longitude bound (degrees, -180 to +180).
Nonedisables longitude filtering entirely.
- Returns:
Filtered list of DebrisObjects.
- Example::
# Retain objects that could pass over India (lat 8-37, lon 68-97) filtered = filter_region(
objects, lat_min_deg=8.0, lat_max_deg=37.0, lon_min_deg=68.0, lon_max_deg=97.0,
)
- astra.debris.filter_time_window(objects, t_start_jd, t_end_jd)[source]¶
Eliminate objects whose TLE epoch is too stale for predictions. :param objects: List of DebrisObjects. :param t_start_jd: Window start as Julian Date. :param t_end_jd: Window end as Julian Date.
- Returns:
Filtered list of DebrisObjects.