Main pipeline for computing celestial body positions from a given location and time.
The pipeline processes in stages:
- Intent validation
- Astronomical time conversion (shared context)
- Earth orientation (shared context)
- Observer position (shared context)
- Per-body: solar system positions, line of sight, sky positions
- Per-body: motion (optional)
- Manifest packaging
Per-body stages can run in parallel for improved performance when computing multiple targets.
Summary
Functions
Compute sky positions for celestial bodies from a given location and time.
Functions
Compute sky positions for celestial bodies from a given location and time.
Returns {:ok, %EphCore.SnapshotPipeline.Observation{}}, or
{:error, %Ecto.Changeset{}} if the request fails validation in
EphCore.SnapshotPipeline.Intent.
Options
Each option below is a map; omitted sub-keys keep their defaults.
:models—:delta_t(:iers:approximate),:earth_orientation( :gmst:gast),:earth(:wgs84),:ecliptic_frame(
:true_of_date|:mean_of_date|:j2000).:corrections—:light_timeand:aberration(bothfalseby default). Setting both enables the apparent-geocentric path, which addsapparent_geocentric_*fields to each body.:precession_nutationis a legacy flag; nutation is always applied for date-based ecliptic frames.:motion—:enabled(defaulttrue) and:dt_minutes(default30), the half-window for the central-difference longitude rate.:geometry—:ring_samples(default24,0to skip) for the celestial-sphere ring arcs.:parallel— force per-body parallelism on or off. Defaults totruewhen at least 3 bodies are requested.
Examples
# Topocentric geometric (default)
{:ok, observation} = observe(datetime, location, [:sun, :moon])
# Apparent geocentric, matching published almanac positions
{:ok, observation} =
observe(datetime, location, [:neptune],
corrections: %{aberration: true, light_time: true}
)