Umbau auf server
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
"""Support for Orbit Mean-Elements Message (OMM) orbital elements format."""
|
||||
|
||||
import csv
|
||||
import xml.etree.ElementTree as ET
|
||||
from datetime import datetime
|
||||
from math import pi
|
||||
from sgp4.api import WGS72
|
||||
|
||||
def parse_csv(file):
|
||||
return csv.DictReader(file)
|
||||
|
||||
def parse_xml(file):
|
||||
root = ET.parse(file).getroot()
|
||||
for segment in root.findall('.//segment'):
|
||||
metadata = segment.find('metadata')
|
||||
data = segment.find('data')
|
||||
meanElements = data.find('meanElements')
|
||||
tleParameters = data.find('tleParameters')
|
||||
fields = {}
|
||||
for element in metadata, meanElements, tleParameters:
|
||||
fields.update((field.tag, field.text) for field in element)
|
||||
yield fields
|
||||
|
||||
_epoch0 = datetime(1949, 12, 31)
|
||||
_to_radians = pi / 180.0
|
||||
_ndot_units = 1036800.0 / pi # See SGP4.cpp for details.
|
||||
_nddot_units = 2985984000.0 / 2.0 / pi # See SGP4.cpp for details.
|
||||
|
||||
def initialize(sat, fields, gravconst=WGS72):
|
||||
sat.classification = fields['CLASSIFICATION_TYPE']
|
||||
sat.intldesg = fields['OBJECT_ID'][2:].replace('-', '')
|
||||
sat.ephtype = int(fields['EPHEMERIS_TYPE'])
|
||||
sat.elnum = int(fields['ELEMENT_SET_NO'])
|
||||
sat.revnum = int(fields['REV_AT_EPOCH'])
|
||||
|
||||
epoch_datetime = datetime.strptime(fields['EPOCH'], '%Y-%m-%dT%H:%M:%S.%f')
|
||||
epoch = (epoch_datetime - _epoch0).total_seconds() / 86400.0
|
||||
|
||||
argpo = float(fields['ARG_OF_PERICENTER']) * _to_radians
|
||||
bstar = float(fields['BSTAR'])
|
||||
ecco = float(fields['ECCENTRICITY'])
|
||||
inclo = float(fields['INCLINATION']) * _to_radians
|
||||
mo = float(fields['MEAN_ANOMALY']) * _to_radians
|
||||
nddot = float(fields['MEAN_MOTION_DDOT']) / _nddot_units
|
||||
ndot = float(fields['MEAN_MOTION_DOT']) / _ndot_units
|
||||
no_kozai = float(fields['MEAN_MOTION']) / 720.0 * pi
|
||||
nodeo = float(fields['RA_OF_ASC_NODE']) * _to_radians
|
||||
satnum = int(fields['NORAD_CAT_ID'])
|
||||
|
||||
sat.sgp4init(gravconst, 'i', satnum, epoch, bstar, ndot, nddot, ecco,
|
||||
argpo, inclo, mo, no_kozai, nodeo)
|
||||
Reference in New Issue
Block a user