In [1]:
import ephem
import tle_util
import csv
import numpy as np
import copy
import matplotlib as mpl
import keplerian

In [2]:
def orbdiff(tle1, tle2, start, end):
    delta_r_sum=0
    n=0
    for t in xrange(start, end, 200):
        r1 = np.array(keplerian.state_vectors(tle1, t)[0])
        r2 = np.array(keplerian.state_vectors(tle2, t)[0])
        delta_r_sum += np.linalg.norm(r1 - r2)
        n += 1
    return delta_r_sum / n

def orbdiffepochs(tle1, tle2):
    start = int(tle1.epoch_unixtime())
    end = int(tle2.epoch_unixtime())
    if end - start < 5400:
        end = start + 5400
    return orbdiff(tle1, tle2, start, end)

def invkep(M, ecc):
    tol=1e-6
    E=M
    while True:
        E_prev = E
        E = E_prev - (E_prev - ecc * sin(E_prev) - M) / (1 - ecc * cos(E_prev))
        if abs(E - E_prev) < tol:
            break

In [3]:
tles=tle_util.load_seq('39512.tle')
ns = xrange(0, len(tles)-1)
deltas = []
ts = []
for n in ns:
    ts.append(tles[n+1].epoch_unixtime())
    deltas.append(orbdiffepochs(tles[n],tles[n+1]))
plot(ts, deltas)


Out[3]:
[<matplotlib.lines.Line2D at 0xb5c980c>]

In [4]:
tles[0]


Out[4]:
0 FLOCK 1-3
1 39512U 98067DG  14 43.01074693 -.66638940  00000-0 -16860+1 0    11
2 39512 051.6942 000.0189 0034324 229.5376 259.4189 15.53969161    12

In [16]:
def plot_tle(catnum):
    tles=tle_util.load_seq('%d.tle' % catnum)
    ns = xrange(0, len(tles)-1)
    deltas = []
    ts = []
    for n in ns:
        ts.append(tles[n+1].epoch_unixtime())
        deltas.append(orbdiffepochs(tles[n],tles[n+1]))
    plot(ts, deltas, 'b+-')
    xlabel('Epoch unix time / seconds')
    ylabel('Delta / km')
    title('Difference between consecutive element sets')

In [17]:
plot_tle(39512)



In [18]:
plot_tle(39518)



In [19]:
plot_tle(39530)



In [19]:


In [ ]: