Esempio n. 1
0
ini_epoca = datetime(2003, 3, 1)
fin_epoca = datetime(2003, 3, 16)
crudo = '8820_escenario11.setTle'
#===================================================
# Escenario SAC-D #7 - Ventana 1
#===================================================
# sat_id='37673'
# ini_epoca=datetime(2013,4,1)
# fin_epoca=datetime(2013,4,16)
# crudo='37673_escenario71.setTle'

set_sat = SetTLE(sat_id, ini_epoca, fin_epoca, crudo)
set_sat.divide_setTLE()

# prepara los datos para generar las diferencias
lista_tle = glob.glob('../TleAdmin/tle/*')  # extrae los tle de la carpeta
dic_tle = generadorDatos(lista_tle)  # genera un diccionario con las fechas
tle_ordenados = ordenaTles(dic_tle)  # ordena segun las fechas
cant_tle = len(lista_tle)
#======================================
# Genera las diferencias.
#======================================
bin, data, dataPri, coef1 = difTle(tle_ordenados, cant_tle)
# [AjustarTLE/diferencias/difTotal_satID_fechaIni#]
# data: lista de listas, [dt_frac,dv,dn,dc]
#======================================
# Grafico
#======================================
path = '../AjustarTLE/diferencias'
grafica_diferenciasTotales(sat_id, path, data[1], coef1)
Esempio n. 2
0
def calcula_matriz_OSWcorregido(cat_id, tca0, tca1, crudo, diferencias):
    """
    Metodo de Osweiler pero contra el vector de estado
    del Tle primario corregido.
    """
    files = glob.glob('../TleAdmin/tle/*')
    for filename in files:
        os.unlink(filename)

    set_deb = SetTLE(cat_id, tca0, tca1, crudo)
    set_deb.divide_setTLE()

    tles = glob.glob('../TleAdmin/tle/*')
    dic_tles = generadorDatos(tles)
    tle_ordenados = ordenaTles(dic_tles)

    tle_primario = Tle.creadoxArchivo('../TleAdmin/tle/' +
                                      tle_ordenados[-1][0])
    epoca_primario = tle_primario.epoca()
    # En TEME
    r0 = np.array([diferencias[0], diferencias[1], diferencias[2]])
    rp0 = np.array([diferencias[3], diferencias[4], diferencias[5]])

    nombre_archivo = 'difRTN_' + str(cat_id) + '_' + tca1.strftime(
        '%Y%m%d') + '.TLE'
    archivo_dif_rsw = open('../AjustarTLE/diferencias/' + nombre_archivo + '',
                           'w')
    # listas de diferencias (RTN)
    dr = []
    dt = []
    dn = []
    drr = []
    dtt = []
    dnn = []

    item = range(len(tle_ordenados) - 2, -1, -1)
    for j in item:
        tle1 = Tle.creadoxArchivo('../TleAdmin/tle/' + tle_ordenados[j][0])
        fsec = tle1.epoca()
        pos, vel = tle1.propagaTLE(epoca_primario)
        pos = np.array([pos[0], pos[1], pos[2]])
        vel = np.array([vel[0], vel[1], vel[2]])
        # Calculo de Diferencias
        d_r = pos - r0
        d_v = vel - rp0
        r, t, n = vncSis(r0, rp0, d_r)
        rr, tt, nn = vncSis(r0, rp0, d_v)
        #         r,t,n=ricSis(r0, rp0, d_r)
        #         rr,tt,nn=ricSis(r0,rp0,d_v)
        '''
        Sistema RTN
        '''
        dr.append(r)
        dt.append(t)
        dn.append(n)
        drr.append(rr)
        dtt.append(tt)
        dnn.append(nn)

        infodifRST = fsec.strftime('%Y-%m-%d %H:%M:%S') + ' ' + str(
            r) + ' ' + str(t) + ' ' + str(n) + ' ' + str(rr) + ' ' + str(
                tt) + ' ' + str(nn) + '\n'
        archivo_dif_rsw.write(infodifRST)

    var_r = np.var(dr)
    var_t = np.var(dt)
    var_n = np.var(dn)

    return nombre_archivo, var_r, var_t, var_n
