2012-10-11 45 views
2

調整觀測者水平屬性似乎對地球衛星的上升/設置時間沒有影響。另外,我在libastro代碼中發現了這個問題:地球衛星地平線

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

是否有沒有實現水平截止的原因?例如,對於做衛星高程掩蔽將會很有用。

+0

這個問題可能是最好的定向到包的創建者。 – Richard

+0

理查德,我們實際上更喜歡用戶在這裏提出問題,因爲這樣我們的答案不會過時,但可以在社區變得過時時修改或降低! :) –

回答

2

好消息:衛星的上升和設置不是earthsat.c的工作,所以您在libastro作者的源代碼中發現的評論並不表示PyEphem無法調整它用於地球的視界衛星。如果你對它們的工作原理感興趣,可以在他的riset_cir.c文件中找到升起和設置例程。

壞消息:您看到的行爲是PyEphem中的錯誤!儘管PyEphem確實在運行地球衛星上升和設置計算時嘗試使用觀察者的視界設置,但它將地平線從錯誤的地方拉開。 (有關詳細信息,請參見_libastro.c中的_next_pass()函數)。而不是使用觀察者的地平線,它使用上次在衛星上稱爲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 
+0

布蘭登,謝謝你,這正是我需要的。 – user1739051