調整觀測者水平屬性似乎對地球衛星的上升/設置時間沒有影響。另外,我在libastro代碼中發現了這個問題:地球衛星地平線
/* we don't implement a minimum horizon altitude cutoff
SiteMinElev = 0;
*/
是否有沒有實現水平截止的原因?例如,對於做衛星高程掩蔽將會很有用。
調整觀測者水平屬性似乎對地球衛星的上升/設置時間沒有影響。另外,我在libastro代碼中發現了這個問題:地球衛星地平線
/* we don't implement a minimum horizon altitude cutoff
SiteMinElev = 0;
*/
是否有沒有實現水平截止的原因?例如,對於做衛星高程掩蔽將會很有用。
好消息:衛星的上升和設置不是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
布蘭登,謝謝你,這正是我需要的。 – user1739051
這個問題可能是最好的定向到包的創建者。 – Richard
理查德,我們實際上更喜歡用戶在這裏提出問題,因爲這樣我們的答案不會過時,但可以在社區變得過時時修改或降低! :) –