2013-03-01 115 views
1

下面的天體測量RA和十二月是Pyephem文檔中提供了一個例子:你如何獲得earthsatellite對象

iss = ephem.readtle("ISS (ZARYA)","1 25544U 98067A 03097.78853147 .00021906 00000-0 28403-3 0 8652","2 25544 51.6361 13.7980 0004256 35.6671 59.2566 15.58778559250029") 
    gatech = ephem.Observer() 
    gatech.lon, gatech.lat = '-84.39733', '33.775867' 
    gatech.date = '2003/3/23' 
    iss.compute(gatech) 
    print iss.rise_time, iss.transit_time, iss.set_time 
    2003/3/23 00:00:44 2003/3/23 00:03:22 2003/3/23 00:06:00 

當我運行的例子中,我獲得了完全相同的結果,因此,我希望我我至少在做這個部分是正確的。我想知道的是衛星在J2000座標中的天體測量位置,所以我可以將其與星圖進行比較。我嘗試了下面的代碼,答案是可疑的,因爲a_ra和ra是相同的。我相信a_ra和ra都是在時代中給出的,而不是a_ra是J2000中的天體測量解決方案。

print iss.a_ra, iss.ra, iss.g_ra 
    8:50:10.99 8:50:10.99 6:54:40.64 

有沒有辦法將前進/章動應用於pyephem中的地心ra和dec?

回答

1

優秀的問題!在審查了PyEphem基礎之上的C代碼之後,它看起來像raa_ra值已經被precessed到觀察者對象的時代(在你的情況下是J2000的默認值)。供您參考,這是有問題的libastro代碼earthsat.c

if (epoch != EOD && mjd != epoch) 
    precess (mjd, epoch, &ra, &dec); 
op->s_ra = ra; 
op->s_dec = dec; 

在我看來像這樣.ra.dec價值已經進動。讓這個代碼可能是我的一個遺漏;很可能我真的應該做的,但當時沒有看到的是將這些任務陳述移到if陳述之前的位置,以便它們將被取消,因此它們不同於天體測量RA和DEC,後來我自己添加了一些代碼。所以:目前,您實際上是 - 如果我正確理解PyEphem - 正確地獲取您需要的RA和DEC,並且可以繼續您的項目。同時,我會追蹤該票,並試圖讓.ra.dec開始給予與.a_ra.a_dec不同的號碼!