示例#1
0
def gravartexto(ano, mes, sigla):
    diretorio = './DADOS/TXT/' + str(ano) + '/' + sigla
    checkdir(diretorio)
    arquivotxt = diretorio + '/' + sigla + str(ano)[-2:] + format(
        mes, '02d') + '.txt'
    arquivo = open(arquivotxt, 'w+', encoding="ansi")
    for i in range(len(GLir)):
        string = str(xmensal[i]) + '\t' + str(formatn(
            ymensal[i])) + '\t' + str(formatn(GLir[i])) + '\n'
        arquivo.write(string)
    arquivo.close()
示例#2
0
def gravardados(anomesdia, header, matriz, nome):
    diretorio = './DADOS/TXT/ANOMESDIA/' + nome
    #checkdir(diretorio)
    arquivotxt = diretorio + '/' + nome + '_' + str(anomesdia) + '.txt'

    with open(arquivotxt, 'w+') as f:
        for linha in range(len(header)):
            for data in header[linha]:
                f.write(str((data)) + '\t')

            for i in range(len(matriz[linha]) - 1):
                f.write(str(formatn(matriz[linha][i])) + '\t')
            f.write(str(formatn(matriz[linha][-1])) + '\n')
示例#3
0
def atualizar(ano, mes):
    estacoesin = './DADOS/GLESTACAO/' + str(ano) + '/estacao_' + str(
        ano) + format(mes, '02d') + '.txt'
    estacoesout = './DADOS/OUTPUT/estacao_' + str(ano) + format(mes,
                                                                '02d') + '.txt'
    try:
        with open(estacoesin, "r") as tsvin, open(estacoesout, "w+") as tsvout:
            reader = csv.reader(tsvin, delimiter=' ')
            output = csv.writer(tsvout, delimiter=' ')
            id = getID(sigla, listaunica)
            for row in reader:
                if (id == row[0]):  # Identifica a estação
                    for coluna in range(5, numerodiasmes(mes) + 5):
                        if (row[coluna] == "-999"
                            ):  # Verifica se o dado é Nulo(-999).
                            posicao = findElement(coluna - 4, xmensal)
                            # Verifica se foi encontrado dado referente ao dia.
                            if (posicao != None):
                                if (ymensal[posicao] != None):
                                    row[coluna] = str(formatn(
                                        ymensal[posicao]))

                output.writerow(row)
    except:
        pass
示例#4
0
def figuradiaria(dia, rede, sigla, ano, mes, opcao, minuto, ir, mediasp):
    global ir_anual_gl1x, ir_anual_gl3x, ir_anual_gl5x
    data = GLbinarios(sigla, 'ListaUnicaCompleta_201606.txt', dia, mes, ano)
    minutonovo = gerarhoras()
    minutonovo = [i * 60 for i in minutonovo]

    ir = escalatemp2([i * 60 for i in minuto], ir)
    gl1x = escalatemp2(minutonovo, data[0])
    gl3x = escalatemp2(minutonovo, data[1])
    gl5x = escalatemp2(minutonovo, data[2])

    hora = [*range(24)]
    minutonovo = hora

    mediagl1x = integral(minutonovo, gl1x, len(gl1x))
    mediagl3x = integral(minutonovo, gl3x, len(gl1x))
    mediagl5x = integral(minutonovo, gl5x, len(gl1x))

    if (mediagl1x != None): mediagl1x = round(mediagl1x, 3)
    if (mediagl3x != None): mediagl3x = round(mediagl3x, 3)
    if (mediagl5x != None): mediagl5x = round(mediagl5x, 3)

    temp_day = diajuliano(dia, mes, ano)
    ir_anual_gl1x[temp_day - 1] = mediagl1x
    ir_anual_gl3x[temp_day - 1] = mediagl3x
    ir_anual_gl5x[temp_day - 1] = mediagl5x

    if (mediasp != 0.0): intSP.append(formatn(mediasp))
    else: intSP.append(None)

    if (mediagl1x != 0.0): intGL1x.append(formatn(mediagl1x))
    else: intGL1x.append(None)

    intDia.append(dia)

    # Superficie
    dp_sp = str(formatn(desviopadrao(ir)))
    err_sp = str(formatn(erropadrao(dp_sp, ir)))

    # GL 1x
    dp_gl1x = str(formatn(desviopadrao(gl1x)))
    err_gl1x = str(formatn(erropadrao(dp_gl1x, gl1x)))

    # GL 3x
    dp_gl3x = str(formatn(desviopadrao(gl3x)))
    err_gl3x = str(formatn(erropadrao(dp_gl3x, gl3x)))

    # GL 5x
    dp_gl5x = str(formatn(desviopadrao(gl5x)))
    err_gl5x = str(formatn(erropadrao(dp_gl5x, gl5x)))

    labelsp = 'Média SP Min: ' + str(formatn(
        mediasp)) + '\n' + 'DP SP: ' + dp_sp + '\n' + 'EP SP: ' + err_sp
    labelgl1x = 'Média GL 1x: ' + str(
        formatn(mediagl1x)
    ) + '\n' + 'DP GL 1x: ' + dp_gl1x + '\n' + 'EP GL 1x: ' + err_gl1x
    labelgl3x = 'Média GL 3x: ' + str(
        formatn(mediagl3x)
    ) + '\n' + 'DP GL 3x: ' + dp_gl3x + '\n' + 'EP GL 3x: ' + err_gl3x
    labelgl5x = 'Média GL 5x: ' + str(
        formatn(mediagl5x)
    ) + '\n' + 'DP GL 5x: ' + dp_gl5x + '\n' + 'EP GL 5x: ' + err_gl5x

    if (mediasp != None):
        plt.figure(dia)
        plt.cla()  # Limpa os eixos
        plt.clf()  # Limpa a figura
        plt.plot(hora, ir, 'k-', label=labelsp)  # preto
        plt.plot(hora, gl1x, 'r-', label=labelgl1x)  # GL vermelho
        plt.plot(hora, gl3x, 'g-', label=labelgl3x)  # GL 3x verde
        plt.plot(hora, gl5x, 'y-', label=labelgl5x)  # GL 5x amarelo

        plt.title('Rede ' + rede + ' - ' + sigla + str(ano) +
                  format(mes, '02d') + format(dia, '02d') + " - Dia [" +
                  str(dia) + "]")
        plt.ylabel('Irradiância (Wm-2)')
        plt.xlabel('Tempo (Hora UTC)')

        plt.legend(loc='upper left')
        plt.ylim(0, 1500)
        plt.xlim(0, 25)
        createdir(ano, mes, sigla, rede)
        diretorio = './DADOS/IMAGENS/' + rede + '/' + str(
            ano) + '/' + sigla + '/' + format(mes, '02d')
        plt.savefig(diretorio + '/' + str(dia) + '.png')
        if opcao == 0: plt.close()

        plt.cla()  # Limpa os eixos
        plt.clf()  # Limpa a figura
