summaryrefslogtreecommitdiff
path: root/tools/mmd/MmdSatellite.py
blob: 42d4423c29bb06e2f94467e9ad6f84eb1d27b9ff (plain) (blame)
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