sourCEntral - mobile manpages




aa − astronomical almanac - calculate planet and star positions




The aa program computes the orbital positions of planetary bodies and performs rigorous coordinate reductions to apparent geocentric and topocentric place (local altitude and azimuth). It also reduces star catalogue positions given in either the FK4 or FK5 system. Data for the 57 navigational stars is included. Most of the algorithms employed are from The Astronomical Almanac (AA) published by the U.S. Government Printing Office.

The aa program follows the rigorous algorithms for reduction of celestial coordinates exactly as laid out in current editions of the Astronomical Almanac. The reduction to apparent geocentric place has been checked by a special version of the program (aa200) that takes planetary positions directly from the Jet Propulsion Laboratory DE200 numerical integration of the solar system. The results agree exactly with the Astronomical Almanac tables from 1987 onward (earlier Almanacs used slightly different reduction methods).


The following items will be read in automatically from the first of these files to be found: ./aa.ini, ~/.aa.ini, /etc/aa.ini. The file contains one ASCII string number per line so is easily edited. A sample initialization file is supplied. The entries are:


Terrestrial longitude of observer, degrees East of Greenwich


Geodetic latitude of observer (program calculates geocentric latitude)


Height above sea level, meters


Atmospheric temperature, degrees Centigrade


Atmospheric pressure, millibars


Input time type: 1 = TDT, 2 = UT, 0 = TDT set equal to UT


Value to use for deltaT, seconds; if 0 then the program will compute it.

Orbit Computations

Several methods of calculating the positions of the planets have been provided for in the program source code. These range in accuracy from a built-in computation using perturbation formulae to a solution from precise orbital elements that you supply from an almanac.
The program uses as a default a set of trigonometric expansions for the position of the Earth and planets. These have been adjusted to match the Jet Propulsion Laboratory’s DE404 Long Ephemeris (1995) with a precision ranging from about 0.1" for the Earth to 1" for Pluto. The adjustment was carried out on the interval from 3000 B.C. to 3000 A.D. for the outer planets. The adjustment for the inner planets is strictly valid only from 1350 B.C. to 3000 A.D., but may be used to 3000 B.C. with some loss of precision. See /usr/share/doc/aa/readme.404 for additional information. The true accuracy of positions calculated for prehistoric or future dates is of course unknown.
The Moon’s position is calculated by a modified version of the lunar theory of Chapront-Touze’ and Chapront. This has a precision of 0.5 arc second relative to DE404 for all dates between 1369 B.C. and 3000 A.D. The real position of the Moon in ancient times is not actually known this accurately, due to uncertainty in the tidal acceleration of the Moon’s orbit.