Esempio n. 3
0
def calcula_matriz_Tles(cat_id, tca0, tca1, crudo):
    """
    Metodo de Osweiler.
    Dado un objeto y un intervalo temporal.
    Ejecuta el metodo de Osweiler de pair-wise para comparar las 
    propagaciones de cada TLE a la epoca del ultimo TLE del set,
     y generar el archivo de diferencias.
    ------------------------------------------------------------------
    inputs
        cat_id: identificador NORAD del objeto (String)
        tca0: epoca de inicio del intervalo (Datetime)
        tca1: epoca de fin del intervalo (Datetime)
        crudo: nombre del archivo con el set de TLEs (String)
               '../TleAdmin/tle/*' - viene vacio.
    outputs
        nombre_archivo: nombre de archivo donde se imprimen las diferencias
                       ('../AjustarTle/ diferencias/') (String) 
        var_x: varianzas en r,t,n (Float)
    """
    files = glob.glob('../TleAdmin/tle/*')
    for filename in files:
        os.unlink(filename)

    set_deb = SetTLE(cat_id, tca0, tca1, crudo)
    set_deb.divide_setTLE()

    tles = glob.glob('../TleAdmin/tle/*')
    #     print "=============================================="
    #     print "Cantidad de TLE: ", len(tles)
    dic_tles = generadorDatos(tles)
    tle_ordenados = ordenaTles(dic_tles)

    tle_primario = Tle.creadoxArchivo('../TleAdmin/tle/' +
                                      tle_ordenados[-1][0])
    epoca_primario = tle_primario.epoca()
    r0, rp0 = tle_primario.propagaTLE()  # En TEME
    r0 = np.array([r0[0], r0[1], r0[2]])

    nombre_archivo = 'difRTN_' + str(cat_id) + '_' + tca1.strftime(
        '%Y%m%d') + '.TLE'
    archivo_dif_rsw = open('../AjustarTLE/diferencias/' + nombre_archivo, 'w')
    # listas de diferencias (RTN)
    dr = []
    dt = []
    dn = []
    drr = []
    dtt = []
    dnn = []

    item = range(len(tle_ordenados) - 2, -1, -1)
    for j in item:
        tle1 = Tle.creadoxArchivo('../TleAdmin/tle/' + tle_ordenados[j][0])
        fsec = tle1.epoca()
        #        print '======================================='
        #        print 'Epoca del TLE: ',fsec
        #        print '=======================================
        pos, vel = tle1.propagaTLE(epoca_primario)
        pos = np.array([pos[0], pos[1], pos[2]])
        vel = np.array([vel[0], vel[1], vel[2]])
        # Calculo de Diferencias
        d_r = pos - r0
        d_v = vel - rp0
        #         r,t,n=vncSis(r0, rp0, d_r)
        #         rr,tt,nn=vncSis(r0,rp0,d_v)
        r, t, n = ricSis(r0, rp0, d_r)
        rr, tt, nn = ricSis(r0, rp0, d_v)
        '''
        Sistema RTN
        '''
        dr.append(r)
        dt.append(t)
        dn.append(n)
        drr.append(rr)
        dtt.append(tt)
        dnn.append(nn)

        infodifRST = fsec.strftime('%Y-%m-%d %H:%M:%S') + ' ' + str(
            r) + ' ' + str(t) + ' ' + str(n) + ' ' + str(rr) + ' ' + str(
                tt) + ' ' + str(nn) + '\n'
        archivo_dif_rsw.write(infodifRST)

    var_r = np.var(dr)
    var_t = np.var(dt)
    var_n = np.var(dn)

    return nombre_archivo, var_r, var_t, var_n
