def intercambio_sistema_interligado_nacional(self, objeto_bs, regex): # regex -> REGular EXpression tag = 'div' balanco_detalhado_extrair = BalancoEnergeticoDetalhado() # saida-chegada sentido_transferencia_energia = ['norte-imperatriz', 'imperatriz-nordeste', \ 'itaipu-sudeste','sudeste-imperatriz', 'sul-sudeste', \ 'internacional-sul'] intercambio = {} for intercambio_energia in sentido_transferencia_energia: # print "intercambio" # print intercambio_energia intercambio_extraido = \ balanco_detalhado_extrair.intercambio_entre_subsistemas( objeto_bs, tag, regex[intercambio_energia + '_lf'], regex[intercambio_energia + '_tp'] ) intercambio[intercambio_energia] = { "verificada" : float(intercambio_extraido[0].replace('.','')), "programada" : float(intercambio_extraido[1].replace('.','')) } return intercambio
def energia_itaipu(self, objeto_bs, regex): # regex -> REGular EXpression tag = 'div' balanco_detalhado_extrair = BalancoEnergeticoDetalhado() itaipu = ['50Hz', '60Hz', 'Total'] energia_extraida_vf = \ balanco_detalhado_extrair.energia_itaipu( objeto_bs, tag, regex['prod_verif_lf'], regex['prod_verif_tp'] ) print energia_extraida_vf energia_extraida_pg = \ balanco_detalhado_extrair.energia_itaipu( objeto_bs, tag, regex['prod_prog_lf'], regex['prod_prog_tp'] ) print energia_extraida_pg energia_itaipu = {} for indice, item in enumerate(itaipu): energia_itaipu[item] = { "verificada" : float(energia_extraida_vf[indice].replace('.','')), "programada" : float(energia_extraida_pg[indice].replace('.','')) } print energia_itaipu return energia_itaipu
def balanco_energetico_detalhado_por_subsistema(self, nome_subsistema): tag = 'div' balanco_detalhado_extrair = BalancoEnergeticoDetalhado() dicionario = DicionarioRegEx() sistema_interligado = dicionario.sistema_interligado subsistema = sistema_interligado[nome_subsistema] balanco_detalhado = {} balanco_detalhado[subsistema['nome']] = {} # print subsistema['nome'] qtd_fontes = subsistema['qtd_programada_fontes'] # (objeto_bs, tag, left_tx, top_tx): [fontes_lista, fontes_json] = balanco_detalhado_extrair.fontes_energeticas(self.objeto_bs, tag, subsistema['fontes_lf'], subsistema['fontes_tp'] ) balanco_detalhado[subsistema['nome']]['qtd_fontes'] = {'programada':subsistema['qtd_programada_fontes'], 'verificada':len(fontes_lista)-1} # -1 -> retira Total if balanco_detalhado[subsistema['nome']]['qtd_fontes']['programada'] <> balanco_detalhado[subsistema['nome']]['qtd_fontes']['verificada']: ## Log -> modificação na estrutura do arquivo self.log_arquivo_ipdo["fontes"] = "Erro: A quantidade de fontes verificadas é diferente da quantidade programada." # self.log_arquivo_ipdo["fontes"]["verificada"] = subsistema[regex["nome"]]["qtd_fontes"]["verificada"] # self.log_arquivo_ipdo["fontes"]["programada"] = subsistema[regex["nome"]]["qtd_fontes"]["programada"] # print subsistema['nome'] print 'Erro: A quantidade de fontes verificadas é diferente da quantidade programada.' print 'programada ->' + str(balanco_detalhado[subsistema['nome']]['qtd_fontes']['programada']) print 'verificada ->' + str(balanco_detalhado[subsistema['nome']]['qtd_fontes']['verificada']) import sys sys.exit() producao_vf = balanco_detalhado_extrair.producao( self.objeto_bs, tag, subsistema['prod_verif_lf'], subsistema['prod_verif_tp'] ) producao_pg = balanco_detalhado_extrair.producao( self.objeto_bs, tag, subsistema['prod_prog_lf'], subsistema['prod_prog_tp'] ) ## separa a caga da produção if ((len(producao_vf)==(qtd_fontes+2) and (len(producao_pg)==(qtd_fontes+2)))): carga_vf = [producao_vf.pop(qtd_fontes+1)] carga_pg = [producao_pg.pop(qtd_fontes+1)] ## lê a carga a partir de uma expressão regular elif ((len(producao_vf)==(qtd_fontes+1)) and (len(producao_pg)==(qtd_fontes+1))): carga_vf = balanco_detalhado_extrair.carga( self.objeto_bs, tag, subsistema['carga_verif_lf'], subsistema['carga_verif_tp'] ) carga_pg = balanco_detalhado_extrair.carga( self.objeto_bs, tag, subsistema['carga_prog_lf'], subsistema['carga_prog_tp'] ) else: print 'Erro ao ler a carga do subsistema ->' + subsistema['nome'] print 'O arquivo deve ter mudado de estrutura.' for indice, fonte in enumerate(fontes_lista): fontes_json[fonte] = { 'programada' : producao_pg[indice].replace('.',''), 'verificada' : producao_vf[indice].replace('.','') } balanco_detalhado[subsistema['nome']]['energia'] = fontes_json balanco_detalhado[subsistema['nome']]["carga"] = { "programada" : carga_pg[0].replace('.',''), "verificada" : carga_vf[0].replace('.','') } energia_natural_afluente_vf = \ balanco_detalhado_extrair.energia_narutal_afluente( self.objeto_bs, tag, subsistema['ena_lf'], subsistema['ena_tp'] ) balanco_detalhado[subsistema['nome']]['ena'] = { 'verificada' : energia_natural_afluente_vf[0].replace('.','') } balanco_detalhado[subsistema['nome']]['ena']['verificada'] = \ balanco_detalhado[subsistema['nome']]['ena']['verificada'].replace(',','.') self.valida_conteudo_numerico(balanco_detalhado) return balanco_detalhado[subsistema['nome']]
def extrair_balanco_energetico_detalhado(self): dicionario = DicionarioRegEx() mapeamento_balanco_detalhado = MapeamentoBalancoDetalhado() variacao_energia_armazenada = MapeamentoVariacaoEnergiaArmazenada() # demanda_maxima_mapear = MapeamentoDemandaInstantaneaMaxima() extrair = BalancoEnergeticoDetalhado() sistema_interligado_nacional = {} for subsistema in dicionario.sistema_interligado: sistema_interligado_nacional[subsistema] = \ self.balanco_energetico_detalhado_por_subsistema( dicionario.sistema_interligado[subsistema]['nome'] ) sistema_interligado_nacional[subsistema]["ear"] = \ extrair.energia_armazenada_reservatorio( self.objeto_bs, dicionario.sistema_interligado[subsistema]['nome'] ) sistema_interligado_nacional[subsistema]["eam"] = \ variacao_energia_armazenada.energia_armazenada_maxima( self.objeto_bs, dicionario.sistema_interligado[subsistema] ) print dicionario.sistema_interligado[subsistema]['nome'] # sistema_interligado_nacional[subsistema]["demanda"] = \ # demanda_maxima_mapear.demanda_maxima_instantanea( # self.objeto_bs, dicionario.sistema_interligado[subsistema] # ) ## # # # sistema_interligado_nacional[subsistema]["demanda"]['unidade'] = {'carga': 'MW'} sistema_interligado_nacional['itaipu'] = {'energia' : ''} sistema_interligado_nacional['itaipu'] = {'unidade' : ''} sistema_interligado_nacional['itaipu']['unidade'] = { 'energia': 'MWm' } sistema_interligado_nacional['itaipu']['energia'] = \ mapeamento_balanco_detalhado.energia_itaipu( self.objeto_bs, dicionario.itaipu ) sistema_interligado_nacional['intercambio'] = \ mapeamento_balanco_detalhado.intercambio_sistema_interligado_nacional( self.objeto_bs, dicionario.intercambio ) return sistema_interligado_nacional