调整观察者水平属性似乎对地球卫星的上升/设定时间没有影响。此外,我在 libastro 代码中发现了这一点:
/* we don't implement a minimum horizon altitude cutoff
SiteMinElev = 0;
*/
没有实施地平线截止是否有原因?例如,这对于进行卫星高程掩蔽很有用。
好消息:卫星升起和设置不是该工作的工作,earthsat.c
因此您在作者的源代码中找到的评论libastro
并不表明 PyEphem 缺乏调整其用于地球卫星的地平线的能力。riset_cir.c
如果您对它们的工作原理感到好奇,可以在他的文件中找到上升和设置例程。
坏消息:您看到的行为是 PyEphem 中的一个错误!事实上,虽然 PyEphem 确实在运行地球卫星升降计算时尝试使用观察者的视界设置,但它会将视界从错误的位置拉出。(有关详细信息,请参阅中的_next_pass()
函数_libastro.c
。)它不使用观察者的地平线,而是使用您上次调用compute()
卫星时的地平线值。
我将把这个 bug 添加到 PyEphem 待办事项列表中。同时,你可以强制你的卫星“看到”你希望它使用的地平线值,方法是sat.compute(observer)
先调用,然后再询问它的下一次通过开销。这是一个例子:
import ephem
iss = ephem.readtle(
'ISS (ZARYA)',
'1 25544U 98067A 12286.88755895 .00013766 00000-0 24141-3 0 4559',
'2 25544 51.6478 256.6034 0017425 159.6565 253.2565 15.50708155796305',
)
boston = ephem.city('Boston')
rising_time = boston.next_pass(iss)[0]
print 'Horizon = 0 rising:', rising_time
boston.horizon = '-5'
iss.compute(boston)
rising_time = boston.next_pass(iss)[0]
print 'Horizon = -5 rising:', rising_time
这个脚本应该向你展示一个更早的上升时间,因为我们已经将地平线推到了纯几何地平线之下,我确实得到了答案;如果你也这样做,请告诉我!
Horizon = 0 rising: 2012/10/13 05:14:28
Horizon = -5 rising: 2012/10/13 05:12:58