Esempio n. 4
0
def ejecutaProcesamientoCods():
    #if __name__ == '__main__':
    """
    REVISAR - FUE MODIFICADO
    Lista y ordena los nombres de los archivos de la carpeta: TleAdmin/tles.
    Recupera la informacion del ultimo TLE del set (TLE primario), en particular la epoca.
    Busca entre los archivos de CODS, la epoca coincidente con la epoca del TLE primario.
    Interpola para la fecha al nivel del segundo. 
    Luego propaga todos los TLEs del set a la epoca del CODS interpolado y calcular las 
    diferencias. 
    ---------------------------------------------------------------------------------------
    Nota! LOS DATOS CODS SON SOLO DE LA MISION SAC-D.
    Luego los tles, previamente procesados y archivados en la carpeta de TleAdmin/tles, deben
    corresponderse con esa mision.
    """

    #    print 'PROCESANDO DATOS DE MISION...'
    tles = glob.glob('../TleAdmin/tle/*')
    dic_tles = generadorDatos(tles)
    tle_ordenados = ordenaTles(dic_tles)

    #     tles=glob.glob('../TleAdmin/tle/*')
    #     dic_tles=generadorDatos(tles)
    #     tle_ordenados=ordenaTles(dic_tles)

    tle_inicio = Tle.creadoxArchivo('../TleAdmin/tle/' + tle_ordenados[0][0])
    cat_id = tle_inicio.catID()
    epoca_ini = tle_inicio.epoca()

    tle_primario = Tle.creadoxArchivo('../TleAdmin/tle/' +
                                      tle_ordenados[-1][0])
    epoca_fin = tle_primario.epoca()
    epoca_ffin = epoca_fin
    epoca15dias = epoca_ffin - timedelta(days=15)
    """
    Impresiones de info de TLEs.
    """
    tle_inicio = Tle.creadoxArchivo('../TleAdmin/tle/' + tle_ordenados[0][0])
    cat_id = tle_inicio.catID()
    epoca_ini = tle_inicio.epoca()

    tle_primario = Tle.creadoxArchivo('../TleAdmin/tle/' +
                                      tle_ordenados[-1][0])
    epoca_fin = tle_primario.epoca()
    epoca_ffin = epoca_fin
    linea1 = tle_primario.linea1
    linea2 = tle_primario.linea2
    fecha_ini = str(epoca_ini.year) + str(epoca_ini.month).zfill(2) + str(
        epoca_ini.day).zfill(2)
    fecha_fin = str(epoca_fin.year) + str(epoca_fin.month).zfill(2) + str(
        epoca_fin.day).zfill(2)
    #     print '------------------------------------------------------------------------'
    #     print '-------------------------TLE PRIMARIO-----------------------------------'
    #     print linea1
    #     print linea2
    #     print epoca_ffin
    #     print '------------------------------------------------------------------------'
    t = []
    dv = []
    du = []
    dc = []
    dvv = []
    dnn = []
    dcc = []
    dt_frac = []
    t15 = []
    dv15 = []
    du15 = []
    dc15 = []
    dvv15 = []
    dnn15 = []
    dcc15 = []
    dt_frac15 = []
    #===============
    # Set de Datos
    #===============
    data = [t, dv, du, dc, dvv, dnn, dcc, dt_frac]
    data15 = [t15, dv15, du15, dc15, dvv15, dnn15, dcc15, dt_frac15]
    #======================
    # Nomenclatura Archivos
    #======================
    archivo = cat_id + '_' + fecha_ini + '_' + fecha_fin + '.cods'
    salida = open('../Comparar/diferencias/difTot_' + archivo, 'w')
    salida1 = open('../Comparar/diferencias/' + archivo, 'w')
    salida15 = open('../Comparar/diferencias/dif_15dias_' + archivo, 'w')
    #===============================================
    # Bucle de comparacion total  (tiene sentido?)
    #===============================================
    for m in range(len(tle_ordenados) - 1, 0, -1):
        tle_primario = Tle.creadoxArchivo('../TleAdmin/tle/' +
                                          tle_ordenados[m][0])
        epoca_fin = tle_primario.epoca()
        arch3_cods = FiltraArchivos('../TleAdmin/tle/' + tle_ordenados[m][0])
        linea_interpol = interpola_3sv(
            '../TleAdmin/tle/' + tle_ordenados[m][0], arch3_cods)
        if linea_interpol != None:
            data = diferencias_tleCODS(salida, tle_ordenados, linea_interpol,
                                       data)
            if m == len(tle_ordenados) - 1:
                for k in range(len(data[0])):
                    info = data[0][k].strftime(
                        "%Y-%m-%d %H:%M:%S.%f") + ' ' + str(
                            data[1][k]) + ' ' + str(data[2][k]) + ' ' + str(
                                data[3][k]) + ' ' + str(
                                    data[4][k]) + ' ' + str(
                                        data[5][k]) + ' ' + str(
                                            data[6][k]) + '\n'
                    salida1.write(info)
        else:
            continue
    #==================================================
    # Bucle de comparacion del set primario (15 TLEs)
    #==================================================

    epoca15 = epoca_ffin - timedelta(days=15)
    for m in range(len(tle_ordenados) - 1, 0, -1):
        tle_primario = Tle.creadoxArchivo('../TleAdmin/tle/' +
                                          tle_ordenados[m][0])
        epoca_fin = tle_primario.epoca()
        if epoca_fin > epoca15:
            arch3_cods = FiltraArchivos('../TleAdmin/tle/' +
                                        tle_ordenados[m][0])
            linea_interpol = interpola_3sv(
                '../TleAdmin/tle/' + tle_ordenados[m][0], arch3_cods)
            if linea_interpol != None:
                data15 = dif_tleCODS15dias()
                if m == len(tle_ordenados) - 1:
                    for k in range(len(data15[0])):
                        info = data15[0][k] + ' ' + str(
                            data15[1][k]) + ' ' + str(
                                data15[2][k]) + ' ' + str(
                                    data15[3][k]) + ' ' + str(
                                        data15[4][k]) + ' ' + str(
                                            data15[5][k]) + ' ' + str(
                                                data15[6][k]) + '\n'
                        # info = data15[0][k].strftime("%Y-%m-%d %H:%M:%S.%f")+' '+str(data15[1][k])+' '+str(data15[2][k])+' '+str(data15[3][k])+' '+str(data15[4][k])+' '+str(data15[5][k])+' '+str(data15[6][k])+'\n'
                        salida15.write(info)
            else:
                continue
        else:
            continue

    salida1.close()
    """
    AJUSTE Y GENERACION DE COEFICIENTES.
    """

    #     dt,coef,statsReport=ajustar_diferencias(epoca_ffin,data15,2)
    #     dt1,coef1,statsReport1=ajustar_diferencias(epoca_ffin,data15,1)
    coef1 = 0
    """
    Guarda en archivos las diferencias que se corresponden al
    ultimo TLE del set. (Estadistica/archivos)
    tendenciaTle.py toma luego esos archivos, y grafica.
    """

    estadistica_salida = open(
        '../Estadistica/archivos/' + fecha_ini + '_' + fecha_fin +
        '_difEst.txt', 'w')
    info_esta = fecha_fin + ' ' + str(data[1][len(tles)]) + ' ' + str(
        data[2][len(tles)]) + ' ' + str(data[3][len(tles)])
    estadistica_salida.write(info_esta)
    estadistica_salida.close()

    print 'DIFERENCIAS:'
    print '-------------------------------------------------------------------------'
    diferencias = [
        data[1][len(tles) - 1], data[2][len(tles) - 1], data[3][len(tles) - 1],
        data[4][len(tles) - 1], data[5][len(tles) - 1], data[6][len(tles) - 1]
    ]
    print 'dv =', data[1][len(tles) - 1]
    print 'dn =', data[2][len(tles) - 1]
    print 'dc =', data[3][len(tles) - 1]
    print '-------------------------------------------------------------------------'
    print 'Fin del Calculo de Diferencias'

    #    set_datos=[str(cat_id),linea1,linea2,epoca_ini.strftime("%Y-%m-%d %H:%M:%S.%f"),epoca_ffin.strftime("%Y-%m-%d %H:%M:%S.%f"),dt,data,coef,archivo]
    set_data15 = [
        str(cat_id), linea1, linea2,
        epoca_ini.strftime("%Y-%m-%d %H:%M:%S.%f"),
        epoca_ffin.strftime("%Y-%m-%d %H:%M:%S.%f"), data15, coef1, archivo
    ]
    return diferencias, set_data15
