Python PyEphem 计算方位角和高度

2024-01-07

我是 PyEphem 的新手,我正在尝试弄清楚它可以做什么以及它是如何工作的。由于我不想将其用作黑匣子并盲目相信我得到的任何数字,因此我想重新创建一个解释的示例here http://www.stargazing.net/kepler/altaz.html.

该示例计算给定观察者在 1998 年 8 月 10 日 23:10 UT 的物体的方位角和高度。给出以下参数:

RA = 16 小时 41.7 分钟,DEC = 36 天 28 分钟

观察者的纬度为北纬 52 d 30 分,西经 1 d 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 与我输入的内容相比略有修改这一事实感到困惑。

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

EDIT:更正了下面答案中指出的拼写错误。这个问题仍然有效。

EDIT2:好的,我已经阅读(并且有点理解)为什么 PyEphem 从此调整赤经和赤纬link http://rhodesmill.org/pyephem/radec.html。我不明白的是是否有任何方法可以让 PyEphem 忽略调整相对论偏转, nutation and 光像差就像你可以让它忽略一样大气折射?我假设方位角的差异是由于 RA 和 DEC 的调整造成的,但最好确认一下。


PyEphem 底层的 C 库没有任何方法来关闭偏转、像差或章动——也许是因为大自然也不让我们关闭这些效果,但我不确定!我要指出的是,它不会对地球轨道卫星进行这些计算,但我想不出一种简单的方法可以让您将卫星放置在您所在位置上方精确的赤经和赤经,以便您可以向 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(), and ab_eq()从第 263 行开始 - 被注释掉,那么您可能会得到更接近本文中给出的答案。您可以通过以下方式应用这些更改:

  • 正在下载.tar.gz对于 PyEphem。
  • 提取存档以生成文件。
  • 进行我上面建议的编辑。
  • Run python setup.py install安装您的自定义版本的软件。
  • 试试看!

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python PyEphem 计算方位角和高度 的相关文章

  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • 如何手动计算分类交叉熵?

    当我手动计算二元交叉熵时 我应用 sigmoid 来获取概率 然后使用交叉熵公式并平均结果 logits tf constant 1 1 0 1 2 labels tf constant 0 0 1 1 1 probs tf nn sigm
  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk

随机推荐