HorizonsEphemerisData-spec-WL

HorizonsEphemerisData

Import ephemeris data from the Jet Propulsion Laboratory Horizons System

Spec

Usage

HorizonsEphemerisData[etype, query, properties] queries Horizons System and gives the values of the properties for the given query and ephemeris type etype.

Details & Options

  • HorizonsEphemerisData retrieves data from Horizons System using Horizons API.

  • Horizons System has ephemerides of planets, natural satellites, spacecrafts, asteroids, comets and several dynamical points.

  • The parameter etype can take one of the following values: "State", "OrbitalElements" and "Observer". Each ephemeris type has its own query parameters and properties.

  • Queries can be specified in the following forms:

FormMeaning
targetquery with target specified with default parameter values
{target, <| "Subscript[param, 1]"->Subscript[val, 1], "Subscript[param, 1]"->Subscript[val, 2], ... |>}query with detailed parameters specified
<| "Target"->target, "Subscript[param, 1]"->Subscript[val, 1], "Subscript[param, 1]"->Subscript[val, 2], ... |>query with detailed parameters specified
  • The valid "param " parameters for query of a given etype can be obtained by evaluating HorizonsEphemerisData[etype, "QueryParameters"]. i

  • The properties available for a given etype can be obtained by evaluating HorizonsEphemerisData[etype, "Properties"].

  • The following are query parameters of the "State" ephemeris type:

ValueDefaultMeaning
"Center"Solar System Barycentercenter of the reference frame and reference place to apply corrections
"Dates"Nowdates used in the ephemeris output
"Frame""ICRF"frame used in the ephemeris output. Can take the values: "ICRF", "FK4", "EclipticJ2000", "EclipticB1950" and "CenterBodyEquator"
"Corrections"Nonecorrections applied. Can take the values: None, "LightTime" and "LightTime+StellarAberration"
  • Not all the properties of the "State" ephemeris type can be obtained in one call.

  • Following the query parameters of the "OrbitalElements" ephemeris type:

FieldValueDescription
CenterSolar System Barycentercenter of the reference frame.
DatesNowdates used in the ephemeris output.
FrameICRFframe used in the ephemeris output. Can take the values: ICRF, FK4, EclipticJ2000, EclipticB1950, and CenterBodyEquator.
  • Following the query parameters of the "Observer" ephemeris type:

FieldValueDescription
CenterHerecenter of observation.
DatesNowdates used in the ephemeris output.
EarthAtmosphericRefractionFalsewhether or not apply corrections due to the Earth's atmosphere.
SkipDayFalsewhether or not skip dates during the day in the output.
RiseTransitSetOnlyFalsereturn ephemeris data only when rise, transit or set is happening.
MinElevation-90return ephemeris data only when the target elevation is higher than the value specified in degrees.
MaxRelativeAirmass38return ephemeris data only when relative airmass is less than the specified value.
MinMaxSolarElongation{0,180}return ephemeris data only when the target's solar elongation angle is inside the limits specified in degrees.
MaxAngularRateInfinityreturn ephemeris data only when the target's angular rate is less than the value specified in "Arcseconds"/"Hours". The value can be a Quantity too.
  • The target and the parameter "Center" can be specified as Entity, GeoPosition or String. Entity can be an object in the solar system. Also, entities of the type "SolarSystemFeature" are supported. GeoPosition can be a position on Earth or other object of the solar system. String can be an Horizon's id used to identify an object of the solar system, two-line element set (TLE) or a keyword.

  • The ephemeris of an object defined by a TLE can be extrapolated only 14 days before and after the data.

  • The query parameter "Dates" can be specified as a single DateObject, a List of DateObjects or with the syntax {StartDate, EndDate, increment}. To get the ephemeris of a big list of dates use the syntax {StartDate, EndDate, increment}.

  • The following modifiers can be used in HorizonsEphemerisData[etype, query, properties, "modifier"]:

