JPL HORIZONS

From Stellarium Wiki
Revision as of 23:11, 16 November 2007 by Mina (Talk | contribs)
Jump to: navigation, search

The JPL HORIZIONS on-line solar system data and ephemeris computation service provides access to key solar system data and flexible production of highly accurate ephemerides for solar system objects ( 392026 asteroids, 2450 comets, 168 planetary satellites, 9 planets, the Sun, L1, L2, select spacecraft, and system barycenters ). HORIZONS is provided by the Solar System Dynamics Group of the Jet Propulsion Laboratory.

The HORIZONS system can be accessed using any of the following methods:

Complete documentation

How to manually look up a body

  • 1. Use the HORIZONS web interface. You're going to look up the body you are interested in and copy down its ephemeris. The HORIZONS web interface will display something like this.
   Ephemeris Type [change] : ELEMENTS
   Target Body [change]    : Comet C/2007 F1 (LONEOS)
   Center [change]         : Sun (body center) [500@10]
   Time Span [change]      : discrete time(s)=2007-11-13
   Table Settings [change] : defaults
   Display/Output [change] : default (formatted HTML)
  • 2. Ephemeris Type must be set to ELEMENTS.
  • 3. Target Body is the body you want to add to Stellarium. Click "change" to look it up.
  • 4. Center should be set to the sun for all heliocentric trajectories.
  • 5. Time Span should be DISCRETE. Click "change", then at the next page click "switch to discrete-times form." Enter an appropriate calendar date. We'll use this date as the body's epoch in Stellarium.
  • 6. Display/Output can be whatever format you prefer. You can copy/paste directly from a web browser, or have HORIZONS feed you a comma separated value (CSV) file.

How to manually add ephemerides to ssystem.ini

  • 1. Let's assume you looked up comet C/2007 F1, as in the example above. Click "calculate" and HORIZONS will give you two pieces of information: an object data page and the results.
  • 2. Look at the epoch listed in the object data page. Is it close to the current date? You could, optionally, use this epoch in Stellarium with minimal loss in accuracy. Generally, however, it's better to let HORIZONS do the grunt work for you, so you should go with an epoch that is close to the time you will be observing. The elements provided in the results page have been propagated forward using all kinds of fancy perturbations, and will give you a more accurate location for the date you specified. If you use the elements at the original object data page epoch, Stellarium (not HORIZONS) will propagate the traj using simple 2-body dynamics.
  • 3. Assuming you are interested in accurate elements for the date you provided, look now to the data in the results section between $$SOE and $$EOE. It will look like this,
   $$SOE
   2454417.500000000 = A.D. 2007-Nov-13 00:00:00.0000 (CT)
   EC= 1.000096354112455E+00 QR= 4.023859338803358E-01 IN= 1.160846111299305E+02
   OM= 1.728882311801781E+02 W = 1.537105864337799E+02 Tp=  2454402.260081015527
   N = 3.652121949161325E-06 MA= 5.565804262682414E-05 TA= 6.517348135483358E+01
   A =-4.176115825535804E+03 AD= 6.684586454211886E+91 PR= 1.157407291666667E+95
   $$EOE

