from pathlib import Path
import brahe as bh
bh.initialize_eop()
client = bh.celestrak.CelestrakClient()
gp_records = client.get_gp(group="gps-ops")
propagators = [rec.to_sgp_propagator(step_size=60.0) for rec in gp_records]
for prop in propagators:
orbital_period = bh.orbital_period(prop.semi_major_axis)
prop.propagate_to(prop.epoch + orbital_period)
fig = bh.plot_trajectory_3d(
[
{
"trajectory": prop.trajectory,
"mode": "markers",
"size": 2,
"label": prop.get_name(),
}
for prop in propagators
],
units="km",
show_earth=True,
earth_texture="natural_earth_50m",
backend="plotly",
view_azimuth=45.0,
view_elevation=30.0,
view_distance=2.4,
)
fig.update_layout(
scene=dict(
xaxis=dict(
showbackground=False, gridcolor="lightgray", zerolinecolor="lightgray"
),
yaxis=dict(
showbackground=False, gridcolor="lightgray", zerolinecolor="lightgray"
),
zaxis=dict(
showbackground=False, gridcolor="lightgray", zerolinecolor="lightgray"
),
)
)
fig.update_layout(showlegend=False)
fig.update_layout(title_text="")
fig.write_image(Path(__file__).parent / "gps_satellites.svg")
fig.write_image(Path(__file__).parent / "gps_satellites.pdf")