Skip to Content
ReferenceCLIplatform-access

orbitforge platform-access

Synopsis

orbitforge platform-access --constellation <PATH> --platform <PATH> [OPTIONS]

Description

Computes access from a platform to every satellite in a constellation. The platform can be stationary, in which case this is ordinary ground-station analysis, or it can move along a timed path, which is what distinguishes this command from coverage.

Moving platforms matter because the access geometry changes for two reasons at once: the satellites move, and so does the user. An aircraft crossing an ocean passes through the coverage of different planes as it goes.

Options

ParameterTypeUnitDefaultRequiredDescription
--constellationpathn/a—YesPath to a constellation JSON file.
--platformpathn/a—YesPlatform JSON with a `fixed` or `geodetic_waypoints` trajectory. See below.
--startstringRFC 3339 UTC2026-01-01T00:00:00ZNoScenario start epoch. Waypoint offsets are measured from this.
--duration-hoursfloath6NoAnalysis window length.
--step-secondsfloats60NoTime step.
--modelenumn/atwo-bodyNoPropagation model.

Platform schema

Fixed site

{ "id": "madrid", "name": "Madrid ground station", "min_elevation_deg": 10.0, "trajectory": { "fixed": { "lat_deg": 40.43, "lon_deg": -3.7, "alt_km": 0.6 } } }

Moving platform

{ "id": "flight-1", "name": "Transatlantic flight", "min_elevation_deg": 10.0, "trajectory": { "geodetic_waypoints": { "waypoints": [ { "t_offset_s": 0, "lat_deg": 51.47, "lon_deg": -0.45, "alt_km": 11.0 }, { "t_offset_s": 10800, "lat_deg": 50.0, "lon_deg": -30.0, "alt_km": 11.0 }, { "t_offset_s": 21600, "lat_deg": 40.64, "lon_deg": -73.78, "alt_km": 11.0 } ] } } }
FieldUnitNote
t_offset_ssElapsed seconds from the scenario start, strictly increasing
lat_deg, lon_degdegGeodetic position; longitude positive east
alt_kmkmHeight above the WGS84 ellipsoid
min_elevation_degdegAccess mask, defaulting to 10

At least two waypoints are required. The platform moves along great-circle legs between them, interpolating position at each time step.

Implied leg speeds are sanity-checked. A pair of waypoints implying an unreasonable ground speed is rejected rather than silently accepted, which catches the common error of a mistyped t_offset_s.

Worked example

A London to New York flight at 11 km, over six hours:

orbitforge platform-access \ --constellation demo.json \ --platform aircraft.json \ --duration-hours 6 --step-seconds 60
Platform `Transatlantic flight`: 60 satellites analyzed over 6.0 h, 76 passes above 10 deg. demo-s0-p00-sat00: 4 passes, visible 8.9%, best peak elevation 87.6 deg demo-s0-p00-sat01: 4 passes, visible 8.6%, best peak elevation 80.5 deg demo-s0-p00-sat02: 4 passes, visible 8.9%, best peak elevation 72.8 deg demo-s0-p00-sat03: 4 passes, visible 6.9%, best peak elevation 82.0 deg demo-s0-p00-sat04: 3 passes, visible 6.4%, best peak elevation 83.7 deg

Output elided; one line per satellite.

Reading the output

FigureExampleMeaning
Total passes76Distinct access intervals across the whole constellation
Passes per satellite3 to 4How many times each satellite rose above the mask
Visible8.9 percentFraction of the window this satellite was accessible
Best peak elevation87.6 degHighest elevation reached on its best pass

Peak elevation is the useful number

An 87.6-degree peak is almost directly overhead, which is the best possible geometry: shortest slant range, least atmosphere, highest margin. A pass peaking at 15 degrees is a contact in name only, because the link is at its worst throughout.

Sorting satellites by peak elevation rather than by visible fraction tells you which contacts are worth scheduling. Two satellites with identical visible percentages can differ by several decibels of achievable margin.

Individual satellites are not the answer

Each satellite is visible only 6 to 9 percent of the window, which sounds poor until you notice there are 60 of them and 76 passes in total. What matters for a user is whether some satellite is available, not whether a particular one is.

This command reports per-satellite access. It does not report whether the platform had continuous service, which is the question a broadband user cares about. For that, examine overlap between passes: gaps in the union of all access intervals are the outages.

The coverage command answers the union question directly for fixed grids, but does not accept a moving platform.

Fixed sites

With a fixed trajectory this is ordinary ground-station access analysis, and it is the right command when you want per-satellite pass detail rather than the aggregate statistics coverage reports.

Use it to answer scheduling questions: which satellites see this site, how often, and at what geometry.

Step size and short passes

At 60 seconds, a pass shorter than a minute may be missed and every pass boundary carries up to a minute of error. Low Earth orbit passes at a high elevation mask can be only a few minutes long, so reduce the step when pass timing matters.

See also

  • coverage for aggregate statistics over a fixed grid.
  • link for whether these contacts close.
Question? Give us feedbackDocuments Varaha Constellation Designer main (pre-release)
Last updated on