FieldDescription
Associationa nested association with dates as keys on the first level and properties as keys on the second level
Dataseta dataset containing the same structure of the "Association" modifier

Examples

Basic Examples

Get the Cartesian position of Mars with default parameters:

HorizonsEphemerisData["State", Entity["Planet", "Mars"], "Position"]

Get the position of Mars for a specific date:

HorizonsEphemerisData["State", {Entity["Planet", "Mars"], <|"Dates" -> Now + Quantity[12, "Hours"]|>}, "Position"]

Define a location on Earth:

pos = Entity["City", {"Riobamba", "Chimborazo", "Ecuador"}]["Position"];

Get the azimuth and elevation of the Tycho crater as seen from Riobamba city for the next 12 hours:

HorizonsEphemerisData["Observer", <|
  "Target" -> Entity["SolarSystemFeature", "TychoMoon"], 
  "Center" -> pos, 
  "Dates" -> {Now, Now + Quantity[12, "Hours"], 
    Quantity[10, "Minutes"]}|>, All, "Dataset"]

Get the orbital elements of Saturn's moon Pandora for a specific list of dates:

HorizonsEphemerisData["OrbitalElements", {Entity["PlanetaryMoon", 
   "Pandora"], <|"Center" -> Entity["Planet", "Saturn"], 
   "Dates" -> {DateObject[{2000, 1, 10, 0, 0, 0}, "Instant", "Gregorian", 0.`], 
     DateObject[{2000, 1, 11, 0, 0, 0}, "Instant", "Gregorian", 0.`]}|>}, All, "Association"]

Scope

Define a location on Mars:

pos = GeoPosition[{-4.5, -137.4}, Entity["Planet", "Mars"]];

Get all the properties of the "Observer" ephemeris type for this location on Mars seen from a location in Earth, applying corrections due to atmospheric refraction and skipping the dates when it is day:

HorizonsEphemerisData["Observer", {pos, <|"Center" -> Here, 
   "EarthAtmosphericRefraction" -> True, "SkipDay" -> True, 
   "Dates" -> {Now, Now + Quantity[24, "Hours"], Quantity[1, "Hours"]}|>}, All, "Dataset"]

Define a TLE:

tle = "1 11416U 79057A   04363.14000343  .00000107  00000-0  56512-4 0  5663
2 11416  98.5474  30.2466 0011085  51.8150 308.4039 14.31601235328172
1 11416U 79057A   04363.62924579  .00000108  00000-0  56923-4 0  5681
2 11416  98.5473  30.7281 0011072  50.5542 309.6625 14.31601418328243
1 11416U 79057A   04364.67762161  .00000130  00000-0  65019-4 0  5674
2 11416  98.5470  31.7599 0011009  47.6294 312.5820 14.31602047328399
1 11416U 79057A   04365.65610603  .00000127  00000-0  64027-4 0  5704
2 11416  98.5468  32.7230 0010941  45.1722 315.0344 14.31602333328535
1 11416U 79057A   04366.42491512  .00000132  00000-0  65727-4 0  5687
2 11416  98.5467  33.4797 0010912  43.1795 317.0244 14.31602636328645
1 11416U 79057A   04366.70448198  .00000129  00000-0  64650-4 0  5691
2 11416  98.5464  33.7545 0010857  42.9225 317.2802 14.31602697328682";

Get the position of the object defined by this TLE seen from the ISS. The Horizons ID of the ISS is -125544 (see Possible Issues section). The character "@" means the center of the object in the Horizons System:

HorizonsEphemerisData["State", {tle, <|"Center" -> "@-125544", "Dates" -> {DateObject[{2005, 1, 9}], DateObject[{2005, 1, 10}], Quantity[1, "Hours"]}, "Frame" -> "ICRF", "Corrections" -> None|>}, "Position", "Dataset"]

Possible Issues

When several objects in the Horizons System match the target specification, a Dataset is returned:

HorizonsEphemerisData["State", "ISS", All]
 ResourceFunction::usermessage: HorizonsEphemerisData::multipletargets: Target specification match several objects in Horizons system. Choose an ID from the table bellow.

Use the ID to uniquely identify the object:

HorizonsEphemerisData["State", "-125544", All]
Out[] = {{DateObject[{2022, 6, 21, 21, 10, 54.646}, "Instant", "Gregorian", 0., "TDB"], Quantity[3445.12, "Kilometers"], 
  Quantity[-2526.58, "Kilometers"], Quantity[-8968.02, "Kilometers"], 
  Quantity[6.01083, ("Kilometers")/("Seconds")], 
  Quantity[-1.85033, ("Kilometers")/("Seconds")], 
  Quantity[3.96331, ("Kilometers")/("Seconds")], 
  Quantity[9933.67, "Kilometers"], 
  Quantity[-1.02278, ("Kilometers")/("Seconds")], 
  Quantity[0.0331352, "Seconds"]}}

Neat Examples

Get the trajectory of the Cassini spacecraft around Saturn (the Horizons ID of Cassini is -82):

cassini =
HorizonsEphemerisData[
"State", {"-82", <|"Center" -> Entity["Planet", "Saturn"],
"Dates" -> {DateObject[{1997, 10, 16, 0, 0, 0.`}, "Instant", "Gregorian", 0.`],
DateObject[{2017, 9, 15, 0, 0, 4.`}, "Instant", "Gregorian", 0.`], Quantity[1, "Days"]}|>}, "Position"];

Plot the fly of Cassini:

ListLinePlot3D[{cassini[[All, 2 ;;]]}, BoxRatios -> Automatic, PlotRange -> All, PlotStyle -> {Opacity[0.1, Blue]}, PlotRange -> All]

Source & Additional Information

Contributed By

Truman Tapia

Keywords

  • JPL

  • jet propulsion lab

  • Astronomy

  • Ephemeris

  • Ephemerides

  • Horizons

  • astronomical data

  • solar system

  • planet

  • spacecraft

Categories

  • External Interfaces & Connections

  • Scientific and Medical Data & Computation

  • Time-Related Computation

Related Symbols

  • MinorPlanetData

  • PlanetData

  • PlanetaryMoonData

  • CometData

Related Resource Objects

  • SIMBADData

  • VizierCatalogData

  • DeepSpaceNetData

  • AstroAngularDistance

Source/Reference Citation

Giorgini, J.D., JPL Solar System Dynamics Group, "NASA/JPL Horizons On-Line Ephemeris System." https://ssd.jpl.nasa.gov/horizons. Data retrieved 2022-04-16.

Giorgini, J. D., Chodas, P.W., Yeomans, D.K., "Orbit Uncertainty and Close-Approach Analysis Capabilities of the Horizons On-Line Ephemeris System." 33rd AAS/DPS meeting in New Orleans, LA, Nov 26, 2001--Dec 01, 2001.

Giorgini, J. D, Yeomans, D.K., "On-Line System Provides Accurate Ephemeris and Related Data." NASA Tech Briefs, NPO-20416, p. 48, 1999.

Giorgini, J.D., Yeomans, D.K., Chamberlin, A.B., Chodas, P.W., Jacobson, R.A., Keesey, M.S., Lieske, J.H., Ostro, S.J., Standish, E.M., Wimberly, R.N., "JPL's On-Line Solar System Data Service." Bulletin of the American Astronomical Society, Vol 28, No. 3, p. 1158, 1996.

Links

WWW::HorizonsEphemerisSystem v0.0.2

Raku package for accessing Jet Propulsion Laboratory Horizons Ephemeris System by its API.

Authors

    License

    MIT

    Dependencies

    HTTP::TinyJSON::Fast:ver<0.19+>Hash::Merge:ver<2.0.0>:api<2>

    Test Dependencies

    Provides

    • WWW::HorizonsEphemerisSystem
    • WWW::HorizonsEphemerisSystem::Client

    The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.