【问题标题】:How to calculate distance to comets using Skyfields?如何使用 Skyfields 计算到彗星的距离?
【发布时间】:2016-11-04 09:01:13
【问题描述】:

我正在使用skyfield 来计算行星到地球的相对距离作为时间的函数(如天空主页上所述)。它效果很好,现在我正在尝试实现 Earth=>comet 距离(例如 67P/Tchouri)。

我在 NASA JPL 找到了一种为彗星 (here) 创建 Spice SPK 文件的方法,但它会生成 xsp 文件,我似乎无法使用来自 skyfieldload 命令读取这些文件。

我考虑的另一种可能性是使用pyephem 建议的轨道信息(请参阅here),但我不知道如何在Skyfield 中阅读它们。

我还看到彗星在 skyfield 编码冲刺的路线图上,所以这可能是我的答案,但如果你知道一种使它与当前版本一起工作的方法,那将非常有帮助。

【问题讨论】:

  • 当我尝试关注您分享的 URL ssd.jpl.nasa.gov/x/spk.html 时,我得到了一个 404 Not Found — 您能否仔细检查一下,看看您是否正确粘贴了它?
  • 网站似乎暂时关闭,但 URL 正确。我在这里上传了从这个站点获得的文件:github.com/facero/skyfield-comets
  • 我了解到我从 Horizo​​ns Ephemeris System 网页界面获取的文件是文本格式的。我现在从 telnet 界面下载了一个二进制文件(网页似乎仍然关闭)。 skyfield 中的load 命令似乎无法加载任何.bsp 文件。我对吗 ?加载 de422.bsp 文件时,使用 load 命令加载我的 bsp 文件会返回 _io.BufferedReader 类型对象而不是 skyfield.jpllib.SpiceKernel

标签: python astronomy skyfield


【解决方案1】:

Skyfield 确实获得了对彗星的支持!您可以在此处找到详细信息:

https://rhodesmill.org/skyfield/kepler-orbits.html#comets

改编文档中的代码,这里是小行星中心数据库到彗星的距离:

from skyfield.api import load
from skyfield.constants import GM_SUN_Pitjeva_2005_km3_s2 as GM_SUN
from skyfield.data import mpc

ts = load.timescale()

eph = load('de421.bsp')
sun, earth = eph['sun'], eph['earth']

with load.open(mpc.COMET_URL) as f:
    comets = mpc.load_comets_dataframe(f)
comets = comets.set_index('designation', drop=False)
row = comets.loc['1P/Halley']
comet = sun + mpc.comet_orbit(row, ts, GM_SUN)

t = ts.utc(2020, 10, 17)
ra, dec, distance = earth.at(t).observe(comet).radec()

print('Distance in AU:', distance.au)

我看到了结果:

Distance in AU: 35.22790002485247

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-07
    • 2022-06-14
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多