Esempio n. 5
0
def dif_tleCODS15dias():

    t = []
    dv = []
    du = []
    dc = []
    dvv = []
    dnn = []
    dcc = []
    dt_frac = []
    #===============
    # Set de Datos
    #===============
    data = [t, dv, du, dc, dvv, dnn, dcc, dt_frac]

    #    print 'PROCESANDO DATOS DE MISION...'
    tles = glob.glob('../TleAdmin/tle/*')
    dic_tles = generadorDatos(tles)
    tle_ordenados = ordenaTles(dic_tles)
    salida = open('../Comparar/diferencias/difPri_prueba', 'w')

    tles = glob.glob('../TleAdmin/tle/*')
    dic_tles = generadorDatos(tles)
    tle_ordenados = ordenaTles(dic_tles)

    tle_primario = Tle.creadoxArchivo('../TleAdmin/tle/' +
                                      tle_ordenados[-1][0])
    epoca_ffin = tle_primario.epoca()
    cat_id = tle_primario.catID()
    linea1 = tle_primario.linea1
    linea2 = tle_primario.linea2
    epoca15dias = epoca_ffin - timedelta(days=15)

    tle_inicio = Tle.creadoxArchivo('../TleAdmin/tle/' + tle_ordenados[0][0])
    epoca_ini = tle_inicio.epoca()

    arch3_cods = FiltraArchivos('../TleAdmin/tle/' + tle_ordenados[-1][0])
    linea_interpol = interpola_3sv('../TleAdmin/tle/' + tle_ordenados[-1][0],
                                   arch3_cods)

    archivo = cat_id + '_' + epoca_ini.strftime(
        "%Y-%m-%d %H:%M:%S.%f") + '_' + epoca_ffin.strftime(
            "%Y-%m-%d %H:%M:%S.%f") + '.cods'
    #===============================================
    # Bucle de comparacion total  (tiene sentido?)
    #===============================================
    for m in range(len(tle_ordenados) - 1, 0, -1):
        tle0 = Tle.creadoxArchivo('../TleAdmin/tle/' + tle_ordenados[m][0])
        epoca_tle0 = tle0.epoca()
        if epoca_tle0 >= epoca15dias:
            data = diferencias_tleCODS(salida, tle_ordenados, linea_interpol,
                                       data)
            if m == len(tle_ordenados) - 1:
                for k in range(len(data[0])):
                    info = data[0][k].strftime(
                        "%Y-%m-%d %H:%M:%S.%f") + ' ' + str(
                            data[1][k]) + ' ' + str(data[2][k]) + ' ' + str(
                                data[3][k]) + ' ' + str(
                                    data[4][k]) + ' ' + str(
                                        data[5][k]) + ' ' + str(
                                            data[6][k]) + '\n'
                    salida.write(info)
        else:
            continue

    dt, coef, statsReport = ajustar_diferencias(epoca_ffin, data, 2)
    #    print statsReport

    set_data15 = [
        str(cat_id), linea1, linea2,
        epoca_ini.strftime("%Y-%m-%d %H:%M:%S.%f"),
        epoca_ffin.strftime("%Y-%m-%d %H:%M:%S.%f"), dt, data, coef, archivo
    ]
    return set_data15
