2

调整观察者水平属性似乎对地球卫星的上升/设定时间没有影响。此外,我在 libastro 代码中发现了这一点:

/* we don't implement a minimum horizon altitude cutoff
    SiteMinElev = 0;
*/

没有实施地平线截止是否有原因?例如,这对于进行卫星高程掩蔽很有用。

4

1 回答 1

2

好消息:卫星升起和设置不是该工作的工作,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
于 2012-10-13T04:02:49.070 回答