我的问题是 PyEphem 为至日和分点的日期以及太阳几何提供准确结果的时间跨度是多少。
到目前为止,我在 GitHub https://github.com/brandon-rhodes/pyephem/issues/61上这篇非常翔实的帖子中发现了 BC 9998-03-20 到 AD 9999-12-31 的限制 以及结果的总体指示在当前任一地点移动超过 +/- 20,000 年时变得不稳定。
我想澄清这一点,因为我试图在更长的时间内获得太阳的位置 - 通常可以追溯到 10,000 年 BP - 以便计算来自太阳在给定的高度和方位角的入射太阳辐射地点。PyEphem 似乎提供了一个很好的替代方案,例如 Berger, 1978 (J. Atmosph. Sc., 35: 2362-2367)。对我来说,PyEphem 相对于这些算法的一个基本优势是它也可以跟踪时间,而地球轨道通常固定在上述算法中的某个特定时刻(例如,3 月 21 日的春分)。
通常,地球轨道的变化与 Berger 和其他人的算法是在最后一次冰川的规模上(高达 126,000 年 BP)进行评估的。在该范围内评估 PyEphem 时,当日期远早于今天时,我遇到了一些关于至日日期的奇怪行为:
import ephem
date= ephem.date((-59000,1,1))
orbitPoints= ['vernal_equinox_start','summer_solstice',\
'autumnal_equinox','winter_solstice','vernal_equinox_end']
dates= {}
dates['vernal_equinox_start']= ephem.next_vernal_equinox(date)
dates['summer_solstice']= ephem.next_summer_solstice(dates['vernal_equinox_start'])
dates['autumnal_equinox']= ephem.next_autumnal_equinox(dates['vernal_equinox_start'])
dates['winter_solstice']= ephem.next_winter_solstice(dates['vernal_equinox_start'])
dates['vernal_equinox_end']= ephem.next_vernal_equinox(dates['winter_solstice'])
for orbitPoint in orbitPoints:
date= dates[orbitPoint]
distance= body_distance(sun, date)
hlon, hlat= body_hpos(sun, date)
print '%-20s %30s …Run Code Online (Sandbox Code Playgroud)