{ Practical astronomy | Computing | Coordinate calculations }
Coordinate calculations
Here we combine the computing environment, the software design principles and the insights about coordinate systems into software to do some calculations for us. The result is the Coords module.
For distances we use Gigametre (Gm) throughout, except for elevation above the ellipsoid, which is required and returned in metre. For angles we use degrees, unless it is expedient to use radian internally. Coordinates are Cartesian internally and converted from/to degrees for the user interface. We aspire to an accuracy of 0.01° within ±100 years from the present and 1° within ±1000 years.
The principal coordinate system is RA/Dec for J2000. Supported systems are the seven listed systems and transforms between successive list entries (not between random pairs of systems):
- galactic lII,bII
- B1950 geocentric RA/Dec
- J2000 geocentric RA/Dec
- EOD geocentric ecliptic λ,β
- EOD geocentric RA/Dec
- EOD topocentric HA/Dec
- topocentric horizontal A,h
We do not support atmospheric refraction, which causes objects to appear a little higher above the horizon than they mathematically are. The user is encouraged to account for this in the calculation of the rise or set time of an object. This is done by specifying the criterion as the altitude being not zero, but −0.6°.
We use two hidden files to keep information about our location on the Earth (our "observatory") and about the object in the sky.
.CL4_LOC
- Stores the geographic longitude in degrees, the geodetic (geographic) latitude in degrees, the elevation above sea level in Gm, a name for the observatory.
.CL4_FIX
- Stores the right ascension and declination for equinox J2000 in degrees, the distance in Gm, a name for the object.
The object is specifically a "fixed object", i.e. an object in the Galaxy or an external galaxy, but not a body in orbit around the Sun or Earth. That said, it may make sense for the user to calculate the position of such a body for a specific time and then treat that like a fixed object over a short time interval.
We have these user utilities to set the principal data. They require Python scripts to invoke from the Bash shell and to convert input parameters, and Python functions to do the work:
LocSet.py long lat elev name
LocSet(long, lat, elev, name)- Store the given data as the observatory location. Enter geographic (not geocentric) longitude and latitude in degrees and elevation in metres.
FixSet.py sys angle1 angle2 distance name
FixSet(sys, angle1, angle2, distance, name)- Store the given data as the fixed sky position. Enter the
system code as
1: galactic lII, bII;
2: B1950 RA, Dec;
3: J2000 RA, Dec;
4: EOD ecliptic λ, β;
5: EOD geocentric RA, Dec;
6: topocentric HA, Dec;
7: horizontal A, h.
The two angles are then interpreted in that system. Enter the angles in degrees, the distance in Gm.
We have these user utilities to show the principal data and data derived from it. They require Python scripts to invoke from the Bash shell and to convert input parameters, and Python functions to do the work:
LocShow.py
LocShow()- Show the observatory location, also sidereal time.
FixShow.py
FixShow()- Show the fixed sky object, in all coordinate systems.
FixRise.py alt
FixRise(alt)- Show the next rise and set times for the fixed sky object. The given parameter is the altitude in degrees that defines the "rise" or "set". Give 0 for the mathematical horizon, −0.6° to compensate for average atmospheric refraction.
Here is an example use from the Bash shell. The time is set from
the computer's clock, then the observatory and object selected. Four
output routines show time, observatory, position of the object, and
finally, when the object will rise above 20° altitude. (Although
we have entered the distance of the object accurately, for objects
beyond the Solar System one can just use something
like 1e30
as a quasi-infinite distance.)
$ TimSetSys.py $ LocSet.py -70.417 -24.667 2635 "Cerro Paranal" $ FixSet.py 1 59.02 40.91 2.1e7 M13 $ TimShow.py JD [d] 2459020.343923 Gregorian Date and UT 2020-06-19T20:15:15.0 Julian Date and UT 2020-06-06T20:15:15.0 TT - UT [s] 70.46637624534196 TAI - UTC [s] 38.282376245341965 $ LocShow.py Observatory Cerro Paranal Geographic longitude [deg] -70.417 Geographic latitude [deg] -24.667 Geocentric latitude [deg] -24.52155560529307 Elevation [m] 2635.0 Sidereal time [deg] 141.90911509974632 $ FixShow.py Object M13 lII,bII 59.019999999999 40.910000000000 21000000.0 RA,Dec B1950 249.980022346597 36.563327770589 21000000.0 RA,Dec J2000 250.427317007154 36.469228833130 21000000.0 lam,bet EOD 239.862267904956 57.8590900570145 21000000.0 RA,Dec EOD 250.610441035663 36.431300917755 21000000.0 HA,Dec topo 251.29867404544 36.431300920551 21000000.0030685 A,h topo 60.452487932477 -28.8341454455192 21000000.0030685 $ FixRise.py 20 next rise 2020-06-20T01:04:23.1 next set 2020-06-20T05:53:21.0 altitude [deg] 20.0