示例#1
0
def valida_cdm(cdm_archivo):
    """
    Extrae datos del CDM y calcula la PoC con el metodo
    de formula explicita de Lei Chen.
    """      
    cdm=CDM(cdm_archivo)
    #=================
    # Desgloce del CDM
    #=================
    sat_id=cdm.noradID_mision
    deb_id=cdm.noradID_deb
    TCA=cdm.TCA
    v_sat=cdm.v_sat
    v_deb=cdm.v_deb
    dr=float(cdm.dr)/1000.0
    ds=float(cdm.ds)/1000.0
    dw=float(cdm.dw)/1000.0
    var_r=float(cdm.cr_r)*0.000001
    var_s=float(cdm.ct_t)*0.000001
    var_w=float(cdm.cn_n)*0.000001
#    poc_cdm=float(cdm.POC)
    #===============================================
    #Calculo el angulo entre los vectores velocidad.
    #===============================================
    cos_phi=np.dot(v_sat,v_deb)/(np.sqrt(np.dot(v_sat,v_sat))*np.sqrt(np.dot(v_deb,v_deb)))
    phi=np.arccos(cos_phi)
    #===============================================
    #Calculo la Probabilidad de Colision.
    #===============================================
    rsw_vect=[dr,ds,dw]
    cov_rsw=np.array([[var_r,0,0],[0,var_s,0],[0,0,var_w]])
    mu_x,mu_y,sig2_xc,sig2_yc=proyecta_plano_de_encuentro(rsw_vect,cov_rsw,phi)
    PoC,PoC_int=calcula_Poc_manual(mu_x,mu_y,sig2_xc,sig2_yc)
#     print '=========================================='
#     print 'Proyeccion al Plano'
#     print mu_x,mu_y,sig2_xc,sig2_yc
    print '=========================================='
#    print 'PoC del CDM    = ','%.7e' % round(poc_cdm,11)
    print 'PoC calculada en forma explicita    = ','%.7e' % round(PoC,11)
    print 'PoC calculada mediante una integral = ','%.7e' % round(PoC_int[0],11)
    print '=========================================='
    #===============================================
    #Calculo del Encuentro.
    #===============================================
    tca_epoca=datetime.strptime(TCA,"%Y-%m-%dT%H:%M:%S.%f")
    tle_sat=Tle.creadoxParam(sat_id, tca_epoca)
    tle_deb=Tle.creadoxParam(deb_id, tca_epoca)
    n=0
    encuentro = Encuentro(tle_sat,tle_deb,tca_epoca,n)
    print '=========================================='
    print 'Min distancia Calculada = ', encuentro.mod_minDist
    print 'TCA calculado = ', encuentro.tca_c
    print 'Componentes RTN del CDM: ', dr, ds, dw
    print 'Componentes RTN calculadas: ', encuentro.r_comp, encuentro.s_comp, encuentro.w_comp
示例#2
0
if __name__ == '__main__':
    #def EjecutaComparacion(sat_id,ArchivoTLE,ArchivoCODS):
    """
    Ajusta TLE.
    Propaga un TLE de SAC-D dos dias hacia adelante.
    y compara con efemerides precisas. 
    Hace los promedios de las diferencias. 
    """
    #========================
    # Descarga un  TLE
    #========================
    fecha_tle = datetime(2013, 1, 1, 0, 0, 0, 0)
    fecha_ini = fecha_tle + timedelta(days=1)
    sat_id = '37673'
    tle0 = Tle.creadoxParam(sat_id, fecha_tle)
    #archivo de efemeride precisa.
    cods_arch = '../CodsAdmin/TOD_O/CODS_20130103_135713_SACD_ORBEPHEM_TOD_XYZ_O.TXT'
    cods_efem = open(cods_arch, 'r')
    lista_efem = cods_efem.readlines()

    #=======================================
    # Propaga TLE y compara con CODS
    #=======================================

    while fecha_ini < datetime(2013, 1, 2, 0, 0, 0, 0) + timedelta(minutes=5):
        r_teme, v_teme = tle0.propagaTLE(fecha_ini)
        r_tod = np.array(teme2tod(fecha_ini, r_teme))
        v_tod = np.array(teme2tod(fecha_ini, v_teme))
        linea_tle = fecha_ini.strftime('%Y-%m-%d %H:%M:%S') + ' ' + str(
            r_tod[0][0]) + ' ' + str(r_tod[0][1]) + ' ' + str(
示例#3
0
    ]
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()

    with open('tabladatos.csv') as File:
        reader = csv.reader(File)
        cdm_list = list(reader)
        for row in cdm_list[4:6]:
            obj1_id = row[0]
            obj2_id = row[1]
            tca = datetime.strptime(row[2], '%d/%m/%Y %H:%M:%S')
            miss_distance = row[3]
            poc = row[4]

            # Instanciacion de los TLE
            tle_sat = Tle.creadoxParam(obj1_id, tca)
            tle_deb = Tle.creadoxParam(obj2_id, tca)

            # Corroborar que el TLE es anterior en fecha y hora al tca
            if tle_sat.epoca() >= tca:
                tca_sust = tca - timedelta(days=1)
                tle_sat = Tle.creadoxParam(obj1_id, tca_sust)

            if tle_deb.epoca() >= tca:
                tca_sust = tca - timedelta(days=1)
                tle_deb = Tle.creadoxParam(obj2_id, tca_sust)

            encuentro1 = Encuentro(tle_sat, tle_deb, tca, hr)

            # Procesamiento Lei-Chen
            #poc_lei=encuentro1.calculaPoC_circ()
