1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#!/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
|