Exemple #1
0
def plotanual(ano, rede, sigla):
    dia_anual = [*range(1, 367)]
    data = getanual(ano, rede, sigla)
    print(len(dia_anual))
    G = data[1]
    GL1x = data[0]

    # ir_anual_gl3x = []
    # ir_anual_gl5x = []

    d = diferenca(GL1x, G, 0)

    # (a - b)-c
    #d1 = diferenca(GL1x, G , 0)
    #d3 = diferenca(ir_anual_gl3x, G, 0)
    #d5 = diferenca(ir_anual_gl5x, G, 0)

    # Media Terrestre
    try:
        mediamensal = somararray(G) / contarelemento(G)
    except:
        mediamensal = 0

    # Media GL
    try:
        mediagl1x = somararray(GL1x) / contarelemento(GL1x)
    except:
        mediagl1x = 0

    plt.figure(sigla, figsize=(20, 10))
    plt.cla()  # Limpa os eixos
    plt.clf()  # Limpa a figura
    plt.plot(dia_anual, G, 'b-')  #b- é azul
    plt.plot(dia_anual, GL1x, 'r-')  #r- é vermelho
    plt.plot(dia_anual, d, 'g-')
    plt.plot([0, 360], [0, 0], 'k-')

    #plt.plot(dia_anual, d1, 'y-')
    #plt.plot(dia_anual, d3, 'c-')
    #plt.plot(dia_anual, d5, 'm-')

    diretorio = './DADOS/IMAGENS/' + rede + '/' + str(ano) + '/' + sigla + '/'
    plt.title('Rede ' + rede + ' - ' + sigla + '-' + str(ano) + " - Anual")
    plt.ylabel('Irradiância (Wm-2)')
    plt.xlabel('Dia')
    plt.ylim(-200, 450)
    plt.xticks(np.arange(0, 370, 30))
    plt.xlim(1, 370)
    plt.legend(('Média ' + rede + ': %5.2f' % mediamensal,
                'Média GL: %5.2f' % mediagl1x, 'Diferença'),
               loc='upper left')
    plt.savefig(diretorio + 'Anual.png', dpi=300, bbox_inches='tight')
Exemple #2
0
def formatadia(dia, data, rede):
    temp = selectdia(dia, data, rede)
    minuto = temp[0]
    ir = temp[1]
    final = 24 * [None]
    if (contarelemento(ir) > (len(ir) / 24) * 8):
        m = minuto[1] - minuto[0]
        media = integral(minuto, ir, 1440 / m)
        if (media != None):
            final = escalatemp2(minuto, ir)
    return final
def regiao(matriz, linha, coluna, n):
    lista = []
    for y in range(-n, n + 1):
        for x in range(-n, n + 1):
            # linha, coluna
            ir = getir(matriz, linha, coluna, x, y)
            lista.append(ir)

    c = contarelemento(lista)
    if (c != 0):
        return somararray(lista) / c
    else:
        return None
Exemple #4
0
def formatadia(dia, data):
    temp = selectdia(dia, data)
    minuto = temp[0]
    ir = temp[1]
    final = 24 * [None]
    if (contarelemento(ir) > (len(ir) / 24) * 8):
        minutonovo = [i * 60 for i in minuto]
        m = minutonovo[1] - minutonovo[0]
        media = integral(minutonovo, ir, 1440 / m)
        if (media != None):
            minutonovo = gerarhoras()
            minutonovo = [i * 60 for i in minutonovo]
            final = escalatemp2([i * 60 for i in minuto], ir)

    return final
def escalatemp2(tempo, ir):
    lista = 24 * [None]
    irtemp = []
    tempotemp = []

    i = 0
    while i < len(tempo):
        if (tempo[i] % 60 == 0 and tempo[i] != 0):
            p = int(tempo[i] / 60)
            c = contarelemento(irtemp)
            if (c != 0): media = somararray(irtemp) / c
            else: media = None
            if (media != None): lista[p] = media
            irtemp.clear()
            tempotemp.clear()

        irtemp.append(ir[i])
        tempotemp.append(tempo[i])
        i += 1

    return (lista)