In the absence of an interpolated polynomial ephemeris such as the DE200, the highest accuracy for current planetary positions is achieved by using the heliocentric orbital elements that are published in the Astronomical Almanac. If precise orbital elements are provided for the desired epoch then the apparent place should be found to agree very closely with Almanac tabulations.
Entering 99 for the planet number generates a prompt for the name of a file containing human-readable ASCII strings specifying the elements of orbits. The items in the specification are (see also the example file

First line of entry:
epoch of orbital elements (Julian date)
longitude of the ascending node
argument of the perihelion
mean distance (semimajor axis) in au
daily motion

Second line of entry:
mean anomaly
epoch of equinox and ecliptic, Julian date
visual magnitude B(1,0) at 1au from earth and sun
equatorial semidiameter at 1au, arc seconds
name of the object, up to 15 characters

Angles in the above are in degrees except as noted. Several sample orbits are supplied in the file If you read in an orbit named "Earth" the program will install the Earth orbit, then loop back and ask for an orbit number again.
The entry for daily motion is optional. It will be calculated by the program if it is set equal to 0.0 in your catalogue. Almanac values of daily motion recognize the nonzero mass of the orbiting planet; the program’s calculation will assume the mass is zero.
Mean distance, for an elliptical orbit, is the length of the semi-major axis of the ellipse. If the eccentricity is given to be 1.0, the orbit is parabolic and the "mean distance" item is taken to be the perihelion distance. Similarly a hyperbolic orbit has eccentricity > 1.0 and "mean distance" is again interpreted to mean perihelion distance. In both these cases, the "epoch" is the perihelion date, and the mean anomaly is set to 0.0 in your catalogue.
Elliptical cometary orbits are usually catalogued in terms of perihelion distance also, but you must convert this to mean distance to be understood by the program. Use the formula

mean distance = perihelion distance / (1 - eccentricity)

to calculate the value to be entered in your catalogue for an elliptical orbit.
The epoch of the orbital elements refers particularly to the date to which the given mean anomaly applies. Published data for comets often give the time of perihelion passage as a calendar date and fraction of a day in Ephemeris Time. To translate this into a Julian date for your catalogue entry, run aa, type in the published date and decimal fraction of a day, and note the displayed Julian date. This is the correct Julian Ephemeris Date of the epoch for your catalogue entry. Example (Sky & Telescope, March 1991, page 297): Comet Levy 1990c had a perihelion date given as 1990 Oct 24.68664 ET. As you are prompted separately for the year, month, and day, enter 1990, 10, 24.68664 into the program. This date and fraction translates to JED 2448189.18664. For comparison purposes, note that published ephemerides for comets usually give astrometric positions, not apparent positions.

Ephemeris Time and Other Time Scales

Exercise care about time scales when comparing results against an almanac. The orbit program assumes input date is Ephemeris Time (ET or TDT). Topocentric altitude and azimuth are calculated from Universal Time (UT). The program converts between the two as required, but you must indicate whether your input entry is TDT or UT. This is done by the entry for input time type in aa.ini. If you are comparing positions against almanac values, you probably want TDT. If you are looking up at the sky, you probably want UT. Ephemeris transit times can be obtained by declaring TDT = UT. The adjustment for deltaT = ET minus UT is accurate for the years 1620 through 2011, as the complete tabulation from the Astronomical Almanac is included in the program. Outside this range of years, approximate formulas are used to estimate deltaT. These formulas are based on analyses of eclipse records going back to ancient times (Stephenson and Houlden, 1986; Borkowski, 1988) but they do not predict future values very accurately. For precise calculations, you should update the table in deltat.c from the current year’s Almanac. Note the civil time of day is UTC, which is adjusted by integral leap seconds to be within 0.9 second of UT.

Updated deltaT values and predictions can be obtained from this network archive: . See the file deltat.c for additional information. In addition, the IAU has adopted several other definitions of time, but this program does not distinguish among them. The International Earth Rotation Service is in charge of UT. Precise data on Earth rotation and orientation are published in the IERS bulletins, available at the IERS computer site as well as at the usno site.

Rise and Set Times

Each calculation of the time of local rising, meridian transit, and setting includes a first order correction for the motion in right ascension and declination of the object between the entered input time and the time of the event. Even so, the calculation has to be iterated, or repeated with successively closer estimates of the event time. In view of the first order correction the iteration has a second-order convergence characteristic and arrives at a precise result in just two or three steps. On the other hand, the technique used is unstable for nearly-circumpolar objects, such as the Moon observed at high latitudes. Thus a failure to report rise and set times does not necessarily mean that there was no rise or set event.

The program reports the transit that is nearest to the input time. Rise and set times ordinarily precede and follow the transit. Check the date displayed next to the rise, set, or transit time to be sure the results are for the desired date and not for the previous or next calendar day. For the Sun and Moon, rise and set times are for the upper limb of the disc; but the indicated topocentric altitude always refers to the center of the disc. The computed event times include the effects of diurnal aberration and parallax.

Age of the Moon, in days from the nearest Quarter, also has a correction for orbital motion, but does not get the benefit of iterative improvement and may be off by 0.1 day (the stated Quarter is always correct, however). The estimated time can be made much more precise by entering the input date and time of day to be near the time of the event. In other words, the rigorous calculation requires iterating on the time; in this case the program does not do so automatically, hence if you want maximum accuracy you must do the iteration by hand.


Positions and proper motions of the 57 navigational stars were taken from the Fifth Fundamental Catalogue (FK5). They are in the file /usr/share/aa/ For all of these, the program’s output of astrometric position agreed with the 1986 AA to the precision of the AA tabulation (an arc second). The same is true for 1950 FK4 positions taken from the SAO catalogue. The program agrees to 0.01" with worked examples presented in the AA. Spot checks against Apparent Places of Fundamental Stars confirm the mean place agreement to <0.1". The APFS uses an older nutation series, so direct comparison of apparent place is difficult. The program incorporates the complete IAU Theory of Nutation (1980). Items for the Messier catalogue, /usr/share/aa/, are from either the AA or Sky Catalogue 2000.
To compute a star’s apparent position, its motion since the catalogue epoch is taken into account as well as the changes due to precession of the equatorial coordinate system. Star catalogue files have the following data structure. Each star entry occupies one line of ASCII characters. Numbers can be in any usual decimal computer format and are separated from each other by one or more spaces. From the beginning of the line, the parameters are

Epoch of catalogue coordinates and equinox
Right ascension, hours
Right ascension, minutes
Right ascension, seconds
Declination, degrees
Declination, minutes
Declination, seconds
Proper motion in R.A., s/century
Proper motion in Dec., "/century
Radial velocity, km/s
Distance, parsecs
Visual magnitude
Object name

For example, the line

2000 02 31 48.704 89 15 50.72 19.877 -1.52 -17.0 0.0070 2.02 alUMi(Polaris)

has the following interpretation:

J2000.0 ;Epoch of coordinates, equator, and equinox
2h 31m 48.704s ;Right Ascension
89deg 15’ 50.72" ;Declination
19.877 ;proper motion in R.A., s/century
-1.52 ;proper motion in Dec., "/century
-17.0 ;radial velocity, km/s
0.007 ;parallax, "
2.02 ;magnitude
alUMi(Polaris) ;abbreviated name for alpha Ursae Minoris (Polaris)

Standard abbreviations for 88 constellation names are expanded into spelled-out form (see constel.c). The program accepts two types of catalogue coordinates. If the epoch is given as 1950, the entire entry is interpreted as an FK4 item. The program then automatically converts the data to the FK5 system. All other epochs are interpreted as being in the FK5 system.
Note that catalogue (and AA) star coordinates are referred to the center of the solar system, whereas the program displays the correct geocentric direction of the object. The maximum difference is 0.8" in the case of alpha Centauri.


aa does not accept any options.


./aa.ini, ~/.aa.ini, /etc/aa.ini Initialization data.

Documentation of plan404 ephemerides.


Catalogue data on the 57 navigational stars.


Items for the Messier catalogue




aa was written by Stephen L. Moshier <steve AT moshier DOT net>.

This manual page was written by James R. Van Zandt <jrv AT debian DOT org>, for the Debian project (but may be used by others).