va7eex
8 years ago
committed by
GitHub
2 changed files with 97 additions and 0 deletions
@ -0,0 +1,91 @@ |
|||
import requests |
|||
import json |
|||
import array |
|||
import sys |
|||
|
|||
web_tle = [ 'http://www.celestrak.com/NORAD/elements/weather.txt', 'https://www.celestrak.com/NORAD/elements/stations.txt' ] |
|||
|
|||
sats_of_interest = { 'NOAA-15':'NOAA 15', 'NOAA-18':'NOAA 18', 'NOAA-19':'NOAA 19', 'METEOR-M1':'METEOR-M 1', 'METEOR-M2':'METEOR-M 2', 'ISS':'ISS (ZARYA)' } |
|||
#sats_of_interest = { 'NOAA-15':'NOAA 15' } |
|||
|
|||
|
|||
#page = urllib2.urlopen(web_noaa_tle) |
|||
#page = requests.get(web_noaa_tle, stream=True) |
|||
|
|||
#NOAA 15 [B] |
|||
#1 25338U 98030A 16173.50363904 .00000079 00000-0 52195-4 0 9991 |
|||
#2 25338 98.7825 177.6616 0010829 167.3279 192.8174 14.25734916941605 |
|||
|
|||
data = {} |
|||
line_num = 0 |
|||
cur_sat_line = -1 |
|||
cur_sat = "" |
|||
|
|||
def check_line1(str): |
|||
if( len(str) == 69 ): |
|||
fields = {} |
|||
fields['line number'] = int(str[0:1]) |
|||
fields['satellite number + classification'] = str[3:9] |
|||
fields['international designator'] = str[10:17] |
|||
fields['epoch'] = float(str[19:32]) |
|||
fields['1st mean motion'] = float(str[34:43]) |
|||
fields['2nd mean motion'] = str[45:52] |
|||
fields['BSTAR drag term'] = str[54:61] |
|||
fields['the number 0'] = int(str[62:63]) |
|||
fields['element set number + checksum'] = int(str[65:69]) |
|||
|
|||
else: |
|||
return False |
|||
return True |
|||
|
|||
def check_line2(str): |
|||
if( len(str) == 69 ): |
|||
fields = {} |
|||
fields['line number'] = str[0:1] |
|||
fields['satellite number'] = str[3:7] |
|||
fields['inclination'] = str[9:16] |
|||
fields['right ascension'] = str[18:25] |
|||
fields['eccentricity'] = str[27:33] |
|||
fields['argument of perigee'] = str[35:42] |
|||
fields['mean anomaly'] = str[44:51] |
|||
fields['mean motion + revolution number + checksum'] = str[53:69] |
|||
print fields |
|||
return fields |
|||
|
|||
for field, data in fields.iteritems(): |
|||
if( not float(data).isnum() ): |
|||
print field, data, "is not an number!" |
|||
return False |
|||
else: |
|||
return False |
|||
return True |
|||
|
|||
for tle in web_tle: |
|||
page = requests.get(tle, stream=True) |
|||
for line in page.iter_lines(): |
|||
#print '>>', line |
|||
for hsat, sat in sats_of_interest.iteritems(): |
|||
if( line.startswith(sat) ): |
|||
cur_sat_line = line_num |
|||
cur_sat = hsat |
|||
|
|||
if( line_num == cur_sat_line + 1 and cur_sat_line >= 0 ): |
|||
if( check_line1(line) ): |
|||
data[cur_sat] = line |
|||
# else: |
|||
# sys.exit("Malformed Data (Line 1), Exiting. " + line) |
|||
|
|||
if( line_num == cur_sat_line + 2 and cur_sat_line >= 0 ): |
|||
if( check_line2(line) ): |
|||
data[cur_sat] = data[cur_sat] + '\n' + line |
|||
# else: |
|||
# sys.exit("Malformed Data (Line 2), Exiting. " + line) |
|||
|
|||
line_num = line_num + 1 |
|||
|
|||
|
|||
for s, tle in data.iteritems(): |
|||
print s, '\n', tle |
|||
|
|||
with open('sat_tle.txt', 'w') as fp: |
|||
json.dump(data, fp) |
@ -0,0 +1,6 @@ |
|||
apt-get update |
|||
apt-get install git cmake make libusb-1.0-0-dev python-dev |
|||
git clone https://github.com/nsat/pypredict |
|||
python pypredict/setup.py install |
|||
mkdir sat_scheds |
|||
mkdir sat_output |
Loading…
Reference in new issue