Python 如何使用天空场计算到彗星的距离?
我用它来计算行星与地球的相对距离,作为时间的函数(如skyfield主页上所述)。它工作得很好,现在我正在尝试实现Earth=>comet distance(例如67P/Tchouri) 我在NASA JPL找到了一种为彗星创建Spice SPK文件的方法(),但它会生成Python 如何使用天空场计算到彗星的距离?,python,astronomy,skyfield,Python,Astronomy,Skyfield,我用它来计算行星与地球的相对距离,作为时间的函数(如skyfield主页上所述)。它工作得很好,现在我正在尝试实现Earth=>comet distance(例如67P/Tchouri) 我在NASA JPL找到了一种为彗星创建Spice SPK文件的方法(),但它会生成xsp文件,我似乎无法从skyfield使用load命令读取这些文件 我考虑过的另一种可能性是使用建议用于pyephem(参见)的轨道信息,但我不知道如何在Skyfield中读取它们 我还看到comets出现在skyfield编
xsp
文件,我似乎无法从skyfield
使用load
命令读取这些文件
我考虑过的另一种可能性是使用建议用于pyephem
(参见)的轨道信息,但我不知道如何在Skyfield
中读取它们
我还看到comets出现在skyfield编码sprint的路线图上,所以这可能是我的答案,但如果你知道一种方法使它与当前版本一起工作,那将非常有用。skyfield确实获得了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
当我试图跟踪你共享的URL时,我发现一个404没有找到-你能仔细检查一下,看看粘贴是否正确吗?网站似乎暂时关闭,但URL是正确的。我在这里上传了我从这个网站上得到的文件:我知道我从Horizons Ephemeris系统web界面获得的文件是文本格式的。我现在从telnet界面下载了一个二进制文件(网页似乎仍处于关闭状态)。skyfield中的
load
命令似乎无法加载任何.bsp文件。我说得对吗?加载de422.bsp文件时,使用load
命令加载我的bsp文件将返回\u io.BufferedReader
类型对象,而不是skyfield.jpllib.SpiceKernel
。