Esempio n. 6
0
    eo = [tiempo, prom_a, prom_i]

    #    grafica_tendencia(data)
    grafica_EO(eo)
    print 'fin'


if __name__ == '__main__':
    #    analizaEO()
    """
    #def comparaTodos():
    """
    tlelista = glob.glob('../TleAdmin/tle/*')
    dic_tle = generadorDatos(tlelista)
    tle_ord = ordenaTles(dic_tle)
    lista_tle_ord = tle_ord[1]
    """
    Validacion con STK de coordenadas TOD.
    """
    listar = []
    for tle in tle_ord:
        listar.append('../TleAdmin/tle/' + tle[0])
    generaTOD(listar, 37673)
    t = []
    dv = []
    dn = []
    dc = []
    dx = []
    dy = []
    dz = []
Esempio n. 7
0
def procesar(sat_id, archivo_crudo_tle):
    """
    Invoca a la funcion setTLE, para fragmentar
    cada uno de los TLE del dato crudo en archivos
    individuales; y los guarda en: TleAdmin/tle
    """
    files = glob.glob('../TleAdmin/tle/*')
    for filename in files:
        os.unlink(filename)
    if os.stat('../TleAdmin/crudosTLE/' + archivo_crudo_tle).st_size == 0:
        print('El archivo esta vacio')
    SetTLE(sat_id, archivo_crudo_tle)
    lista_tles = glob.glob('../TleAdmin/tle/*')
    cant_tles = len(lista_tles)
    """
    Ordenamiento de los TLEs
    """
    tledic = generadorDatos(lista_tles)
    tleOrdenados = ordenaTles(tledic)
    """
    Impresiones de info de TLEs.
    """
    print 'PROCESAMIENTO DE TLE'
    print '-----------------------------------------------------'
    print 'TLE PRIMARIO'
    print '-----------------------------------------------------'
    tle_primario = Tle.creadoxArchivo('../TleAdmin/tle/' + tleOrdenados[-1][0])
    linea1 = tle_primario.linea1
    linea2 = tle_primario.linea2
    fin_tle = tle_primario.epoca()
    #    ffin=fin_tle.strftime('%Y-%m-%d %H:%M:%S.%f' )
    print linea1
    print linea2
    print '-----------------------------------------------------'
    print 'TLE INICIAL DEL SET'
    print '-----------------------------------------------------'
    tle_inial = Tle.creadoxArchivo('../TleAdmin/tle/' + tleOrdenados[0][0])
    linea1_0 = tle_inial.linea1
    linea2_0 = tle_inial.linea2
    #    ini_tle=tle_inial.epoca()
    print linea1_0
    print linea2_0
    print '-----------------------------------------------------'
    """
    PROCESAMIENTO.
    """
    files = glob.glob('../AjustarTLE/diferencias/*')
    for filename in files:
        os.unlink(filename)
    set_pri = difPrimario(tleOrdenados, cant_tles)
    nombre_archivo = set_pri[3]
    """
    Ma. de Covarianza
    """
    macovarT, arch_macovar = EjecutaMaCovar(nombre_archivo)
    print '================================================='
    print '        Ma. de Covarianza                '
    print '================================================='
    for k in macovarT[:3]:
        for j in k[:3]:
            print j,
        print


