public static async Task <EstacaoData> BuscarEstacaoPluviometrica(int codEstacao) { DataTable dataTable = await ExecuteAsyncQuery(string.Format(_queryDadosEstacaoPluviometrica, codEstacao)); EstacaoData estacaoData = new EstacaoData(); if (dataTable.Rows.Count > 0) { estacaoData.Codigo = dataTable.Rows[0].Field <int>("Codigo"); estacaoData.Nome = dataTable.Rows[0].Field <string>("Nome"); estacaoData.NomeBacia = dataTable.Rows[0].Field <string>("NomeBacia"); estacaoData.NomeSubBacia = dataTable.Rows[0].Field <string>("NomeSubBacia"); estacaoData.NomeRio = dataTable.Rows[0].Field <string>("NomeRio"); estacaoData.Operadora = dataTable.Rows[0].Field <string>("Operadora"); estacaoData.Municipio = dataTable.Rows[0].Field <string>("Municipio"); estacaoData.Estado = dataTable.Rows[0].Field <string>("Estado"); estacaoData.Responsavel = dataTable.Rows[0].Field <string>("Responsavel"); estacaoData.Latitude = dataTable.Rows[0].Field <double>("Latitude"); estacaoData.Longitude = dataTable.Rows[0].Field <double>("Longitude"); estacaoData.Altitude = dataTable.Rows[0].Field <double>("Altitude"); estacaoData.AreaDrenagem = dataTable.Rows[0].Field <Nullable <double> >("AreaDrenagem").ToString() ?? string.Empty; estacaoData.Inicio = dataTable.Rows[0].Field <DateTime?>("Inicio"); estacaoData.Fim = dataTable.Rows[0].Field <DateTime?>("Fim"); } return(await Task.FromResult(estacaoData)); }
public static _Workbook CriarGraficoCotaTempo(_Workbook workbook, EstacaoData estacao) { GC.Collect(); _Worksheet worksheet = workbook.Worksheets[5]; // Add chart. var charts = worksheet.ChartObjects() as Microsoft.Office.Interop.Excel.ChartObjects; var chartObject = charts.Add(10, 10, 800, 600) as Microsoft.Office.Interop.Excel.ChartObject; var chart = chartObject.Chart; var dadosGrafico = new object[dadosBackup.GetUpperBound(0) + 1, 2]; for (int i = 0; i < dadosBackup.GetUpperBound(0); i++) { if (dadosBackup[i, 1] != null && !string.IsNullOrEmpty(dadosBackup[i, 1].ToString())) { dadosGrafico[i, 0] = dadosBackup[i, 0]; //Atribui vazão dadosGrafico[i, 1] = dadosBackup[i, 1]; //Atribui cota } } Range range = worksheet.Cells[3, 2]; range = range.Resize[dadosGrafico.GetUpperBound(0), 2]; range.Value = dadosGrafico; chart.SetSourceData(range); // Set chart properties. chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlXYScatterSmooth; chart.ChartWizard(Source: range, Title: "Cota X Tempo", CategoryTitle: "Tempo", ValueTitle: "Cota"); return(workbook); }
public static _Workbook CriarAbaChuvas(_Workbook workbook, IList <SerieHistoricaChuvas> serieHistorica, EstacaoData estacao) { GC.Collect(); SerieHistoricaChuvas linhaEstacao; DateTime dataInicio = estacao.Inicio.HasValue ? estacao.Inicio.Value : serieHistorica.OrderBy(c => c.Data).First().Data; DateTime dataIt = new DateTime(dataInicio.Year, 1, 1); DateTime dataFim = estacao.Fim.HasValue ? estacao.Fim.Value : serieHistorica.OrderByDescending(c => c.Data).First().Data; //Select the sheet _Worksheet worksheet = workbook.Worksheets[2]; int monthQuantity = (((dataFim.Year - dataIt.Year) * 12) + dataFim.Month - dataIt.Month) + 1; //array de dados object[,] dados = new object[monthQuantity, 37]; int i = 0; while (dataIt <= dataFim)//Cria todas as linhas até a data fim. { //Tenta buscar dados consistidos, senão busca os dados Brutos linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "2"); if (linhaEstacao == null) { linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "1"); } dados[i, 1] = dataIt.Date; if (linhaEstacao == null) //linha de dados não existente na base da Ana { dados[i, 0] = "1"; dados[i, 34] = "Não"; dados[i, 35] = "i"; } else { for (int j = 0; j < 31; j++) { dados[i, 2 + j] = linhaEstacao.ChuvasArray[j + 1]; } dados[i, 0] = linhaEstacao.NivelConsistencia; dados[i, 33] = linhaEstacao.Maxima; dados[i, 34] = linhaEstacao.NivelConsistencia == "2" ? "Sim" : "Não"; dados[i, 35] = linhaEstacao.NivelConsistencia == "2" ? "n" : "b"; dados[i, 36] = Convert.ToInt32(linhaEstacao.MaximaStatus); } i++; dataIt = dataIt.AddMonths(1); } Range range = worksheet.Cells[2, 1]; range = range.Resize[monthQuantity, 37]; range.Value = dados; return(workbook); }
public static _Workbook CriarCotaVazaoDiaria(_Workbook workbook, IList <SerieHistoricaCotas> serieHistoricaCotas, IList <SerieHistoricaVazao> serieHistoricaVazao, EstacaoData estacao) { GC.Collect(); _Worksheet worksheet = workbook.Worksheets[4]; SerieHistoricaVazao linhaVazao; SerieHistoricaCotas linhaCotas; DateTime dataInicioVazao = serieHistoricaVazao.OrderBy(c => c.Data).First().Data; DateTime dataFimVazao = serieHistoricaVazao.OrderByDescending(c => c.Data).First().Data; DateTime dataInicioCotas = serieHistoricaCotas.OrderBy(c => c.Data).First().Data; DateTime dataFimCotas = serieHistoricaCotas.OrderByDescending(c => c.Data).First().Data; var anoInicio = dataInicioVazao.Year > dataInicioCotas.Year ? dataInicioVazao.Year : dataInicioCotas.Year; DateTime dataFim = dataFimVazao > dataFimCotas ? dataFimVazao : dataFimCotas; DateTime dataIt = new DateTime(anoInicio, 1, 1); long daysQuantity = Convert.ToInt64((dataFim - dataIt).TotalDays) + DateTime.DaysInMonth(dataFim.Year, dataFim.Month); object[,] dados = new object[daysQuantity, 5]; int i = 0; int ultimaLinha = 0; while (dataIt <= dataFim)//Cria todas as linhas até a data fim. { //Tenta buscar dados consistidos de COTAS, senão busca os dados Brutos linhaCotas = serieHistoricaCotas.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "2"); if (linhaCotas == null) { linhaCotas = serieHistoricaCotas.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "1"); } //Tenta buscar dados consistidos de VAZAO, senão busca os dados Brutos linhaVazao = serieHistoricaVazao.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "2"); if (linhaVazao == null) { linhaVazao = serieHistoricaVazao.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "1"); } var totalDias = DateTime.DaysInMonth(dataIt.Year, dataIt.Month); for (int j = 0; j < totalDias; j++) { dados[ultimaLinha, 0] = dataIt.Date; //COTAS if (linhaCotas == null) { dados[ultimaLinha, 3] = 5; } else { dados[ultimaLinha, 1] = linhaCotas.CotasArray[j + 1]; dados[ultimaLinha, 3] = linhaCotas.NivelConsistencia; } //VAZÃO if (linhaVazao == null) { dados[ultimaLinha, 3] = 5; } else { dados[ultimaLinha, 2] = linhaVazao.VazaoArray[j + 1]; dados[ultimaLinha, 3] = linhaVazao.NivelConsistencia; } ultimaLinha++; dataIt = dataIt.AddDays(1); } } Range range = worksheet.Cells[3, 2]; range = range.Resize[ultimaLinha, 5]; dadosBackup = new object[ultimaLinha, 5]; dadosBackup = dados; range.Value = dados; return(workbook); }
public static _Workbook CriarAbaVazao(_Workbook workbook, IList <SerieHistoricaVazao> serieHistoricaVazao, EstacaoData estacao) { GC.Collect(); SerieHistoricaVazao linhaEstacao; DateTime dataInicio = serieHistoricaVazao.OrderBy(c => c.Data).First().Data; DateTime dataIt = new DateTime(dataInicio.Year, 1, 1); DateTime dataFim = serieHistoricaVazao.OrderByDescending(c => c.Data).First().Data; //Select the sheet _Worksheet worksheet = workbook.Worksheets[3]; int monthQuantity = (((dataFim.Year - dataIt.Year) * 12) + dataFim.Month - dataIt.Month) + 1; //array de dados object[,] dados = new object[monthQuantity, 39]; int i = 0; dados[0, 0] = estacao.Codigo; while (dataIt <= dataFim)//Cria todas as linhas até a data fim. { //Tenta buscar dados consistidos, senão busca os dados Brutos linhaEstacao = serieHistoricaVazao.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "2"); if (linhaEstacao == null) { linhaEstacao = serieHistoricaVazao.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "1"); dados[i, 38] = 1; } dados[i, 1] = dataIt.Date; if (linhaEstacao == null) //linha de dados não existente na base da Ana { dados[i, 38] = 5; } else { for (int j = 0; j < 31; j++) { dados[i, 2 + j] = linhaEstacao.VazaoArray[j + 1]; } dados[i, 33] = linhaEstacao.Maxima; dados[i, 34] = linhaEstacao.Minima; dados[i, 35] = linhaEstacao.Media; dados[i, 36] = linhaEstacao.DiaMaxima; dados[i, 37] = linhaEstacao.DiaMinima; } i++; dataIt = dataIt.AddMonths(1); } Range range = worksheet.Cells[2, 1]; range = range.Resize[monthQuantity, 39]; range.Value = dados; return(workbook); }
public static _Workbook CriarAbaEstacaoFluviometrica(_Workbook workbook, IList <SerieHistoricaVazao> serieHistoricaVazao, EstacaoData estacao) { //Select the sheet _Worksheet worksheet = workbook.Worksheets[1]; DateTime dataIt = serieHistoricaVazao.OrderBy(c => c.Data).First().Data; DateTime dataFim = serieHistoricaVazao.OrderByDescending(c => c.Data).First().Data; object[,] dadosEstacao = new object[16, 1]; dadosEstacao[0, 0] = estacao.Codigo.ToString(); dadosEstacao[1, 0] = estacao.Nome; dadosEstacao[2, 0] = estacao.CodigoAdicional; dadosEstacao[3, 0] = estacao.NomeBacia; dadosEstacao[4, 0] = estacao.NomeSubBacia; dadosEstacao[5, 0] = estacao.NomeRio; dadosEstacao[6, 0] = estacao.Estado; dadosEstacao[7, 0] = estacao.Municipio; dadosEstacao[8, 0] = estacao.Responsavel; dadosEstacao[9, 0] = estacao.Operadora; dadosEstacao[10, 0] = estacao.Latitude; dadosEstacao[11, 0] = estacao.Longitude; dadosEstacao[12, 0] = estacao.Altitude; dadosEstacao[13, 0] = estacao.AreaDrenagem; dadosEstacao[14, 0] = DateTime.Now; dadosEstacao[15, 0] = string.Format("De {0} a {1}", new object[] { dataIt.ToString("dd/MM/yyyy") , dataFim.ToString("dd/MM/yyyy") }); Range range = worksheet.Cells[2, 3]; range = range.Resize[16, 1]; range.Value = dadosEstacao; return(workbook); }
public static _Workbook CriarAbaResumoDiasFalha(_Workbook workbook, IList <SerieHistoricaChuvas> serieHistorica, EstacaoData estacao) { GC.Collect(); _Worksheet worksheet = workbook.Worksheets[7]; DateTime dataInicio = estacao.Inicio.HasValue ? estacao.Inicio.Value : serieHistorica.OrderBy(c => c.Data).First().Data; DateTime dataIt = new DateTime(dataInicio.Year, 1, 1); DateTime dataFim = estacao.Fim.HasValue ? estacao.Fim.Value : serieHistorica.OrderByDescending(c => c.Data).First().Data; SerieHistoricaChuvas linhaEstacao = new SerieHistoricaChuvas(); int totalAnos = dataFim.Year - dataIt.Year; // Dias no mes mais linha referente ao ano. int somatorioDias; object[,] dados = new object[totalAnos + 2, 27]; int totalLinhas = totalAnos + 2; for (int linha = 0; linha < totalLinhas - 1; linha++) { somatorioDias = 0; for (int coluna = 0; coluna < 14; coluna++) { //Somatorio Total if (coluna == 13) { dados[linha, coluna] = somatorioDias; } else { int diasMes = DateTime.DaysInMonth(dataIt.Year, dataIt.Month); linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "2"); if (linhaEstacao == null) { linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt); } if (coluna == 0) { dados[linha, coluna] = dataIt.Year; } else if (linhaEstacao == null) { dados[linha, coluna] = diasMes; dados[linha, coluna + 13] = "i"; } else { int diasFalha = linhaEstacao.StatusChuvasArray.Where(c => c == "0").Count(); int diasChuva = linhaEstacao.StatusChuvasArray.Where(c => c == "1").Count(); if (diasMes == diasChuva) { dados[linha, coluna] = 0; } else if (diasMes == diasFalha) { dados[linha, coluna] = diasFalha; dados[linha, coluna + 13] = "i"; somatorioDias += diasFalha; } else if (diasMes != diasFalha) { if (diasMes > diasFalha) { dados[linha, coluna] = diasMes - diasChuva; dados[linha, coluna + 13] = "a"; somatorioDias += diasMes - diasChuva; } else { somatorioDias += diasMes; dados[linha, coluna] = diasMes; dados[linha, coluna + 13] = "i"; } } } if (coluna != 0) { dataIt = dataIt.AddMonths(1); } } } } dados[totalLinhas - 1, 0] = "Médias"; for (int linhaMedia = 1; linhaMedia <= 13; linhaMedia++) { int valor = 0; int quantidadeValores = 0; double somatorio = 0.0; double media = 0.0; for (int colunaSomatorio = 0; colunaSomatorio < totalLinhas - 1; colunaSomatorio++) { valor = !(dados[colunaSomatorio, linhaMedia] == string.Empty) ? Convert.ToInt32(dados[colunaSomatorio, linhaMedia]) : 0; somatorio += valor; if (valor != 0) { quantidadeValores++; } } media = somatorio / (dataFim.Year - dataInicio.Year + 1); dados[totalLinhas - 1, linhaMedia] = media; } //Imprime os dados Range range = worksheet.Cells[3, 2]; range = range.Resize[totalLinhas, 27]; range.Value = dados; range = worksheet.Cells[3, 2]; range = range.Resize[totalLinhas, 14]; range.Cells.Borders.LineStyle = XlLineStyle.xlContinuous; return(workbook); }
public static _Workbook CriarAbaResumoDia(_Workbook workbook, IList <SerieHistoricaChuvas> serieHistorica, EstacaoData estacao) { GC.Collect(); _Worksheet worksheet = workbook.Worksheets[5]; DateTime dataInicio = estacao.Inicio.HasValue ? estacao.Inicio.Value : serieHistorica.OrderBy(c => c.Data).First().Data; DateTime dataIt = new DateTime(dataInicio.Year, 1, 1); DateTime dataFim = estacao.Fim.HasValue ? estacao.Fim.Value : serieHistorica.OrderByDescending(c => c.Data).First().Data; int linhasRange = 32; int anoIteracao = 0; int linhaInicio = 3; SerieHistoricaChuvas linhaEstacao = new SerieHistoricaChuvas(); while (dataIt <= dataFim)//Cria todas as linhas até a data fim. { object[,] dados = new object[32, 25]; for (int i = 0; i <= 12; i++) //iteração por mes { var diasNoMes = DateTime.DaysInMonth(dataIt.Year, dataIt.Month); // Dias no mes mais linha referente ao ano. linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "2"); if (linhaEstacao == null) { linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "1"); } //preenche a coluna for (int index = 0; index <= 31; index++) // iteracao por dia { if (i == 0 && index == 0) //Escreve o Ano { dados[index, i] = dataIt.Year; } if (i != 0 && index == 0) //Escreve o "-" { dados[index, i] = "-"; } if (i == 0 && index != 0) //Escreve o dia do mes { dados[index, i] = index; } if (i != 0 && index != 0) // Escreve dados da chuva para o dia { if (linhaEstacao == null) // nao existe dados para este mes { dados[index, i + 12] = "i"; } else if (string.IsNullOrEmpty(linhaEstacao.ChuvasArray[index]) && index > diasNoMes) { dados[index, i] = "-"; } else if (string.IsNullOrEmpty(linhaEstacao.ChuvasArray[index])) { dados[index, i + 12] = "b"; } else { dados[index, i] = linhaEstacao.ChuvasArray[index]; } } } if (i != 0) { dataIt = dataIt.AddMonths(1); } } linhaInicio = 3 + (linhasRange * anoIteracao); //Imprime os dados Range range = worksheet.Cells[linhaInicio, 2]; range = range.Resize[linhasRange, 25]; range.Value = dados; //Desenha as linhas de borda range = range.Resize[linhasRange, 13]; range.Cells.Borders.LineStyle = XlLineStyle.xlContinuous; anoIteracao++; } return(workbook); }
public static _Workbook CriarAbaResumo(_Workbook workbook, IList <SerieHistoricaChuvas> serieHistorica, EstacaoData estacao) { GC.Collect(); _Worksheet worksheet = workbook.Worksheets[4]; SerieHistoricaChuvas linhaEstacao = new SerieHistoricaChuvas(); DateTime dataInicio = estacao.Inicio.HasValue ? estacao.Inicio.Value : serieHistorica.OrderBy(c => c.Data).First().Data; DateTime dataFim = estacao.Fim.HasValue ? estacao.Fim.Value : serieHistorica.OrderByDescending(c => c.Data).First().Data; DateTime dataIt = new DateTime(dataInicio.Year, 1, 1); long yearsQuantity = dataFim.Year - dataInicio.Year + 1; //Adiciona ano final object[,] dados = new object[yearsQuantity, 28]; int i = 0; while (dataIt <= dataFim)//Cria todas as linhas até a data fim. { dados[i, 0] = dataIt.Date.Year; for (int j = 1; j <= 12; j++) { //Tenta buscar dados consistidos, senão busca os dados Brutos linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "2"); if (linhaEstacao == null) { linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "1"); } if (linhaEstacao == null) { dados[i, 14] = "a"; dados[i, j + 14] = "i"; } else { dados[i, j] = linhaEstacao.Total; dados[i, j + 14] = string.IsNullOrWhiteSpace(linhaEstacao.TotalStatus) ? "b" : linhaEstacao.TotalStatus; dados[i, 14] = linhaEstacao.NivelConsistencia != "2" ? "a" : string.Empty; dados[i, 13] = linhaEstacao.TotalAnual; dados[i, 27] = linhaEstacao.TotalAnualStatus; } dataIt = dataIt.AddMonths(1); } i++; } Range range = worksheet.Cells[3, 2]; range = range.Resize[yearsQuantity, 28]; range.Value = dados; Range range2 = worksheet.Cells[3, 2]; range = range.Resize[yearsQuantity, 14]; range.Cells.Borders.LineStyle = XlLineStyle.xlContinuous; return(workbook); }
public static _Workbook CriarAbaDiaria(_Workbook workbook, IList <SerieHistoricaChuvas> serieHistorica, EstacaoData estacao) { GC.Collect(); _Worksheet worksheet = workbook.Worksheets[3]; SerieHistoricaChuvas linhaEstacao; DateTime dataInicio = estacao.Inicio.HasValue ? estacao.Inicio.Value : serieHistorica.OrderBy(c => c.Data).First().Data; DateTime dataIt = new DateTime(dataInicio.Year, 1, 1); DateTime dataFim = estacao.Fim.HasValue ? estacao.Fim.Value : serieHistorica.OrderByDescending(c => c.Data).First().Data; long daysQuantity = Convert.ToInt64((dataFim - dataIt).TotalDays) + DateTime.DaysInMonth(dataFim.Year, dataFim.Month); object[,] dados = new object[daysQuantity, 3]; int i = 0; int ultimaLinha = 0; while (dataIt <= dataFim)//Cria todas as linhas até a data fim. { //Tenta buscar dados consistidos, senão busca os dados Brutos linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "2"); if (linhaEstacao == null) { linhaEstacao = serieHistorica.FirstOrDefault(c => c.Data == dataIt && c.NivelConsistencia == "1"); } var totalDias = DateTime.DaysInMonth(dataIt.Year, dataIt.Month); for (int j = 0; j < totalDias; j++) { dados[ultimaLinha, 0] = dataIt.Date; if (linhaEstacao == null) { dados[ultimaLinha, 2] = "i"; } else { dados[ultimaLinha, 1] = linhaEstacao.ChuvasArray[j + 1]; dados[ultimaLinha, 2] = linhaEstacao.NivelConsistencia; } ultimaLinha++; dataIt = dataIt.AddDays(1); } } Range range = worksheet.Cells[3, 2]; range = range.Resize[ultimaLinha, 3]; range.Value = dados; return(workbook); }