I'm querying for planetary ephemeris and to make sure I am getting expected values I'm comparing my results against the JPL HORIZONS website. Unfortunately I'm not seeing the accuracies that I was expecting. I'm querying for January 1st at midnight for the year 2000 and 2015. I'm doing this for the Sun, Moon and Jupiter. The Sun position is around 5100 meters off, the moon position is about 40 meters off and Jupiter's position is between 137 km and 179 km off.
I downloaded and have Orekit using the 421 ephemerides at this point. These get me closest. I've tried 406, 423 and 430. The 430 ephemerides didn't even load (I believe they changed the format slightly) and 406 was worse by at least 20%. My settings on the website are:
Ephemeris Type: Vectors
Target Body: Jupiter [599], Sun [10] or Moon [301]
Coordinate Origin: Geocentric [500] (which is Earth[399] BODY CENTER)
Reference plane: Earth mean equator and equinox of reference
Reference System: ICRF/J2000
Type: Geometric states (no aberration; instantaneous dynamic states)
Times entered for vector format is always in Coordinate Time, which matches Orekit's TDB timescale. I'm generating my "actual" values using code like this:
PVCoordinatesProvider pvSun = CelestialBodyFactory.getSun();
Frame j2000 = FramesFactory.getEME2000();
AbsoluteDate epoch = new AbsoluteDate(2000, 1, 1, 0, 0, 0,
TimeScalesFactory.getTDB());
Vector3D actualPosition = pvSun.getPVCoordinates(epoch, j2000)
.getPosition();
It's not clear to me what I am doing wrong. I've tried messing around with the coordinate frame, timescale and changing the type generated by HORIZONS to include light time delay and stellar aberration. The closest I've gotten to matching HORIZONS is with the above configuration of the HORIZONS site and this code.
If anything jumps out at someone, let me know.
Thanks!
Hank