#    print macovarT
    tle_dia1 = Tle.creadoxArchivo('../TleAdmin/tle/' + tleOrdenados[-3][0])
    print 'Fin del Procesamiento'
    return tle_primario, tle_dia1
Esempio n. 8
0
# los TLE en su carpeta TleAdmin/tle.
# Luego se ordenan y se listan los nombres de los archivos
# de cada TLE.

sat_id = '37673'
ini_epoca = datetime(2013, 1, 1)
fin_epoca = datetime(2013, 5, 20)
crudo = '37673_6meses.setTle'

set_sat = SetTLE(sat_id, ini_epoca, fin_epoca, crudo)
set_sat.divide_setTLE()

lista_tle = glob.glob('../TleAdmin/tle/*')
cant_tle = len(lista_tle)
dic_tle = generadorDatos(lista_tle)  # genera un diccionario con las fechas
tle_ordenados = ordenaTles(dic_tle)

#------------------------------------------------------------------------------
# Se generan los archivos de las propagaciones
# de cada dia, para la comparacion.
# -----------------------------------------------------------------------------
# n=0
# with progressbar.ProgressBar(max_value=cant_tle) as progress:
#     for j in range(cant_tle):
#         #==============
#         progress.update(n)
#         n=n+1
#         #==============
#         tle=Tle.creadoxArchivo('../TleAdmin/tle/'+tle_ordenados[j][0])
#         fecha_archivo=tle.epoca().strftime('%Y_%m_%d')
#         salida=open('../Validaciones/tle/37673_xyz_'+fecha_archivo,'w+')