public void PreverVentoPotencia(EntradaVentoPotencia parque) { try { Dictionary <String, Object> dicPotenciaMedia = FactoryDAO.getInstance().PotenciaMediaHoraMesDAO. carregarArquivoPotenciaMedia(Path.GetFullPath(Util.Util.POTENCIA_MEDIA_DIRECTORY_NAME), parque.ParqueEolico.Nome); List <List <EntradaVentoPotencia> > dados = FactoryDAO.getInstance(). PrevisorDAO.GetDadosPrevisaoPotenciaVento(parque.ParqueEolico, dicPotenciaMedia); gerarArquivosDeEntrada(Path.GetFullPath(PREVISOR_VP_DIRECTORY_NAME) + "\\" + parque.ParqueEolico.SiglaPrevEOL + "\\Entradas", dados); this.atualizarParquePastaTrabalho(parque.ParqueEolico.SiglaPrevEOL, PREVISOR_VP_DIRECTORY_NAME); this.atualizarCaminhoDoExecutavelDoPrevisor(Path.GetFullPath(PREVISOR_VP_DIRECTORY_NAME)); this.executarPrevisor(PREVISOR_VP_EXE); } catch (FileNotFoundException e) { MessageBox.Show(e.Message, Constants.WARNNING_CAPTION); } catch (Exception ex) { throw ex; } }
internal EntradaVentoPotencia GetDadosPrevisaoPotenciaVentoVisualizar(ParqueEolico parque) { EntradaVentoPotencia ret = null; try { SqlConnection connection = (SqlConnection)Database.openConnection(); SqlCommand command = connection.CreateCommand(); /* * string query = "SELECT p.id, p.nome, p.siglaCPTEC, p.siglaPrevEOL, vv.dia, vv.mes, vv.ano, vv.mes " + * " FROM velocidadevento vv, direcaovento dv, parque p WHERE p.id = " + parque.Id + * " AND dv.idParque = " + parque.Id + " AND vv.idParque = " + parque.Id + * " AND vv.dia = dv.dia " + * " AND vv.mes = dv.mes " + * " AND vv.ano = dv.ano " + * " AND str_to_date(CONCAT(vv.ano,'-',vv.mes,'-',vv.dia),'%Y-%m-%d') <= '" + String.Format("{0:yyyy-M-d}", DateTime.Now) + "'" + * " ORDER BY vv.ano DESC, vv.mes DESC, vv.dia DESC " + * " LIMIT 1;"; */ /* * string query = "SELECT TOP 1 p.id, p.nome, p.siglaCPTEC, p.siglaPrevEOL, p.siglaGETOT, vv.dia, vv.mes, vv.ano " + * " FROM [NeuroEolica].[dbo].[velocidadevento] vv, [NeuroEolica].[dbo].[direcaovento] dv, [NeuroEolica].[dbo].[parque] p WHERE p.id = " + parque.Id + * " AND dv.idParque = " + parque.Id + " AND vv.idParque = " + parque.Id + * " AND vv.dia = dv.dia " + * " AND vv.mes = dv.mes " + * " AND vv.ano = dv.ano " + * " AND CONVERT(DATETIME,(CONCAT(vv.ano,'-',vv.mes,'-',vv.dia)),101) <= '" + DateTime.Now + "'" + * " ORDER BY vv.ano DESC, vv.mes DESC, vv.dia DESC; ";*/ DateTime dataAtual = DateTime.Now; string query = "SELECT TOP 1 p.id, p.nome, p.siglaCPTEC, p.siglaPrevEOL, p.siglaGETOT, vv.dia, vv.mes, vv.ano " + " FROM [NeuroEolica].[dbo].[velocidadevento] vv, [NeuroEolica].[dbo].[direcaovento] dv, [NeuroEolica].[dbo].[parque] p WHERE p.id = " + parque.Id + " AND dv.idParque = " + parque.Id + " AND vv.idParque = " + parque.Id + " AND vv.dia = dv.dia " + " AND vv.mes = dv.mes " + " AND vv.ano = dv.ano " + " AND CONVERT(DATETIME,(CONCAT(vv.ano,'-',vv.mes,'-',vv.dia)),102) <= '" + String.Format("{0:yyyy-M-d}", dataAtual) + "' " + " ORDER BY vv.ano DESC, vv.mes DESC, vv.dia DESC; "; command.CommandText = query; SqlDataReader reader = command.ExecuteReader(); if (reader.Read()) { ParqueEolico p = new ParqueEolico(reader.GetInt32(0), reader.GetString(1), reader.GetString(2), reader.GetString(3), reader.GetString(4), -1, -1, new Calibracao()); ret = new EntradaVentoPotencia(p, reader.GetInt32(5), reader.GetInt32(6), reader.GetInt32(7), -1, "", "", ""); } reader.Close(); } catch (Exception e) { throw e; } return(ret); }
internal List <EntradaVentoPotencia> GetInputPrevisaoVentoPotencia() { List <EntradaVentoPotencia> ret = new List <EntradaVentoPotencia>(); List <ParqueEolico> parquesEolicos = (List <ParqueEolico>)FactoryController.getInstance().ParqueEolicoController.getParquesCalibrados("VP"); for (int i = 0; i < parquesEolicos.Count; i++) { EntradaVentoPotencia inVP = FactoryDAO.getInstance().PrevisorDAO.GetDadosPrevisaoPotenciaVentoVisualizar(parquesEolicos[i]); if (inVP != null) { ret.Add(inVP); } } return(ret); }
private static void gerarArquivosDeEntrada(String path, List <List <EntradaVentoPotencia> > dados) { for (int diaPrevisto = 0; diaPrevisto < dados.Count; diaPrevisto++) { StreamWriter file = new StreamWriter(path + "/" + PREVISOR_ENTRADA_NOME + (diaPrevisto + 1) + ".txt"); List <EntradaVentoPotencia> entrada = dados[diaPrevisto]; for (int index = 0; index < entrada.Count; index++) { file.WriteLine(entrada[index].GetSenHora().ToString().Replace(',', '.') + " " + entrada[index].GetCosHora().ToString().Replace(',', '.') + " " + entrada[index].GetSenDirecao().ToString().Replace(',', '.') + " " + entrada[index].GetCosDirecao().ToString().Replace(',', '.') + " " + entrada[index].PotenciaMedia.Replace(',', '.') + " " + entrada[index].Velocidade); // No último valro da hora, não precisa interpolar com o valor da frente. if (index != 23) { double velocidade = Double.Parse(entrada[index].Velocidade.Replace('.', ',')) + Double.Parse(entrada[index + 1].Velocidade.Replace('.', ',')); double direcao = Double.Parse(entrada[index].Direcao.Replace('.', ',')) + Double.Parse(entrada[index + 1].Direcao.Replace('.', ',')); double potenciaMedia = Double.Parse(entrada[index].PotenciaMedia.Replace('.', ',')) + Double.Parse(entrada[index + 1].PotenciaMedia.Replace('.', ',')); EntradaVentoPotencia entradaInterpolada = new EntradaVentoPotencia(null, entrada[index].Dia, entrada[index].Mes, entrada[index].Ano, entrada[index].Hora, ((velocidade) / 2).ToString(), (direcao / 2).ToString(), (potenciaMedia / 2).ToString().Replace(',', '.')); file.WriteLine(entradaInterpolada.GetSenHora().ToString().Replace(',', '.') + " " + entradaInterpolada.GetCosHora().ToString().Replace(',', '.') + " " + entradaInterpolada.GetSenDirecao().ToString().Replace(',', '.') + " " + entradaInterpolada.GetCosDirecao().ToString().Replace(',', '.') + " " + entradaInterpolada.PotenciaMedia + " " + entradaInterpolada.Velocidade.ToString().Replace(',', '.')); } } file.Close(); } }