Diskrepanz zwischen HORIZONS und SPICE

Ich versuche, die Ausgabe des HORIZONS -Systems mit dem SPICE-Toolkit der NASA zu reproduzieren, erhalte jedoch nicht genau die gleichen Ergebnisse. Ich verwende dieses Skript, um die Position und Geschwindigkeit des Venus-Baryzentrums im J2000-Frame mit der spkez-Funktion ( Python -Dokumentation ) zu berechnen.

import spiceypy as spice

SSB_ID = 0
VENUS_ID = 299

FRAME = 'J2000'  # Earth mean equator and equinox of J2000
#FRAME = 'ECLIPJ2000'  # Mean ecliptic and equinox of J2000

print(spice.tkvrsn("TOOLKIT"))

spice.furnsh("./cassMetaK.txt")

utc = '2017-09-01 12:05:50'
et = spice.str2et(utc)

state, lightTimes = spice.spkez(VENUS_ID, et, 'J2000', 'NONE', SSB_ID)

position = state[:3]
velocity = state[3:]

print(position)
print(velocity)

Meine Kerne:

$ cat cassMetaK.txt 
\begindata
KERNELS_TO_LOAD=(
   'naif0009.tls',
   'de431.bsp',
)
\begintext

Dies sind die Werte für Position und Geschwindigkeit, die ich bekomme:

CSPICE_N0066
[ 19217297.26117753  97944611.05090818  42842518.49871409]
[-34.60894367   4.64339943   4.27861046]

Und beachten Sie die geringfügigen Unterschiede zur HORIZONS-Ausgabe:

*******************************************************************************
Ephemeris / WWW_USER Mon Sep  4 00:46:19 2017 Pasadena, USA      / Horizons    
*******************************************************************************
Target body name: Venus (299)                     {source: DE431mx}
Center body name: Solar System Barycenter (0)     {source: DE431mx}
Center-site name: BODY CENTER
*******************************************************************************
Start time      : A.D. 2017-Sep-01 12:05:50.0000 TDB
Stop  time      : A.D. 2017-Sep-02 00:00:00.0000 TDB
Step-size       : 1440 minutes
*******************************************************************************
Center geodetic : 0.00000000,0.00000000,0.0000000 {E-lon(deg),Lat(deg),Alt(km)}
Center cylindric: 0.00000000,0.00000000,0.0000000 {E-lon(deg),Dxy(km),Dz(km)}
Center radii    : (undefined)                                                  
Output units    : KM-S                                                         
Output type     : GEOMETRIC cartesian states
Output format   : 3 (position, velocity, LT, range, range-rate)
Reference frame : ICRF/J2000.0                                                 
Coordinate systm: Earth Mean Equator and Equinox of Reference Epoch            
*******************************************************************************
JDTDB
   X     Y     Z
   VX    VY    VZ
   LT    RG    RR
*******************************************************************************
$$SOE
2457998.004050926 = A.D. 2017-Sep-01 12:05:50.0000 TDB 
 X = 1.921958776713952E+07 Y = 9.794430371601710E+07 Z = 4.284223531920820E+07
 VX=-3.460881129595693E+01 VY= 4.644081825248464E+00 VZ= 4.278909130085439E+00
 LT= 3.623116682955181E+02 RG= 1.086183056003940E+08 RR=-2.484635847985155E-01
$$EOE

Ich weiß, dass die Fehler unter 0,1 % liegen, aber es ist sehr wichtig für mich zu wissen, wie genau HORIZONS diese Werte berechnet, wenn nicht mit dem Code, den ich verwende. Was kann die Quelle dieser Abweichungen sein?

Antworten (1)

Basierend auf dieser Antwort in spice-discussion muss man die Zeit explizit als TDB eingeben, wie folgt:

tdb = '2017-09-01 12:05:50 TDB'
et = spice.str2et(tdb)

Dann stimmen die Ergebnisse genau überein:

CSPICE_N0066
[ 19219587.76713952  97944303.7160171   42842235.3192082 ]
[-34.6088113    4.64408183   4.27890913]
Bravo! Es ist großartig zu sehen, dass Python gepostet wird. Mit der Klasse von Skyfield können Sie auch verschiedene Zeitskalen in Python erkunden Timescale.
Ich benutze normalerweise astropy.timedafür. Wenn Sie mehr Python sehen möchten, schauen Sie sich das unbedingt an ;) docs.poliastro.space
Wow, da sind viele Leckereien dabei! Ok werde ich mir anschauen, danke!