pythonsatelliteskyfield

Skyfield satellite position wrong?


I am trying to find the position of the MODIS AQUA satellite at arbitrary times. I found the skyfield package for this, however comparisons with NASA's LAADS page are wildly different. Am I doing something wrong with the Skyfield package, or is there another reason for these disagreements?

For example: According to LAADS AQUA was over Swiss/German border on 2015/05/09 12:25. However, the following code suggests it was actually somewhere over the South Pacific.

from skyfield.api import load, wgs84

# get TLE
satUrl = 'http://celestrak.com/NORAD/elements/active.txt'
sats = load.tle_file(satUrl)
sats = {sat.name: sat for sat in sats}
sat = sats['AQUA']

t = load.timescale().utc(2015, 5, 9, 12, 25)
sat_loc = wgs84.latlon_of(sat.at(t))
[x.degrees for x in sat_loc]  
# [-26.133974097154073, -172.11927450179587]


Solution

  • The only problem is that you are using a current TLE to try to predict a position 8 years ago. The Skyfield documentation addresses this:

    https://rhodesmill.org/skyfield/earth-satellites.html#checking-a-tles-epoch

    And the same point is made at the top of the document — check out item number 3:

    Elements are only useful for a week or two on either side of the epoch date. For later dates, you will want to download a fresh set of elements. For earlier dates, you will want to pull an old TLE from the archives.