Ephemeris¶
Orbital position calculation for satellites.
EphemerisCalculator ¶
EphemerisCalculator(
facility: Facility, datetimes: NDArray[object_]
)
Bases: ABC
Computes satellite positions relative to a ground facility.
Implementations use a specific physics engine (e.g. Skyfield/SGP4) to calculate satellite visibility windows and trajectories.
Initializes the calculator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
facility
|
Facility
|
The location observing the satellites. |
required |
datetimes
|
NDArray[object_]
|
A sorted NumPy array of UTC datetime objects representing the simulation master grid. |
required |
Source code in src/sopp/ephemeris/base.py
Functions¶
calculate_visibility_windows
abstractmethod
¶
calculate_visibility_windows(
satellite: Satellite,
min_altitude: float,
start_time: datetime,
end_time: datetime,
) -> list[TimeWindow]
Calculates TimeWindows for Rise/Set events (where alt > min_alt).
Source code in src/sopp/ephemeris/base.py
calculate_trajectory
abstractmethod
¶
calculate_trajectory(
satellite: Satellite, start: datetime, end: datetime
) -> SatelliteTrajectory
Calculates the continuous path for a single time window (Vector).
calculate_trajectories
abstractmethod
¶
calculate_trajectories(
satellite: Satellite, windows: list[TimeWindow]
) -> list[SatelliteTrajectory]
Calculates paths for multiple disjoint windows in one batch operation.
calculate_position
abstractmethod
¶
SkyfieldEphemerisCalculator ¶
SkyfieldEphemerisCalculator(
facility: Facility, datetimes: list[datetime] | ndarray
)
Bases: EphemerisCalculator
Ephemeris calculator using Skyfield and SGP4 propagation.
Pre-computes Earth rotation matrices on a master time grid and injects cached values into subset time objects to avoid redundant calculations across multiple satellites.
Source code in src/sopp/ephemeris/skyfield.py
Functions¶
calculate_visibility_windows ¶
calculate_visibility_windows(
satellite: Satellite,
min_altitude: float,
start_time: datetime,
end_time: datetime,
) -> list[TimeWindow]
Calculates Rise/Set/Culminate events.
Source code in src/sopp/ephemeris/skyfield.py
calculate_position ¶
Retrieves the position for a single specific time.