Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.stsci.edu/spst/UnixTransition/doc/show_spacecraft_parameters.py
Дата изменения: Fri Apr 8 12:46:13 2016
Дата индексирования: Mon Apr 11 07:14:18 2016
Кодировка:

Поисковые слова: mercury surface
#
#MODULE show_spacecraft_parameters
#
#****************************************************************************
"""Produces a brief list of useful spacecraft parameters

TITLE: show_spacecraft_parameters.py
DEVELOPER: Alan Patterson

PURPOSE: The tool reports a few spacecraft parameters in the database

USAGE: do show_spacecraft_paramters
[-output=]
[-default]

RETURNS: Nothing

MOD HISTORY:
o update for DB49 that removes some fields app 01/20/14
o add DSN fields app 08/07/14
o updated for current fields & python 3 jef 02/04/2016

"""
#****************************************************************************
from __future__ import print_function, division, absolute_import, unicode_literals
import sys
import spss_sys_util
import spst_getopt
import stpydb
import jwst_test_util

__author__ = "Alan Patterson"
__version__ = "02/04/16"

DEFAULT_SCENARIO = 'STS'


def run(*args):
"""The tool extracts a few spacecraft parameters from the database

do check_spacecraft_parameters
[-scenario=]
[-default]
[-prd=]
[-override=]

where: is a specific scenario. (Cannot be specified if a prd
is specified.)
-file is a flag indicating parameter is an file
is a prd name. (Cannot be specified if a scenario
is specified.)
is an override name
"""
if len(args) == 0 or (len(args) == 1 and args[0] is None):
print(run.__doc__)
return not spss_sys_util.SUCCESS
low_args = []
for a in args:
b = a.split('=')[0]
low_args.append(a.replace(b, b.lower()))
allowed_options = ['verbose', 'scenario=', 'default', 'prd=', 'override=']
options, parms = spst_getopt.spst_getopt(low_args, allowed_options)

dbname = 'PPS_DB_NAME'
ppsdb = spss_sys_util.get_environ_variable(dbname)[0]

db = stpydb.stpydb(dbmsName=ppsdb)

db_version = jwst_test_util.get_db_version()

if '-scenario' in options:
if '-prd' in options:
print('\nCannot specify both scenario and prd\n')
print('Exiting...')
return
scenario = options['-scenario']
else:
scenario = DEFAULT_SCENARIO

scenario_data = get_scenario_data(db, scenario)
#print(scenario_data)
if len(scenario_data) == 0:
print('\nNo data for scenario %s\n' % scenario)
print('Exiting...')

#if options.has_key('-outfile'):
#fout = open(options['-outfile'],'w')
#else:
fout = sys.stdout

if '-prd' in options:
prd = options['-prd']
else:
prd = scenario_data[0]['prd_name']

if '-override' in options:
override = options['-override']
else:
override = 'NONE'

if '-verbose' in options:
verbose = True
else:
verbose = False

params = get_params(db, db_version, prd, override, verbose)

fout.write('\nITAR CONTROLLED DATA\n')
fout.write('Release/disclosure of these data to a foreign person as described in\n')
fout.write('22 CFR 120.16 is unlawful without the proper authorization of an exemption,\n')
fout.write('export license, or export agreement as defined in 22 CFR 120-130.\n\n')

fout.write('Scenario : %s\n' % scenario)
fout.write('PRD : %s\n' % prd)
fout.write('Override : %s\n\n\n' % override)
#print(params)
fout.write('Maximum Data Volume = %10.3f (10^6 bytes)\n' % params['max_data_volume'])
fout.write('Worst Case Slew Duration = %10i s\n\n' % params['worst_case_slew_duration'])

fout.write('Maximum Normal Momentum = %10.3f nms\n' % params['max_normal_momentum'])
fout.write('Maximum Station Keeping Momentum = %10.3f nms\n' % params['max_station_keeping_momentum'])
fout.write('Maximum Post SK Momentum = %10.3f nms\n' % params['max_post_station_keeping_momentum'])
#fout.write('Minimum Momentum Unload Separation = %10i s\n' % \
# params['min_momentum_unload_separation'])
fout.write('Minimum Mom Unload SK Separation = %10i s\n' % params['min_momentum_unload_station_keeping_separation'])
fout.write('Station Keeping Separation = %10i s\n' % params['station_keeping_separation'])
fout.write('Maximum Number of MUs between SKs = %10i\n' % params['max_momentum_unloads'])
#fout.write('Sun Roll Minimum = %10.4f degrees\n' % params['sun_roll_min'])
#fout.write('Sun Roll Maximum = %10.4f degrees\n' % params['sun_roll_max'])
#fout.write('Pitch Minimum = %10.4f degrees\n' % params['pitch_min'])
#fout.write('Pitch Maximum = %10.4f degrees\n' % params['pitch_max'])
fout.write('Minimum V1 Sun Angle = %10.4f degrees\n' % params['min_v1_sun_angle'])
fout.write('Maximum V1 Sun Angle = %10.4f degrees\n' % params['max_v1_sun_angle'])
fout.write('OP Window End Pad = %10i s\n' % params['op_window_end_pad'])
fout.write('Minimum EST to LST separation = %10i s\n' % params['min_EST_to_LST_separation'])
fout.write('Maximum EST to LST separation = %10i s\n' % params['max_EST_to_LST_separation'])
fout.write('\n')
fout.write('DSN Contact Begin Overhead = %10i s\n' % params['dsn_contact_begin_overhead'])
fout.write('DSN Contact End Overhead = %10i s\n' % params['dsn_contact_end_overhead'])
fout.write('DSN Data Rate = %10.4f (10^6 bytes/sec)\n' % params['dsn_data_rate'])
fout.write('DSN Small Gap Avoid Duration = %10i s\n' % params['dsn_contact_small_gap_avoidance_duration'])
fout.write('DSN Realtime Visit Start Offset = %10i s\n' % params['dsn_real_time_visit_start_offset'])
fout.write('DSN Realtime Visit End Offset = %10i s\n' % params['dsn_real_time_visit_end_offset'])

#return spss_sys_util.SUCCESS
return


def get_params(db, db_version, prd, override, verbose):
"""
"""
nn = db_version[5:7]
if int(nn) > 38:
s2 = "where prd_name = '%s' and override_name = '%s'" % (prd, override)
s = 'select * from spacecraft_parameters_itar %s' % s2
if verbose:
print(s)
res = [db.callproc('Itar', [s])][0]
else:
db.query('select * from spacecraft_parameters')
db.query(" where prd_name = '%s'" % prd)
db.query(" and override_name = '%s'" % override)
res = [{}]
db.executeAll(res)
return res[0]


def get_scenario_data(db, scenario):
"""
"""
db.query('select * from constraint_scenarios')
db.query(" where constraint_scenario = '%s'" % scenario)
res = [{}]
db.executeAll(res)
return res


# to run on commandline
if __name__ == '__main__':
input1 = None
if len(sys.argv) > 1:
run(*sys.argv[1:])
else:
run(None)