Skip to content

TAT-C v3.5.0

Choose a tag to compare

@ptgrogan ptgrogan released this 13 Aug 17:47
· 161 commits to main since this release
373710d

What's Changed

Major refactoring that focused on completing unit tests to approach full code coverage. Drops support for Python < 3.10 to improve compatibility with modern libraries. Replaces the TwoLineElements schema with GeneralPerturbationsOrbit to support modern orbit specifications including OMM CSV and JSON. Drops the CRS-based buffering approach to determine ground track in favor of geometric projections using the SPICE library. During refactoring, a few bug fixes and breaking changes were also made.

Added:

  • Added GeosynchronousOrbit orbit schema.
  • Support for Python 3.14.

Changed:

  • Changed the default orbit epoch from datetime.now() to 2020-01-01T00:00:00Z.
  • Refactored all orbit schemas to inherit uniform getters from OrbitBase.
  • Replaced TwoLineElements with a more general GeneralPerturbationsOrbit to accommodate post-TLE GP data formats.
  • Improved TundraOrbit and MolniyaOrbit schemas to consider J2 perturbations when calculating orbit period.
  • Fixed a bug where SPICE projected instrument footprints around the geocentric, rather than geodetic, pointing vector, leading to ~2 km positioning errors.
  • Fixed TrainConstellation member right ascension of ascending node spacing to be based on a sidereal day, rather than a solar day.
  • Fixed SOCConstellation member generation to use hexagonal spacing with a non-zero relative_spacing value.
  • Fixed MOGConstellation member generation to use the mean anomaly of the reference orbit.
  • Fixed a bug in config.py where default configurations (defaults.yml) were never provided in wheels.
  • Fixed collect_orbit_track to only assign the EPSG:4326 CRS to output when requesting WGS84 coordinates, rather than for all coordinate systems.
  • Fixed collect_orbit_track to use a proper East/North/Up velocity when requesting WGS84 coordinates.
  • Improved collect_observations to use the apogee altitude, rather than the initial altitude, to determine the maximum access duration.
  • Fixed a bug where collect_multi_observations could crash on an empty satellite list.
  • Fixed a bug in grid_observations and grid_latencies where spatial aggregation never actually worked.
  • Fixed a bug in compute_dop where the latitude and longitude were reversed in output geometry.
  • Improved compute_dop to use the nearest GP element to each time rather than the first one specified for an orbit.
  • Fixed the definition of binormal unit vector in ro_coverage.py to accommodate eccentric orbits.
  • Improved collect_ro_observations to interpolate among samples closest to target elevation.
  • Improved performance of collect_ro_observations through vectorized profile sampling, a more direct interface to Skyfield for orbit track computation, and making tangent point velocity calculation optional.
  • Fixed a bug where collect_ro_observations could use incorrect inertial positions for repeat track orbits more than 1 cycle after epoch.
  • Added utility methods: compute_apoapsis_radius and geodesic_distance.
  • Requires setuptools >= 77.0.0 and switches project.license to an SPDX expression string to resolve a build metadata deprecation warning (issue #124).

Removed

  • Support for Python < 3.10.
  • Removed the TwoLineElements orbit schema.
  • Removed the legacy crs and method parameters from collect_ground_track and compute_ground_track; all instrument projection now uses the SPICE library.

Full Changelog: v3.4.10...v3.5.0