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;
            }
        }
예제 #2
0
        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();
            }
        }