From 4104f56dd138d846b77b2e197e7a1ff0269341bf Mon Sep 17 00:00:00 2001 From: Jogi Hofmüller Date: Tue, 23 Aug 2011 10:36:43 +0000 Subject: - 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 --- tools/mmd/MmdSatellite.py | 68 +++++++++++++++++++++++++++++------------------ 1 file 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) -- cgit v1.2.3