def validar_diaria(dia, mes, ano, rede, sigla, ir, minuto, opcao):
    # Dias com falta de dados durante mais de 180 minutos (3h) sao descartados.
    elementos = (len(ir) / 24) * 8
    if (contarelemento(ir) > elementos):
        minutonovo = [i * 60 for i in minuto]
        m = minutonovo[1] - minutonovo[0]
        media = integral(minutonovo, ir, 1440 / m)
        temp_day = diajuliano(dia, mes, ano)
        if (media != None): media = round(media, 3)
        ir_anual_sp[temp_day - 1] = media
        ymensal[dia - 1] = media

        figuradiaria(dia, rede, sigla, ano, mes, opcao, minuto, ir, media)
    else:
        ymensal[dia - 1] = None
        temp_day = diajuliano(dia, mes, ano)
        ir_anual_sp[temp_day - 1] = None

        intSP.append(None)
        intGL1x.append(None)
        intDia.append(dia)
def plotanual(ano, rede, sigla):
    dia_anual = [*range(1, 367)]

    global ir_anual_sp, ir_anual_gl, ir_anual_gl1x, ir_anual_gl3x, ir_anual_gl5x
    if (contarelemento(ir_anual_sp) > 10):
        plt.figure(ano, figsize=(20, 10))
        plt.cla()  # Limpa os eixos
        plt.clf()  # Limpa a figura
        plt.plot(dia_anual, ir_anual_sp, 'b-')  #b- é azul
        plt.plot(dia_anual, ir_anual_gl, 'r-')  #r- é vermelho

        d = diferenca(ir_anual_gl, ir_anual_sp, 0)
        plt.plot(dia_anual, d, 'g-')
        # (a - b)-c
        #d1 = diferenca(ir_anual_gl1x, ir_anual_sp , 0)
        #d3 = diferenca(ir_anual_gl3x, ir_anual_sp, 0)
        #d5 = diferenca(ir_anual_gl5x, ir_anual_sp, 0)

        #plt.plot(dia_anual, d1, 'y-')
        #plt.plot(dia_anual, d3, 'c-')
        #plt.plot(dia_anual, d5, 'm-')

        plt.title('Rede ' + rede + ' - ' + sigla + '-' + str(ano) + " - Anual")
        plt.ylabel('Irradiância (Wm-2)')
        plt.xlabel('Dia')
        plt.ylim(-200, 450)
        plt.xticks(np.arange(1, 366, 15))
        plt.xlim(1, 366)

        # Media Terrestre
        try:
            mediamensal = somararray(ir_anual_sp) / contarelemento(ir_anual_sp)
        except:
            mediamensal = 0

        # Media GL
        try:
            mediagl1x = somararray(ir_anual_gl) / contarelemento(ir_anual_gl)
        except:
            mediagl1x = 0

        plt.legend(('Média ' + rede + ': %5.2f' % mediamensal,
                    'Média GL: %5.2f' % mediagl1x, 'Diferença'),
                   loc='upper left')

        diretorio = './DADOS/IMAGENS/' + rede + '/' + str(
            ano) + '/' + sigla + '/'
        plt.savefig(diretorio + 'Anual.png', dpi=300, bbox_inches='tight')

        ## Dispersão
        plt.figure(str(ano) + 'D')
        x = [0, 450]
        y = [0, 450]
        plt.title('Rede ' + rede + ' - ' + sigla + '-' + str(ano) +
                  " - Dispersão Anual")
        plt.ylabel('Modelo GL')
        plt.xlabel(rede)
        plt.xlim(x)
        plt.ylim(y)
        plt.plot(x, y, 'r-')
        plt.scatter(ir_anual_sp, ir_anual_gl, c='b', alpha=0.5)
        plt.savefig(diretorio + '/Anual-Dispersao.png',
                    dpi=300,
                    bbox_inches='tight')

    # Limpa as Variaveis
    ir_anual_sp = 366 * [None]
    ir_anual_gl = 366 * [None]
def GerarFiguras(sigla, rede, ano):
    x = [0, 350]
    y = [0, 350]
    cores = [
        'blue', 'green', 'red', 'yellow', 'magenta', 'cyan', 'lawngreen',
        'white'
    ]

    plt.cla()  # Limpa os eixos
    plt.clf()  # Limpa a figura

    plt.figure(sigla)
    plt.title(sigla)
    plt.xlabel('Verdade Terrestre')
    plt.ylabel('Modelo GL')
    plt.xlim(x)
    plt.ylim(y)
    plt.plot(x, y, 'k-')

    meses = [[12, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]]
    mediasGL = []
    mediasG = []
    labels = []
    p = 0

    for mesdata in meses:
        G = []
        GL = []
        lab = ''

        tempGL = []
        tempG = []
        for mes in mesdata:
            data = lertexto(ano, mes, sigla)
            GL += data[1]
            G += data[0]
            tempGL += data[1]
            tempG += data[0]
            if (lab != ''): lab += '-'
            lab += strmes(mes)

        cGL = contarelemento(GL)
        cG = contarelemento(G)

        if (cGL > 0): mGL = somararray(GL) / contarelemento(GL)
        else: mGL = '-999'
        if (cG > 0): mG = somararray(G) / contarelemento(G)
        else: mG = '-999'

        mediasGL.append(formatn(mGL))
        mediasG.append(formatn(mG))
        labels.append(lab)

        cor = cores[p]
        plt.scatter(G, GL, c=cor, label=lab, alpha=0.5)
        p += 1

    print(sigla)
    gravarTRIMESTRAL(labels, mediasG, mediasGL)

    diretorio = './DADOS/IMAGENS/TRIMESTRAL/' + rede + '/' + sigla
    checkdir(diretorio)
    #plt.legend(loc='upper left') #bbox_to_anchor=(0.5, 1), loc='upper left', borderaxespad=0.
    plt.legend(loc='upper left')
    plt.savefig(diretorio + '/' + sigla + '.png', dpi=300, bbox_inches='tight')
    plt.close()  # Fecha a figura
def plotmensal(opcao, rede, sigla, mes, ano):
    global xmensal, ymensal

    plt.figure('Mensal')
    plt.cla()  # Limpa os eixos
    plt.clf()  # Limpa a figura

    # Media
    try:
        mediamensal = somararray(ymensal) / contarelemento(ymensal)
    except:
        mediamensal = 0

    # Media GL
    try:
        mediagl1x = somararray(GLir) / contarelemento(GLir)
    except:
        mediagl1x = 0

    dp_sp = str(desviopadrao(ymensal))
    err_sp = str(erropadrao(dp_sp, ymensal))

    dp_gl1x = str(desviopadrao(GLir))
    err_gl1x = str(erropadrao(dp_gl1x, GLir))

    labels = 'Média SP: %5.2f' % mediamensal + '\n' + 'DP SRN: ' + dp_sp + '\n' + 'EP SRN: ' + err_sp
    plt.plot(xmensal, ymensal, 'b-', label=labels)

    labelgl = 'Média GL: %5.2f' % mediagl1x + '\n' + 'DP GL: ' + dp_gl1x + '\n' + 'EP GL: ' + err_gl1x
    plt.plot(GLdia, GLir, 'r-', label=labelgl)

    labelint = 'Integral'
    plt.plot(intDia, intGL1x, 'yo', markersize=5, label=labelint)

    plt.title('Rede ' + rede + ' - ' + sigla + str(ano) + format(mes, '02d') +
              " - Medias Diárias")
    plt.ylabel('Irradiância (Wm-2)')
    plt.xlabel('Dia')
    plt.ylim(0, 450)
    plt.xlim(1, 32)
    plt.legend(loc='upper left', fontsize=6)

    diretorio = './DADOS/IMAGENS/' + rede + '/' + str(
        ano) + '/' + sigla + '/' + format(mes, '02d')
    createdir(ano, mes, sigla, rede)
    plt.savefig(diretorio + '/Mensal.png')

    if opcao == 0: plt.close()

    plt.cla()  # Limpa os eixos
    plt.clf()  # Limpa a figura

    x = [0, 350]
    y = [0, 350]
    plt.figure('Mensal-D')
    plt.title('Rede ' + rede + ' - ' + sigla + '-' + str(ano) + str(mes) +
              " - Dispersão")
    plt.ylabel('Modelo GL')
    plt.xlabel(rede)
    plt.ylim(y)
    plt.xlim(x)
    plt.scatter(ymensal, GLir, c='b', alpha=0.5)
    if (ano == 2018 and mes == 2):
        plt.scatter(ymensal[3], GLir[3], c='r', alpha=0.5)
    plt.plot(x, y, 'r-')
    #plt.legend(loc='upper left') #bbox_to_anchor=(0.5, 1), loc='upper left', borderaxespad=0.
    plt.savefig(diretorio + '/Dispersao.png', dpi=300, bbox_inches='tight')

    atualizar(ano, mes)  # Atualiza Estacoes
    gravartexto(ano, mes,
                sigla)  # Gera os arquivos de Texto com os valores calculados

    # Limpa as Variaveis
    ymensal.clear()
    ymensal = 31 * [None]

    intGL1x.clear()
    intDia.clear()
    GLdia.clear()
    GLir.clear()
    print('Concluido: ' + str(mes) + ', ' + str(ano) + ', ' + sigla)
Exemple #10
0
dadosgl = pd.read_csv(arquivogl, header=None, skiprows=1, sep='\t');

for i in range(len(dadossonda)):
    plt.figure(i)

    sonda = dadossonda.iloc[i, 4:28].values.tolist()
    GL = dadosgl.iloc[i, 4:28].values.tolist()
    sigla = string_estacaoes[i]
    rede = string_redes[i]
    hora = [*range(24)]
    for i in range(len(sonda)):
        if(sonda[i] > 1600) or sonda[i] == -999: sonda[i]=None
        if(GL[i] > 1600) or GL[i] == -999: GL[i]=None

    dif = diferenca(GL, sonda, 0)
    c1 = contarelemento(GL)
    c2 = contarelemento(sonda)
    
    mediafinal = 0
    if(c1 != 0 and c2 != 0):
        tempgl = somararray(GL)/c1
        tempsonda = somararray(sonda)/c2
        mediafinal =  (tempgl + tempsonda) /2
    
    print(sigla, mediafinal, dif)
    print('--GL-- ')
    print(GL)
    print('--Sonda--')
    print(sonda)
    print()
    
Exemple #11
0
def plotgeral(mes, ano):
    diainicial = 1
    diafinal = diames(ano, mes)
    opcao = 0
    listaunica = 'ListaUnicaCompleta_201606.txt'
    dataestacoes = []
    posicoes = []

    NE = 4
    matrizdiariaGL0 = np.zeros((NE, 27))
    matrizposicoes = np.zeros((NE, 3))

    matrizdiariaGL0[0, :3] = [29903, -9.871, -56.104]
    matrizdiariaGL0[1, :3] = [29907, -15.729, -56.021]
    matrizdiariaGL0[2, :3] = [29902, -10.934, -62.852]
    matrizdiariaGL0[3, :3] = [29905, -9.957, 67.869]

    latfinal = 22 - 0.04
    loninicial = -100
    for i in range(NE):
        LAT = matrizdiariaGL0[i, 1]
        LON = matrizdiariaGL0[i, 2]
        IDD = matrizdiariaGL0[i, 0]
        linha = int(((latfinal - LAT) / .04 + 0.5))
        coluna = int((LON - loninicial) / .04 + 0.5)
        matrizposicoes[i, :3] = [IDD, linha, coluna]

    #dataallestacoes = len(dataestacoes) * [diafinal * [24 * [None]]]
    #dataallgl1x = len(dataestacoes) * [diafinal * [24 * [None]]]
    #dataallgl3x = len(dataestacoes) * [diafinal * [24 * [None]]]
    #dataallgl5x = len(dataestacoes) * [diafinal * [24 * [None]]]

    for dia in range(diainicial, diafinal + 1):
        minutonovo = gerarhoras()
        minutonovo = [i * 60 for i in minutonovo]

        # DATA
        anomesdia = ano * 10000 + mes * 100 + dia
        datagl = GLbinarios(anomesdia, matrizposicoes, matrizdiariaGL0)

        for i in range(len(dataestacoes)):
            #sigla = dataestacoes[i][0]
            #dadosdiaestacao = formatadia(dia, dataestacoes[i][1])

            # datagl[0][estacao]
            gl1x = datagl[0][i, :]
            gl3x = datagl[1][i, :]
            gl5x = datagl[2][i, :]

            #csp = contarelemento(dadosdiaestacao)
            cgl1x = contarelemento(gl1x)
            cgl3x = contarelemento(gl3x)
            cgl5x = contarelemento(gl5x)

            if (cgl1x < 7): gl1x = len(gl1x) * [None]
            if (cgl3x < 7): gl3x = len(gl1x) * [None]
            if (cgl5x < 7): gl5x = len(gl1x) * [None]

            dataallgl1x[i][dia - 1] = gl1x
            dataallgl3x[i][dia - 1] = gl3x
            dataallgl5x[i][dia - 1] = gl5x

            hora = [*range(24)]
            mediasp = integral(hora, dadosdiaestacao, len(dadosdiaestacao))
            mediagl1x = integral(hora, gl1x, len(gl1x))
            mediagl3x = integral(hora, gl3x, len(gl3x))
            mediagl5x = integral(hora, gl5x, len(gl5x))

            if (csp > 7):
                dataallestacoes[i][dia - 1] = dadosdiaestacao

    # load tabela GL. >> plotmensal(opcao, rede, sigla, mes, ano)
    dataestacoes.clear()  # limpa da memoria
    print('Concluido: ' + format(mes, '02d') + '-' + str(ano))
