summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJogi Hofmüller <jogi@mur.at>2011-08-13 09:55:41 +0000
committerJogi Hofmüller <jogi@mur.at>2011-08-13 09:55:41 +0000
commit8183967eeef2d3fb13afa5e28859239613b33c6c (patch)
tree7f09849fcb0f3d35ac332af0a0be5df0b16a52cf
parent- fiddling with styles ... (diff)
- implemented downloading and parsing TLEs from http://www.celestrak.com/NORAD/elements/amateur.txt
git-svn-id: https://svn.spreadspace.org/mur.sat@140 7de4ea59-55d0-425e-a1af-a3118ea81d4c
-rw-r--r--tools/mmd/MmdSatellite.py60
1 files changed, 40 insertions, 20 deletions
diff --git a/tools/mmd/MmdSatellite.py b/tools/mmd/MmdSatellite.py
index e6a0c08..97f516a 100644
--- a/tools/mmd/MmdSatellite.py
+++ b/tools/mmd/MmdSatellite.py
@@ -4,28 +4,10 @@ import ephem
import time
import os
import sys
+import urllib
from MmdDb import Db
from MmdLocation import Location
-# def createJavaArray (point_list, name):
-# astring = '''var {0} = new Array (\n'''.format (name)
-# astring = '{0}\tnew Array ('.format (astring)
-# last = 'west'
-#
-# for point in point_list:
-# if point[0][0] == '-':
-# if last == 'east':
-# astring = astring[:-1]
-# astring = '{0}\n\t\t),\n\tnew Array ('.format (astring)
-# last = 'west'
-# else:
-# last = 'east'
-# astring = '{0}\n\t\tnew OpenLayers.LonLat ({1}, {2}).transform (from, to),'.format (astring, point[0], point[1])
-# if astring[-1] == ',':
-# astring = astring[:-1]
-# astring = '{0}\n\t\t)\n\t);'.format (astring)
-# return astring
-
def dms2degdec (lonlat):
'''
convert a position argument from Deg:Min:Sec.Frac to
@@ -44,7 +26,8 @@ def dms2degdec (lonlat):
class Satellite:
def __init__ (self, location = False):
- self.name = 'RADIOSCAF-B/ARISSAT-1'
+ self.name = 'RADIOSCAF-B'
+ self.nickname = 'ARISSAT-1'
self.tle_filename = '/usr/local/mmd/tles/current'
self.db = Db ()
self.initSatellite (location)
@@ -150,14 +133,51 @@ class Satellite:
return self._computeTrajectory ()
def _updateTLEFile (self):
+ '''
+ store new TLE data in file with format
+ YYYYMMDDhhmmss (Year Month Day hour minute second)
+ and make symlink to self.tle_filename
+ '''
+ if not self._getTLEFileFromNetwork ():
+ return False
+ filename = '/usr/local/mmd/tles/{0}'.format (time.strftime ('%Y%m%d%H%M%S'))
+ for line in self.tle_data:
+ if line.startswith (self.name):
+ tle = open (filename, 'w')
+ tle.write (line)
+ tle.write (self.tle_data.next ())
+ tle.write (self.tle_data.next ())
+ tle.close ()
+ return self._compareAndLinkNewTLEFile (filename)
return False
+ def _compareAndLinkNewTLEFile (self, filename):
+ old_data = open (self.tle_filename).read ()
+ new_data = open (filename).read ()
+ if old_data == new_data:
+ os.unlink (filename)
+ return False
+ os.unlink (self.tle_filename)
+ os.symlink (filename, self.tle_filename)
+ return True
+
def _updateTrajectory (self):
self.db.satelliteDeleteObsoleteSSPs (time.strftime ('%s'))
def getLatestSSP (self):
return self.db.satelliteGetLatestSSP ()
+ def _getTLEFileFromNetwork (self):
+ '''
+ retreive TLE update from NORAD
+ '''
+ networkfile = 'http://www.celestrak.com/NORAD/elements/amateur.txt'
+ try:
+ self.tle_data = urllib.urlopen (networkfile)
+ except IOError:
+ return False
+ return True
+
if __name__ == "__main__":
satellite = Satellite ()
# print satellite.longitude, satellite.latitude