示例#4
0
 sat_id = '27386'  #ENVISAT
 deb_id = '12442'  #COSMOS
 #     TCA=datetime(2008,1,9,19,1,30,0)
 #     sat_id='27386' #ENVISAT
 #     deb_id='15482' #COSMOS
 #     TCA=datetime(2013,1,1)
 #     sat_id='37673' #SAC-D
 #     deb_id='15482' #COSMOS
 """
 Prediccion con n dias de aticipacion
 """
 n = 3  # x ejemplo para un CDM que llega 72 hs antes.
 #===========================================================
 # Satelite
 #===========================================================
 tle_sat = Tle.creadoxParam(sat_id, TCA - timedelta(days=n))
 #===========================================================
 # Desecho
 #===========================================================
 tle_deb = Tle.creadoxParam(deb_id, TCA - timedelta(days=n))
 #===========================================================
 #    ENCUENTRO
 #===========================================================
 encuentro1 = Encuentro(tle_sat, tle_deb, TCA, n)
 tca_calculado = encuentro1.tca_c
 min_distancia = encuentro1.mod_minDist
 dif_r = encuentro1.DistRic_min[0]
 dif_t = encuentro1.DistRic_min[1]
 dif_n = encuentro1.DistRic_min[2]
 #Calculo el angulo entre los vectores velocidad.
 #     v_sat=encuentro1.vel_sat_tca
示例#5
0
'''
Created on 20/10/2017
----------------------------------------------------
A partir de una lista de NORAD ID.
El codigo se trae un TLE de Space-track y verifica
si el satelite en cuestion es LEO o DEEP SPACE
----------------------------------------------------
@author: mcvalenti
'''

from datetime import datetime
from sgp4.earth_gravity import wgs72, wgs84
from sgp4.io import twoline2rv
from TleAdmin.TLE import Tle

object_list = [
    '25415', '31445', '20737', '20738', '27939', '31588', '11308', '32315',
    '17583'
]
epocaf = datetime(2013, 03, 15)
whichconst = wgs84

for sat_id in object_list:
    tle = Tle.creadoxParam(sat_id, epocaf)
    satrec = twoline2rv(tle.linea1, tle.linea2, whichconst)
    if (satrec.a - 1.0) * 6378 < 5877.5:
        print 'LEO satellte: ', (satrec.a - 1.0) * 6378
    else:
        print 'DEEP SPACE OBJECT: ', (satrec.a - 1.0) * 6378
示例#6
0
# min_d= 0.18
# dr=0.0359
# dt=-0.1488
# dn=0.0957

# MENSAJE # 8
# sat_id='27372'
# deb_id='31413'
# TCA=datetime(2013,01,11,5,30,55,0)
# min_d= 0.15
# dr=-0.1191
# dt=0.0003
# dn=0.092

#tca_epoca=datetime.strptime(TCA,"%Y-%m-%dT%H:%M")
tle_sat = Tle.creadoxParam(sat_id, TCA)
tle_deb = Tle.creadoxParam(deb_id, TCA)

n = 3
encuentro = Encuentro(tle_sat, tle_deb, TCA, n)

rtn_dist = encuentro.DistRic_min
set_data = encuentro.tca_min_data
poc, poc_int = encuentro.calculaPoC_circ()

# #==============================
# # PLOTEO
# #==============================
# """
# Gestion de Fechas
# """