Refer also to the explanation of the variables. Stellarium and HORIZONS both use units of degrees, days and AU, so conversion is not necessary.

   Symbol meaning [1 AU=149597870.691 km, 1 day=86400.0 s]:
   JDCT     Epoch Julian Date, Coordinate Time
     EC     Eccentricity, e                                                   
     QR     Periapsis distance, q (AU)                                        
     IN     Inclination w.r.t xy-plane, i (degrees)                           
     OM     Longitude of Ascending Node, OMEGA, (degrees)                     
     W      Argument of Perifocus, w (degrees)                                
     Tp     Time of periapsis (Julian day number)                             
     N      Mean motion, n (degrees/day)                                      
     MA     Mean anomaly, M (degrees)                                         
     TA     True anomaly, nu (degrees)                                        
     A      Semi-major axis, a (AU)                                           
     AD     Apoapsis distance (AU)                                            
     PR     Orbital period (day)
  • 4. Now it's time edit ssystem.ini Scroll to the bottom of the file and add a new body. A complete example entry is shown below at the end of this article.
  • 5. Next, choose which element format you wish to use. Stellarium supports two trajectory formats, specified by coord_func in ssytem.ini. If eccentricity is greater than 1 (EC > 1), the trajectory is hyperbolic and you MUST use comet_orbit. Elliptical trajectories can use either comet_orbit or ell_orbit. Note that comet_orbit is new in Stellarium 0.9.0. Big thanks to Johannes Gajdosik this info on comet_orbit and ell_orbit!
  • 6. Pick appropriate physical characteristics for the new body: radius, oblateness, albedo, lighting, halo, color, tex_halo, tex_map, etc. There's currently no support for comet comas and tails, so for this example we'll fake it and say that Comet C/2007 F1 has a radius of 1000 km and an albedo of 0.8. In reality the comet is much smaller, but in order to make it appear bright we'll fudge the numbers a bit. Look at the other bodies in ssystem.ini for other parameters you can adjust.
  • 7. Fill in the rest of the orbital elements. We've already determined eccentricity in this example. The two supported trajectory types take slightly different elements.
    • Hyperbolic trajectories (coord_func = comet_orbit)
      • orbit_TimeAtPericenter, corresponds to HORIZONS variable Tp
      • orbit_PericenterDistance, corresponds to HORIZONS variable QR
      • orbit_Eccentricity, corresponds to HORIZONS variable EC
      • orbit_ArgOfPericenter, corresponds to HORIZONS variable W
      • orbit_AscendingNode, corresponds to HORIZONS variable OM
      • orbit_Inclination, corresponds to HORIZONS variable IN
    • Ellpitical orbits (coord_func = ell_orbit)
      • orbit_Epoch, corresponds to the Julian date at the beginning of the HORIZONS elset, in the results section.
      • orbit_Period, corresponds to HORIZONS variable PR
      • orbit_SemiMajorAxis, corresponds to HORIZONS variable A
      • orbit_Eccentricity, corresponds to HORIZONS variable EC
      • orbit_Inclination, corresponds to HORIZONS variable IN
      • orbit_AscendingNode, corresponds to HORIZONS variable OM
      • orbit_LongOfPericenter, (OM + W). Equal to HORIZONS OM + W.
      • orbit_Mean_Longitude, (MA + orbit_LongOfPericenter). Equal to HORIZONS MA + OM + W.
  • 8. And so that's it! If you were adding Comet C/2007 F1 using an epoch on 2007-11-13, this is what the addition to your system.ini would look like:
   [C2007F1LONEOS]
   name = Comet C/2007 F1 LONEOS
   coord_func = comet_orbit
   orbit_Eccentricity = 1.000096354112455
   radius = 1000
   oblateness = 0.0
   albedo = 0.8
   lighting = true
   halo = true
   color = 1.0,1.0,1.0
   tex_halo = star16x16.png
   tex_map = deimos.png
   orbit_TimeAtPericenter = 2454402.260081015527
   orbit_PericenterDistance = 0.4023859338803358
   orbit_Eccentricity = 1.000096354112455
   orbit_ArgOfPericenter = 153.7105864337799
   orbit_AscendingNode = 172.8882311801781
   orbit_Inclination = 116.0846111299305
  • 9. Caveats:
    • Parabolic trajectories (eccentricity = 1.0) may cause bad things to happen.
    • orbit_Period is used if you have flag_planets_orbits = true in your config.ini This causes one "period" of the body's trajectory to be plotted, even for non-periodic comets that are actually on hypebolic trajectories.
Personal tools
Namespaces
Variants
Actions
in this wiki
other languages
Toolbox