Exemple #12
0
def plotgeral(mes, ano, estacoes):
    opcao = 0
    diainicial = 1
    diafinal = diames(ano, mes)
    listaunica = 'ListaUnicaCompleta_201606.txt'
    header = []
    dataestacoes = []
    posicoes = []

    for i in range(len(estacoes)):
        try:
            sigla = estacoes[i]
            temploc = getLoc(sigla, listaunica)
            idd = temploc[0]
            lat = formatn(temploc[1])
            long = formatn(temploc[2])
            rede = temploc[3]
            readdata = lermes(diafinal, mes, ano, sigla, rede)

            latfinal = 22 - 0.04
            loninicial = -100
            linha = int(((latfinal - lat) / .04 + 0.5))
            coluna = int((long - loninicial) / .04 + 0.5)

            posicoes.append([linha, coluna])
            header.append([idd, lat, long])

            dataestacoes.append([sigla, rede, readdata])
        except FileNotFoundError:
            pass

    dataallestacoes = len(dataestacoes) * [diafinal * [24 * [None]]]
    dataallgl1x = len(dataestacoes) * [diafinal * [24 * [None]]]
    dataallgl3x = len(dataestacoes) * [diafinal * [24 * [None]]]
    dataallgl5x = len(dataestacoes) * [diafinal * [24 * [None]]]

    # Para apenas um dia, set dia inicial e final para o dia, aqui!
    for dia in range(diainicial, diafinal + 1):
        anomesdia = ano * 10000 + mes * 100 + dia
        minutonovo = gerarhoras()
        minutonovo = [i * 60 for i in minutonovo]

        datagl = GLbinarios(dia, mes, ano, posicoes)
        for i in range(len(datagl)):  # 1x 3x 5x
            for x in range(len(datagl[i])):  # estacoes
                datagl[i][x] = escalatemp2(minutonovo, datagl[i][x])

        datasp = len(posicoes) * [24 * [None]]
        for i in range(len(dataestacoes)):
            sigla = dataestacoes[i][0]
            rede = dataestacoes[i][1]
            datasp[i] = formatadia(dia, dataestacoes[i][2], rede)

            # datagl[0][estacao]
            gl1x = datagl[0][i]
            gl3x = datagl[1][i]
            gl5x = datagl[2][i]

            csp = contarelemento(datasp[i])
            cgl1x = contarelemento(gl1x)
            cgl3x = contarelemento(gl3x)
            cgl5x = contarelemento(gl5x)

            if (cgl1x < 7): gl1x = len(gl1x) * [None]
            if (cgl3x < 7): gl3x = len(gl1x) * [None]
            if (cgl5x < 7): gl5x = len(gl1x) * [None]

            dataallgl1x[i][dia - 1] = gl1x
            dataallgl3x[i][dia - 1] = gl3x
            dataallgl5x[i][dia - 1] = gl5x

            hora = [*range(24)]

            mediasp = integral(hora, datasp[i], len(datasp[i]))
            mediagl1x = integral(hora, gl1x, len(gl1x))
            mediagl3x = integral(hora, gl3x, len(gl3x))
            mediagl5x = integral(hora, gl5x, len(gl5x))

            if (csp > 7):
                dataallestacoes[i][dia - 1] = datasp[i]
                figuradiaria(dia, sigla, ano, mes, opcao, hora, datasp[i],
                             gl1x, gl3x, gl5x, mediasp, mediagl1x, mediagl3x,
                             mediagl5x, rede)

        if (contarelemento(datagl[0][0]) > 7):
            gravardados(anomesdia, header, datasp, 'SP')
            gravardados(anomesdia, header, datagl[0], 'GL1X')
            gravardados(anomesdia, header, datagl[1], 'GL3X')
            gravardados(anomesdia, header, datagl[2], 'GL5X')
            #gerargraficodiferenca(dia, 'SOLRADNET', ano, mes, opcao, dataallestacoes, dataallgl1x) # gerar figura com dados das varias estacoes

    # salvar arquivo
    for p in range(len(dataestacoes)):
        sigla = dataestacoes[p][0]
        G = arraymedias(dataallestacoes[p])
        GLir = GL(sigla, listaunica, mes, ano)
        DIAS = [*range(1, diafinal + 1)]
        gravartexto(ano, mes, sigla, DIAS, G, GLir)

    # load tabela GL. >> plotmensal(opcao, rede, sigla, mes, ano)
    dataestacoes.clear()  # limpa da memoria
    print('Concluido: ' + format(mes, '02d') + '-' + str(ano))