summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJogi Hofmüller <jogi@mur.at>2011-08-23 10:36:43 +0000
committerJogi Hofmüller <jogi@mur.at>2011-08-23 10:36:43 +0000
commit4104f56dd138d846b77b2e197e7a1ff0269341bf (patch)
treeb488831510643ffe6efdb7b59ea7ab5996f59a94
parent- added creation of tle.js to MmdSatellite.py (diff)
- fixed stupid bug when writing TLE file to java array
- note: TLE files come in DOS format!!! git-svn-id: https://svn.spreadspace.org/mur.sat@145 7de4ea59-55d0-425e-a1af-a3118ea81d4c
-rw-r--r--tools/mmd/MmdSatellite.py68
1 files changed, 42 insertions, 26 deletions
diff --git a/tools/mmd/MmdSatellite.py b/tools/mmd/MmdSatellite.py
index e3f46af..bd11d40 100644
--- a/tools/mmd/MmdSatellite.py
+++ b/tools/mmd/MmdSatellite.py
@@ -25,12 +25,12 @@ def dms2degdec (lonlat):
class Satellite:
- def __init__ (self, location = False):
+ def __init__ (self, observer = False):
self.name = 'RADIOSCAF-B'
self.nickname = 'ARISSAT-1'
self.tle_filename = '/usr/local/mmd/tles/current'
self.db = Db ()
- self.initSatellite (location)
+ self._initSatellite (observer)
def getCurrentSSP (self):
ssp = self._loadCurrentSSP ()
@@ -63,6 +63,25 @@ class Satellite:
astring = '{0}\n\t\t)\n\t);'.format (astring)
return astring
+ def cronJob (self):
+ if self._updateTLEFile ():
+ self._updateTrajectory ()
+ return self._computeTrajectory ()
+
+ def getLatestSSP (self):
+ return self.db.satelliteGetLatestSSP ()
+
+ def getNextPass (self):
+ '''
+ return 6-tuple with info for next pass
+ '''
+ sat = ephem.readtle (self._tle[0], self._tle[1], self._tle[2])
+ observer = ephem.Observer ()
+ observer.date = time.strftime ('%Y/%m/%d %H:%M', time.gmtime ())
+ observer.long, observer.lat, observer.elevation = str (self.observer.longitude), str (self.observer.latitude), self.observer.altitude
+ observer.pressure = 0
+ observer.horizon = '-0:34'
+ return observer.next_pass (sat)
def _loadTrajectory (self, minutes):
return self.db.satelliteLoadTrajectory (time.strftime ('%s'), minutes)
@@ -70,18 +89,18 @@ class Satellite:
def _loadCurrentSSP (self):
return self.db.satelliteLoadCurrentSSP (time.strftime ('%s'))
- def initSatellite (self, location = False):
+ def _initSatellite (self, observer = False):
if not self._loadTLE ():
return False
- if location:
- loc = location
+ if observer:
+ self.observer = observer
else:
- loc = Location ()
+ self.observer = Location ()
sat = ephem.readtle (self._tle[0], self._tle[1], self._tle[2])
- obs = ephem.Observer ()
- obs.long, obs.lat, obs.elevation = loc.longitude, loc.latitude, loc.altitude
- sat.compute (obs)
+ observer = ephem.Observer ()
+ observer.long, observer.lat, observer.elevation = str (self.observer.longitude), str (self.observer.latitude), self.observer.altitude
+ sat.compute (observer)
self.longitude = dms2degdec (sat.sublong.__str__ ())
self.latitude = dms2degdec (sat.sublat.__str__ ())
self.altitude = round (float (sat.elevation.__str__ ()), 1)
@@ -96,7 +115,7 @@ class Satellite:
sat = ephem.readtle (self._tle[0], self._tle[1], self._tle[2])
graz = ephem.Observer ()
- graz.long, graz.lat, graz.elevation = 15.44226, 47.06576, 376
+ graz.long, graz.lat, graz.elevation = '15.44226', '47.06576', 376
latest = self.db.satelliteGetLatestSSP ()
if latest:
@@ -127,11 +146,6 @@ class Satellite:
return False
return True
- def cronJob (self):
- if self._updateTLEFile ():
- self._updateTrajectory ()
- return self._computeTrajectory ()
-
def _updateTLEFile (self):
'''
store new TLE data in file with format
@@ -152,18 +166,19 @@ class Satellite:
return False
def _createOrbtrackTLEFile (self):
- tle_file = open (self.tel_filename).read ()
+ tle_file = open (self.tle_filename)
orbtrack_file = open ("/var/www/hofos.at/mmd/static/tle.js", "w")
- orbtrack_file.write ("\\\\{0}\nPLib.tleData = \n[".format (time.strftime ("%Y%m%d - %H%M%S")))
+ orbtrack_file.write ("//{0}\nPLib.tleData = \n[\n".format (time.strftime ("%Y%m%d - %H%M%S")))
count = 0
for line in tle_file.readlines ():
+ l = line[:-2]
if count == 2:
- orbtrack_file.write (line[:-1])
+ orbtrack_file.write (' "{0}"'.format (l))
else:
- orbtrack_file.write (line)
+ orbtrack_file.write (' "{0}",\n'.format (l))
count += 1
- orbtrack_file.write ("];")
- tel_file.close ()
+ orbtrack_file.write ("\n];\n// EOF\n")
+ tle_file.close ()
orbtrack_file.close ()
def _compareAndLinkNewTLEFile (self, filename):
@@ -185,12 +200,9 @@ class Satellite:
def _updateTrajectory (self):
self.db.satelliteDeleteObsoleteSSPs (time.strftime ('%s'))
- def getLatestSSP (self):
- return self.db.satelliteGetLatestSSP ()
-
def _getTLEFileFromNetwork (self):
'''
- retreive TLE update from NORAD
+ retreive TLE update from NORAD/celestrak
'''
networkfile = 'http://www.celestrak.com/NORAD/elements/amateur.txt'
try:
@@ -204,7 +216,11 @@ if __name__ == "__main__":
# print satellite.longitude, satellite.latitude
# print satellite.getTrajectoryAsJavaArray ('test', 100)
try:
- assert satellite.cronJob (), 'executing cronjob failed'
+ # assert satellite.cronJob (), 'executing cronjob failed'
+ satellite._createOrbtrackTLEFile ()
+ next_pass = satellite.getNextPass ()
+ assert next_pass, 'getting next pass failed'
+ print next_pass
except AssertionError as e:
print 'Error: {0}'.format (e)
sys.exit (1)