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]:
In [4]:
tles[0]
Out[4]:
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 [ ]: