调整观测器水平属性似乎对地球卫星的上升/设定时间没有影响。另外,我在libastro代码中找到了这个:
/* we don't implement a minimum horizon altitude cutoff
SiteMinElev = 0;
*/
是否存在未实施地平线切断的原因?例如,它可用于进行卫星高程掩蔽。
答案 0 :(得分:2)
好消息:卫星上升和设置不是earthsat.c
的工作,因此您在libastro
作者的源代码中找到的评论并未表明PyEphem缺乏调整能力它用于地球卫星的地平线。如果您对它们的工作原理感到好奇,可以在他的riset_cir.c
文件中找到上升和设置例程。
坏消息:你所看到的行为是PyEphem中的一个错误!事实上,PyEphem确实在运行地球卫星上升和下降计算时尝试使用观测者的地平线设置,但它会从错误的位置拉出地平线。 (有关详细信息,请参阅_next_pass()
中的_libastro.c
函数。)它不使用观察者的地平线,而是使用上次在卫星上调用compute()
时的地平线值。
我会将此错误添加到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