#!/usr/bin/env python import ephem import time def createJavaArray (jarray, name): astring = 'var {0} = new Array ('.format (name) for e in jarray: astring = '{0}\n\t{1}'.format (astring, e) astring = '{0}\n);'.format (astring) return astring def dms2degdec (lonlat): parts = lonlat.split (':') if len (parts) != 3: return 0.0 degrees = float (parts[0]) fraction = (float (parts[1]) * 60.0 + float (parts[2])) / 3600 if parts[0][0] == '-': return degrees - fraction return degrees + fraction line0 = "ARISSAT-1/RADIOSCAF-B" line1 = "1 37772U 98067CK 11220.22334818 .00031592 00000-0 37647-3 0 118" line2 = "2 37772 51.6391 258.8215 0013530 58.1430 19.7106 15.60689826 619" line0 = "FENGYUN 1C DEB" line1 = "1 30807U 99025AUR 11217.95818111 .00601080 13349-3 25872-2 0 3694" line2 = "2 30807 099.0868 165.1314 0028608 315.8949 044.0355 15.84325581244298" # line0 = "ARISSat-1" # line1 = "1 37772U 98067CK 11219.88827546 .00035107 00000-0 41770-3 0 100" # line2 = "2 37772 51.6395 260.5080 0013376 55.7500 298.2807 15.60679045 559" # # line0 = "ISS (ZARYA)" # line1 = "1 25544U 98067A 11220.37158565 .00004586 00000-0 61164-4 0 8541" # line2 = "2 25544 51.6393 258.0860 0012828 54.3148 131.8091 15.60282006729050" if __name__ == "__main__": sat = ephem.readtle (line0, line1, line2) graz = ephem.Observer () graz.long, graz.lat, graz.elevation = '15.44226', '47.06576', 376 # graz.date = time.strftime ('%Y/%m/%d %H:%M:S') # sat.compute (graz) # print sat.name, graz.next_pass (sat), graz.date, sat.sublong, sat.sublat, float (sat.range/1000) # print sat.name, graz.date, dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), float (sat.range/1000) # graz.date += ephem.minute # sat.compute (graz) # print sat.name, graz.next_pass (sat), graz.date, sat.sublong, sat.sublat, float (sat.range/1000) # print sat.name, graz.date, dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), float (sat.range/1000) sat.compute (graz) array_string = 'new OpenLayers.LonLat ({0}, {1}).transform (from, to){2}' java_array = [array_string.format (dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), ',')] for i in range (12 * 24): graz.date += 5 * ephem.minute sat.compute (graz) # print sat.name, graz.date, dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), float (sat.elevation) / 1000 java_array.append (array_string.format (dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), ',')) graz.date += 5 * ephem.minute sat.compute (graz) java_array.append (array_string.format (dms2degdec (sat.sublong.__str__ ()), dms2degdec (sat.sublat.__str__ ()), '')) print createJavaArray (java_array, 'points') # vim: tw=0 ts=2 # EOF