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]
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.