我是PyEphem的新手,我正在试图弄清楚它能做什么以及它是如何工作的.因为我不想把它用作黑盒子而且盲目地相信我得到的任何数字,我想重新创建一个解释为here的例子.
该示例在1998年8月10日23:10 UT计算给定观察者的物体的方位角和高度.给出以下参数:
RA = 16小时41.7分钟,DEC = 36天28分钟
观测者的纬度为北纬52度30分,西经1度55分.
根据示例(我可以在Excel中重新创建)的正确答案是AZ = 269.14634度和ALT = 49.169122度.
我使用pyephem编写了以下代码来尝试实现相同的结果:
day = '1998/8/10 23:10:00'
longitude = ephem.degrees('-1.91667')
latitude = ephem.degrees('52.5')
star = ephem.FixedBody()
star._ra = '16:41:42.0'
star._dec = '36:28:00.0'
observer = ephem.Observer()
observer.date = day
observer.lon = longitude
observer.lat = latitude
star.compute(observer)
print 'Observer', observer
print 'RA', star.ra, 'DEC', star.dec
print 'AZ', star.az, 'ALT', star.alt
运行程序给我这个输出:
>>>
Observer <ephem.Observer date='1998/8/10 23:10:00' epoch='2000/1/1 12:00:00' lon=-1:55:00.0 lat=52:30:00.0 elevation=0.0m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
RA 16:41:39.23 DEC 36:28:33.5
AZ 269:09:54.9 ALT 49:10:57.7
对于这个例子来说,AZ ALT的结果显然很棒,但远非相同.令我感到困惑的是RA和DEC在打印输出中略有修改,与我输入的相比.
如果有人能帮助我阐明为什么结果不同以及我能够或应该做些什么来复制结果,我将非常感激.谢谢.
编辑:纠正了下面的答案中指出的拼写错误.这个问题仍然有效.
编辑2:好的,我已经阅读(并且有点理解)为什么PyEphem从link开始调整正确的提升和赤纬.我不明白的是,是否有任何办法让PyEphem忽略调整相对论偏转,章动和光的像差与你可以忽略大气折射的方式相同吗?我假设方位角的差异是由于RA和DEC的调整,但确认很好.
解决方法:
PyEphem底层的C库没有任何方法可以关闭偏转,畸变或章动 – 也许是因为大自然不会让我们关闭这些效果,但我不确定!我会注意到,对于地球轨道卫星进行那些计算,但是我想不出一个简单的方法让你将卫星置于精确的RA并且高于你的位置,以便你可以向PyEphem询问它的位置.
本周我实际上在DjangoCon上讨论API,并思考PyEphem有朝一日会如何使其内部工作更容易从Python访问,而不是将所有这些有趣的步骤都锁定在C代码中.但是,在我准备好替代方案之前,实现所需内容的唯一方法是打开源文件circum.c并注释掉这些行:
/* allow for relativistic light bending near the sun */
deflect (mjed, lam, bet, lsn, rsn, 1e10, &ra, &dec);
/* TODO: correction for annual parallax would go here */
/* correct EOD equatoreal for nutation/aberation to form apparent
* geocentric
*/
nut_eq(mjed, &ra, &dec);
ab_eq(mjed, lsn, &ra, &dec);
如果这三个调用 – deflect(),nut_eq()和ab_eq()从第263行开始 – 被注释掉,那么你可能会得到一个更接近本文中产生的答案的答案.您将通过以下方式应用这些更改
>为PyEphem下载.tar.gz.
>提取存档以生成文件.
>进行上面建议的编辑.
>运行python setup.py install以安装自定义版本的软件.
>试一试!
可能还有另一个障碍,如果岁差在某种程度上发挥作用 – 在这种情况下你可能需要将你的星形物体的时代设置为’1998/8/10 23:10:00′ – 但是试着关掉三盏灯-effect先调用,看看是否能让你更接近!