JPL ephemerides for Julia
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
benchmark Improve multi-segment performance Jun 22, 2017
deps CI Jun 22, 2017
src Even faster Jun 22, 2017
test Improve multi-segment performance Jun 22, 2017
.gitignore Move ASCII API to legacy package and ready for 0.5 Aug 15, 2016
.travis.yml CI Jun 22, 2017
LICENSE.md MIT license. Nov 26, 2013
README.md Fix CI settings Mar 24, 2017
REQUIRE Improve multi-segment performance Jun 22, 2017
REQUIRE.dev CI Jun 22, 2017
appveyor.yml CI Jun 22, 2017

README.md

JPLEphemeris.jl

Travis Status Build status PkgEval v5

The JPL Development Ephemerides are the results of simulations of the Solar System used for spacecraft navigation and astronomical purposes. They are published as SPK kernel files which contain sets of Chebyshev polynomial coefficients with which the position and velocity of the Solar System's planets can be interpolated with high precision for all dates covered by the ephemeris.

This package provides functionality to read SPK files and compute the position and velocity of the planets directly from Julia.

Installation

The package can be installed through Julia's package manager.

Pkg.add("JPLEphemeris")

Usage

using JPLEphemeris

# Load the DE430 SPK kernel
spk = SPK("de430.bsp")

# List the available segments
print_segments(spk)

# 2016-01-01T00:00 in Julian days
jd = Dates.datetime2julian(DateTime(2016,1,1,0,0,0))

# Position of Earth's barycenter w.r.t. the Solar System's barycenter at 2016-01-01T00:00
# [km]
pos = position(spk, "earth barycenter", jd)

# Velocity of Earth w.r.t. Earth's barycentre at 2016-01-01T00:00
# [km/s]
vel = velocity(spk, "earth barycenter", "earth", jd)

# Compute the state vector (position and velocity) of Earth's barycenter (NAIF ID: 3)
# w.r.t. to the Solar System's barycenter (NAIF ID: 0) for a range of Julian days
st = state(spk, 0, 3, jd:jd+100)

# Two-part Julian dates (day number and fraction) can be used for higher precision.
# For example for 2016-01-01T12:00:
st = state(spk, 0, 3, jd, 0.5)

ASCII API

The ASCII API that was originally included with this package has been moved to LegacyEphemeris.jl.

Validation

The package's test suite uses test files provided by JPL to confirm that the results are correct.

Acknowlegements

Most of this is based on the excellent jplehem library by Brandon Rhodes. Please use it if you need similar functionality in Python.