Why is my target above/below the horizon at the rise/set time?¶
Rise/set/meridian transit calculations in astroplan
are designed to be fast
while achieving a precision comparable to what can be predicted given the
affects of the changing atmosphere. As a result, there may be some
counter-intuitive behavior in astroplan
methods like
astroplan.Observer.target_rise_time
, astroplan.Observer.target_set_time
and
astroplan.Observer.target_meridian_transit_time
, that can lead to small
changes in the numerical values of these computed timed (of order seconds).
For example, to calculate the rise time of Sirius, you might write:
from astroplan import Observer, FixedTarget
from astropy.time import Time
# Set up observer, target, and time
keck = Observer.at_site("Keck")
sirius = FixedTarget.from_name("Sirius")
time = Time('2010-05-11 06:00:00')
# Find rise time of Sirius at Keck nearest to `time`
rise_time = keck.target_rise_time(time, sirius)
You might expect the altitude of Sirius to be zero degrees at rise_time
,
i.e. Sirius will be on the horizon, but this is not the case:
>>> altitude_at_rise = keck.altaz(rise_time, sirius).alt
>>> print(altitude_at_rise.to('arcsec'))
2.70185arcsec
The altitude that you compute on your machine may be different from the number above by a small amount – for a detailed explanation on where the difference arises from, see What are the IERS tables and how do I update them?. The rise and set time methods use the following approximation:
- A time series of altitudes for the target is computed at times near
time
- The two times when the target is nearest to the horizon are identified, and a linear interpolation is done between those times to find the horizon-crossing
This method has a precision of a few arcseconds, so your targets may be slightly above or below the horizon at their rise or set times.