Python PyEphem 计算方位角和高度

标签 python azimuth altitude pyephem

我是 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 略有修改,这也让我感到困惑。

如果有人能帮助我阐明结果不同的原因以及我可以或应该做些什么来复制结果,我将不胜感激。谢谢。

编辑:更正了以下回答中指出的错别字。这个问题仍然有效。

EDIT2:好的,我已经阅读(并且有点理解)为什么 PyEphem 从这个 link 调整了赤经和赤纬。 .我不明白的是,是否有任何方法可以让 PyEphem 以同样的方式忽略对相对论偏转章动光差 的调整你能让它忽略大气折射吗?我假设方位角的差异是由于赤经和赤纬的调整造成的,但最好确认一下。

最佳答案

PyEphem 底层的 C 库没有任何方法可以关闭偏转、像差或章动——也许是因为大自然也不允许我们关闭这些效果,但我不确定!我会注意到,它不会为地球轨道卫星进行这些计算,但我想不出一个简单的方法让你把卫星放在一个精确的 RA 和 dec 在你的位置之上,这样你就可以问 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);

如果从第 263 行开始的这三个调用 — deflect()nut_eq()ab_eq() — 被注释掉,那么您可能会得到与本文中的答案更接近的答案。您可以通过以下方式应用这些更改:

  • 下载 PyEphem 的 .tar.gz
  • 提取存档以生成文件。
  • 按照我上面的建议进行修改。
  • 运行 python setup.py install 以安装该软件的自定义版本。
  • 试试吧!

如果进动以某种方式起作用,则可能还有另一个障碍 — 您可能需要将 star 对象的纪元设置为恰好 '1998/8/10 23:10: 00' 在这种情况下 — 但请先尝试关闭三个光效调用,看看是否能让您更接近!

关于Python PyEphem 计算方位角和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266176/

相关文章:

android - gps 的高度读数不准确

database - Redis GREORADIUS : include altitude?

Android:如何获得准确的高度?

python - python中的 'with'函数有什么作用?

python - 如何更改seaborn lmplot中的标记填充样式?

android - 将陀螺仪与加速度计相结合以获得航向

ios - iOS 设备处于横向右侧时方位角计算出现问题

android - 确定您的 Android 设备指向的构建

python - 在 gitlab-ci 中为 Django 运行 selenium 测试

python - 名称错误 : global name 'operator' is not defined