For a project I need precise satellite positions in ICRF. After doing some searching I was not able to determine any online resource which provides such time series. In detail I am interested in the coordinate time series of Grace1 and Grace2 of 2017 and 2018. Are those somewhere publicly available?

So far I have found sources for tow-line elements (TLE) which I tried to convert with pyEmph, but I have found no convenient way to get ICRF coordinates from Astrometic Geocentric positions and I am also curious whether the precision would be reasonable this way (cf. accuracy TLE), since I need a precision in the sub-meter range.

  • 2
    $\begingroup$ "Precise satellite positions" and "two line elements" are contradictory, particularly in the context of the GRACE satellites. If precision is what you are after, what you want are the GRACE Level 1B navigation datasets. $\endgroup$ Feb 21, 2018 at 20:38
  • $\begingroup$ Ok, I figuered that out concerning the TLE. Are those navigation datasets publicly available anywhere? $\endgroup$
    – lenxn
    Feb 22, 2018 at 11:16
  • 1
    $\begingroup$ @lenxn a quick search produces this linking to this linking to (for example) the pdf GRACE Level 1B Data Product User Handbook. Why don't you take a look at those, or do some more searching, and dig in. After you have a better understanding of the "landscape" you can decide just how badly you really need sub-meter precision, and if you really do, then consider asking a new, more detailed question. $\endgroup$
    – uhoh
    Feb 22, 2018 at 11:55
  • $\begingroup$ @lenxn I am not sure how current that information is, the pdf is dated 2010. $\endgroup$
    – uhoh
    Feb 22, 2018 at 11:57

1 Answer 1


Skyfield, at http://rhodesmill.org/skyfield (note the similarity to the location for PyEphem, not a coincidence) does exactly what you are asking for. You give it a TLE and you get coordinates in ICRF (or a variety of other options).

However, you won't get better than several kilometers from TLEs, they are simply not that accurate to begin with, nor is the SGP4 propagator that they are used with. In order to get "...a precision in the sub-meter range" you will have to find some carefully reconstructed (and now historical!) orbit data from the scientists working with the Grace spacecraft for that.

I've plotted the geocentric position, but here are the numerical values for Geocentric, J2000.0 relative to Solar System Barycenter referenced to the Earth's Equator, and to the Ecliptic planes:

[ -725.97623801     -4703.39226501   4823.26596748 ]
[ -1.37224552e+08   5.15960658e+07   2.23564481e+07]
[ -1.37224552e+08   5.62313492e+07  -1.20962433e+04]

enter image description here

TLE = """1 25544U 98067A   18051.96457625  .00002577  00000-0  46169-4 0  9990
2 25544  51.6416 238.1089 0003437 117.8478 357.3261 15.54125912100440"""

L1, L2 = TLE.splitlines()

import numpy as np
import matplotlib.pyplot as plt
from skyfield.api import Loader, EarthSatellite

load = Loader('~/Documents/fishing/SkyData')
data = load('de421.bsp')
ts   = load.timescale()

planets = load('de421.bsp')
earth   = planets['earth']

ts      = load.timescale()
minutes = np.arange(0, 93, 0.5)
time    = ts.utc(2018, 2, 27, 0, minutes)

ISS_Geo     = EarthSatellite(L1, L2)
ISS_ICRF    = earth + EarthSatellite(L1, L2)

ISS_Geo_pos     = ISS_Geo.at(time).position.km
ISS_ICRF_pos    = ISS_ICRF.at(time).position.km
ISS_ICRF_eclpos = ISS_ICRF.at(time).ecliptic_position().km

for thing in ISS_Geo_pos, ISS_ICRF_pos, ISS_ICRF_eclpos:
    print thing[:, 0]

for thing in ISS_Geo_pos:

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.