summaryrefslogtreecommitdiff
path: root/iss/predictions.py
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2020-09-24 22:53:08 +0300
committerYuval Adam <_@yuv.al>2020-09-24 22:53:08 +0300
commitfcb862b5f56094504746ca75820f19d978ea08dc (patch)
tree91933a32636eab6bded60366fd12b9b53fcd706d /iss/predictions.py
parent8a5662c1d2db42e9f7693049aaf3b521899fff68 (diff)
Refactor inits
Diffstat (limited to 'iss/predictions.py')
-rw-r--r--iss/predictions.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/iss/predictions.py b/iss/predictions.py
index 04dcc88..37bf49e 100644
--- a/iss/predictions.py
+++ b/iss/predictions.py
@@ -23,28 +23,30 @@ class Predictions(object):
self.lng = lng
self.altitude = altitude
self.tz = tz
- self.satellite = satellite
self.start = start
self.days = days
self.tle_file = tle_file.resolve().as_posix() if tle_file else STATIONS_URL
+ self.satellite = self.init_satellite(satellite)
+ self.location = self.init_location()
+
def init_stations(self):
return load.tle_file(self.tle_file)
+ def init_satellite(self, satellite):
+ satellites = self.init_stations()
+ by_name = {sat.name: sat for sat in satellites}
+ return by_name[satellite]
+
+ def init_location(self):
+ return Topos(latitude_degrees=self.lat, longitude_degrees=self.lng)
+
def get_next_days(self):
ts = load.timescale()
t0 = ts.now() if not self.start else ts.ut1_jd(self.start)
t1 = ts.ut1_jd(t0.ut1 + self.days)
return t0, t1
- def get_location(self):
- return Topos(latitude_degrees=self.lat, longitude_degrees=self.lng)
-
- def get_satellite(self):
- satellites = self.init_stations()
- by_name = {sat.name: sat for sat in satellites}
- return by_name[self.satellite]
-
def get_prediction_details(self, rise, culminate, zet):
return {
"rise": {"iso": rise.utc_iso(), "ut1": rise.ut1},
@@ -52,13 +54,15 @@ class Predictions(object):
"set": {"iso": zet.utc_iso(), "ut1": zet.ut1},
}
+ def get_position_details(self, satellite, t):
+ geocentric = satellite.at(t)
+ return {"distance": geocentric.position.km}
+
def get_prediction_events(self):
- satellite = self.get_satellite()
t0, t1 = self.get_next_days()
- location = self.get_location()
- ts, _events = satellite.find_events(
- location, t0, t1, altitude_degrees=self.altitude
+ ts, _events = self.satellite.find_events(
+ self.location, t0, t1, altitude_degrees=self.altitude
)
# events are returned as 3-tuples of (rise, culminate, set)