2013-03-01 114 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不同的号码!