観測者の地平線属性を調整しても、地球衛星の立ち上がり/設定時間には影響がないようです。さらに、私はこれをlibastroコードで見つけました:
/* we don't implement a minimum horizon altitude cutoff
SiteMinElev = 0;
*/
ホライズンカットオフが実装されていない理由はありますか?たとえば、衛星の高度マスキングを行う場合に便利です。
良いニュース:衛星の上昇と設定は仕事ではない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