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')
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
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)
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()
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))
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))