示例#5
0
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
示例#6
0
def figuradiaria(dia, sigla, ano, mes, opcao, hora, ir, gl1x, gl3x, gl5x,
                 mediasp, mediagl1x, mediagl3x, mediagl5x, rede):
    ##    temp_da(dia, mes, ano)
    ##    ir_anual_gl1x[temp_day-1] = mediagl1x
    ##    ir_anual_gl3x[temp_day-1] = mediagl3x
    ##    ir_anual_gl5x[temp_day-1] = mediagl5x

    ##    if(mediasp != 0.0): intSP.append(formatn(mediasp))
    ##    else: intSP.append(None)
    ##
    ##    if(mediagl1x != 0.0): intGL1x.append(formatn(mediagl1x))
    ##    else: intGL1x.append(None)
    ##
    ##    intDia.append(dia)

    # Superficie
    dp_sp = str(formatn(desviopadrao(ir)))
    err_sp = str(formatn(erropadrao(dp_sp, ir)))

    # GL 1x
    dp_gl1x = str(formatn(desviopadrao(gl1x)))
    err_gl1x = str(formatn(erropadrao(dp_gl1x, gl1x)))

    # GL 3x
    dp_gl3x = str(formatn(desviopadrao(gl3x)))
    err_gl3x = str(formatn(erropadrao(dp_gl3x, gl3x)))

    # GL 5x
    dp_gl5x = str(formatn(desviopadrao(gl5x)))
    err_gl5x = str(formatn(erropadrao(dp_gl5x, gl5x)))

    labelsp = 'Média SP Min: ' + str(formatn(
        mediasp)) + '\n' + 'DP SP: ' + dp_sp + '\n' + 'EP SP: ' + err_sp
    labelgl1x = 'Média GL 1x: ' + str(
        formatn(mediagl1x)
    ) + '\n' + 'DP GL 1x: ' + dp_gl1x + '\n' + 'EP GL 1x: ' + err_gl1x
    labelgl3x = 'Média GL 3x: ' + str(
        formatn(mediagl3x)
    ) + '\n' + 'DP GL 3x: ' + dp_gl3x + '\n' + 'EP GL 3x: ' + err_gl3x
    labelgl5x = 'Média GL 5x: ' + str(
        formatn(mediagl5x)
    ) + '\n' + 'DP GL 5x: ' + dp_gl5x + '\n' + 'EP GL 5x: ' + err_gl5x

    #labelsp = 'SP'
    #labelgl1x = 'GL 1X'
    #labelgl3x = 'GL 3X'
    #labelgl5x = 'GL 5X'

    ## Plot figura

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

    plt.plot(hora, ir, 'k-', label=labelsp)  # , label=labelsp preto
    plt.plot(hora, gl1x, 'r-',
             label=labelgl1x)  # , label=labelgl1x GL vermelho
    plt.plot(hora, gl3x, 'g-',
             label=labelgl3x)  # , label=labelgl3x GL 3x verde
    plt.plot(hora, gl5x, 'y-',
             label=labelgl5x)  # , label=labelgl5x GL 5x amarelo

    plt.title('Rede ' + rede + ' - ' + sigla + str(ano) + format(mes, '02d') +
              format(dia, '02d') + " - Dia [" +
              str(diajuliano(dia, mes, ano)) + "]")
    plt.ylabel('Irradiância (Wm-2)')
    plt.xlabel('Tempo (Hora UTC)')
    plt.legend(loc='upper left')
    plt.ylim(0, 1000)
    plt.xlim(9, 23)
    plt.grid()
    createdir(ano, mes, sigla, rede)
    diretorio = './DADOS/IMAGENS/' + rede + '/' + str(
        ano) + '/' + sigla + '/' + format(mes, '02d')
    plt.savefig(diretorio + '/' + str(dia) + '.png')
    plt.close()  #if opcao == 0: plt.close()
    plt.cla()  # Limpa os eixos
    plt.clf()  # Limpa a figura
示例#7
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))