【问题标题】:Horizon for earth satellites地球卫星的地平线
【发布时间】:2012-10-11 18:09:50
【问题描述】:

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

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

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

【问题讨论】:

  • 这个问题最好直接问包的创建者。
  • Richard,我们实际上更喜欢用户在这里提问,因为这样我们的答案不会过时,但可以在社区过时时修改或否决! :)

标签: satellite pyephem


【解决方案1】:

好消息:卫星升起和设置不是earthsat.c 的工作,因此您在libastro 作者的源代码中找到的注释并不表明 PyEphem 缺乏调整它的地平线的能力用于地球卫星。如果您对它们的工作原理感到好奇,可以在他的riset_cir.c 文件中找到上升和设置例程。

坏消息:您看到的行为是 PyEphem 中的一个错误!事实上,虽然 PyEphem 在运行地球卫星升降计算时尝试使用观察者的视界设置,但它会将视界从错误的位置拉出。 (有关详细信息,请参阅 _libastro.c 中的 _next_pass() 函数。)它不使用观察者的地平线,而是使用您上次在卫星上调用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多