Skip to content

Instantly share code, notes, and snippets.

@lofaldli
Created February 5, 2018 11:56
Show Gist options
  • Select an option

  • Save lofaldli/2225839379ef47c32ed7688d86c94c84 to your computer and use it in GitHub Desktop.

Select an option

Save lofaldli/2225839379ef47c32ed7688d86c94c84 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import ephem
from math import degrees
from datetime import datetime
class Observer(ephem.Observer):
def __init__(self, name, lat, lon, elevation):
super().__init__()
self.name, self.lat, self.lon, self.elevation = (
name, str(lat), str(lon), elevation)
def read_tle(lines):
return ephem.readtle(*lines)
def time_fmt(et):
return datetime(*map(int, et.tuple())).strftime('%Y-%m-%d %H.%M.%S')
obs = Observer('ESOC', 49.8542, 8.625, 135)
# https://celestrak.com/NORAD/elements/stations.txt
sat = read_tle('''\
SWISSCUBE
1 35932U 09051B 18035.40447406 .00000096 00000-0 32613-4 0 9997
2 35932 98.5241 183.5296 0006635 254.5696 105.4768 14.56117004444118\
'''.split('\n'))
n = 10
print('listing %d next passes of %s from %s (%.2fN %.2fE)' % (
n, sat.name.strip(), obs.name, degrees(obs.lat), degrees(obs.lon)))
print('---------------------------------------------------------')
print('AOS az LOS az')
print('---------------------------------------------------------')
for _ in range(n):
aos, aos_az, tca, alt, los, los_az = obs.next_pass(sat)
obs.date = los + ephem.minute
print('%s | %5.1f | %s | %5.1f' % (time_fmt(aos), degrees(aos_az),
time_fmt(los), degrees(los_az)))
print('---------------------------------------------------------')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment