示例#1
0
 public bool insertGlaciologicalData(int idDocument, string reader)
 {
     try
     {
         string[] aux = null;
         aux = reader.Split(';').Where(x => !String.IsNullOrEmpty(x)).ToArray();
         glaciologicalData data = new glaciologicalData();
         data.altitudinalBar = aux[0];
         data.startDay       = Convert.ToInt16(aux[1]);
         data.startMonth     = Convert.ToInt16(aux[2]);
         data.startYear      = Convert.ToInt16(aux[3]);
         data.endDay         = Convert.ToInt16(aux[4]);
         data.endMonth       = Convert.ToInt16(aux[5]);
         data.endYear        = Convert.ToInt16(aux[6]);
         data.latitude       = Convert.ToDouble(aux[7]);
         data.longitude      = Convert.ToDouble(aux[8]);
         data.altitude       = Convert.ToDouble(aux[9]);
         data.massBalance    = Convert.ToDouble(aux[10]);
         data.monthData      = Convert.ToInt16(aux[11]);
         data.idEnteredData  = idDocument;
         db.glaciologicalDatas.Add(data);
         db.SaveChanges();
         return(true);
     }
     catch
     {
         return(false);
     }
 }
示例#2
0
 public bool insertMeteoMetadata(int idDocument, int rowNumber, string reader, enteredData enteredData)
 {
     try //SOLO HAY UNO INDEPENDIENTE SI ES DENTRO O FUERA DEL GLACIAR PORQUE EL NÚMERO DE COLUMNAS DE METADATOS ES EL MISMO
     {
         if (rowNumber > 3)
         {
             if (!reader.Contains("#date"))
             {
                 string[] aux = null;
                 aux = reader.Split(';').ToArray();
                 metadata metadata = new metadata();
                 metadata.variable_code       = aux[0];
                 metadata.variable_name       = aux[1];
                 metadata.sensor_manufacturer = aux[2];
                 metadata.sensor_model        = aux[3];
                 metadata.unit          = aux[4];
                 metadata.dataQuality   = aux[5];
                 metadata.idEnteredData = idDocument;
                 db.metadatas.Add(metadata);
             }
             db.SaveChanges();
         }
         return(true);
     }
     catch
     {
         return(false);
     }
 }
示例#3
0
        public bool insertMeteorologicalData(int idDocument, string reader, station selectedStation)
        {
            try
            {
                string[] aux = null;
                aux = reader.Split(';').Where(x => !String.IsNullOrEmpty(x)).ToArray();
                meteorologicalData data = new meteorologicalData();

                if (selectedStation.idLocation == 1) //Datos Meteorológicos dentro del glaciar
                {
                    data.dateData              = Convert.ToDateTime(aux[0]);
                    data.inShortWaveRadiation  = (Math.Round((float.Parse(aux[1])), 3));
                    data.outShortWaveRadiation = (Math.Round((float.Parse(aux[2])), 3));
                    data.albedo                   = (Math.Round((float.Parse(aux[3])), 3));
                    data.relativeHumidity         = (Math.Round((float.Parse(aux[4])), 3));
                    data.ventilatedAirTemperature = (Math.Round((float.Parse(aux[5])), 3));
                    data.windSpeed                = (Math.Round((float.Parse(aux[6])), 3));
                    data.windDirection            = (Math.Round((float.Parse(aux[7])), 3));
                }
                else //Datos Meteorológicos fuera del glaciar
                {
                    data.dateData              = Convert.ToDateTime(aux[0]);
                    data.inShortWaveRadiation  = (Math.Round((float.Parse(aux[1])), 3));
                    data.outShortWaveRadiation = (Math.Round((float.Parse(aux[2])), 3));
                    data.albedo = (Math.Round((float.Parse(aux[3])), 3));
                    data.inLongWaveRadiation         = (Math.Round((float.Parse(aux[4])), 3));
                    data.outLongWaveRadiation        = (Math.Round((float.Parse(aux[5])), 3));
                    data.relativeHumidity            = (Math.Round((float.Parse(aux[6])), 3));
                    data.ventilatedAirTemperature    = (Math.Round((float.Parse(aux[7])), 3));
                    data.nonVentilatedAirTemperature = (Math.Round((float.Parse(aux[8])), 3));
                    data.windSpeed           = (Math.Round((float.Parse(aux[9])), 3));
                    data.windDirection       = (Math.Round((float.Parse(aux[10])), 3));
                    data.precipitationAmount = (Math.Round((float.Parse(aux[11])), 3));
                    data.precipitationRate   = (Math.Round((float.Parse(aux[12])), 3));
                    data.distanceSensor_Snow = (Math.Round((float.Parse(aux[13])), 3));
                    data.snowDepth           = (Math.Round((float.Parse(aux[14])), 3));
                    data.groundFlux          = (Math.Round((float.Parse(aux[15])), 3));
                    data.groundTemp_3cm      = (Math.Round((float.Parse(aux[16])), 3));
                    data.groundTemp_10cm     = (Math.Round((float.Parse(aux[17])), 3));
                    data.groundTemp_30cm     = (Math.Round((float.Parse(aux[18])), 3));
                }
                data.idEnteredData = idDocument;
                db.meteorologicalDatas.Add(data);
                db.SaveChanges();
                return(true);
            }
            catch
            {
                return(false);
            }
        }
示例#4
0
        public bool insertHydrologicalData(int idDocument, int rowNumber, string reader)
        {
            try
            {
                string[] aux = null;
                aux = reader.Split(';').Where(x => !String.IsNullOrEmpty(x)).ToArray();
                hydrologicalData data = new hydrologicalData();

                return(true);
            }
            catch
            {
                return(false);
            }
        }
示例#5
0
        public void generateGraphics(IEnumerable <FilteredData> data, string variable, EnteredDataExt searchedInfo)
        {
            List <DateTime> dates  = new List <DateTime>();
            List <double?>  values = new List <double?>();

            try
            {
                foreach (var item in data)
                {
                    dates.Add(item.key1);
                    values.Add(item.Key2);
                }
            }
            catch (Exception ex) { }
            new Chart(width: 600, height: 400, theme: ChartTheme.Green).AddTitle("Results").
            AddSeries(chartType: "Line", xValue: dates, yValues: values).AddLegend(variable, null).
            Save("~/Content/images/hola.jpeg", "jpeg");
        }
示例#6
0
        public ActionResult Search(EnteredDataExt u)
        {
            int    year     = u.year;
            string variable = u.variable;
            int    elId     = u.idMeasurementType;

            EnteredDataExt searchedInfo = u;

            Session.Add("SearchedInfo", searchedInfo);
            if (u.idStation != 0)
            {
                if (u.idDataType == 1)            //Búsqueda para tipos de datos Observation
                {
                    if (u.idMeasurementType == 1) //Búsqueda cuando la información es de meteorología
                    {
                        List <meteorologicalData> searchedData = (from doc in db.enteredDatas
                                                                  join data in db.meteorologicalDatas on doc.idEnteredData equals data.idEnteredData
                                                                  where doc.idStation == u.idStation && (SqlFunctions.DatePart("year", doc.startDate) == year || SqlFunctions.DatePart("year", doc.endDate) == year) && SqlFunctions.DatePart("year", data.dateData) == year //&& Convert.ToDouble(data.Get<meteorologicalData>(variable).ToString()) != -6999
                                                                  select data).ToList();

                        if (searchedData.Any())
                        {
                            List <FilteredData> summary = new List <FilteredData>();
                            foreach (var item in searchedData)
                            {
                                if (Double.Parse(item.Get <double>(variable).ToString()) != -6999)
                                {
                                    FilteredData aux = new FilteredData()
                                    {
                                        key1 = item.dateData,
                                        Key2 = Double.Parse(item.Get <double>(variable).ToString())
                                    };
                                    summary.Add(aux);
                                }
                            }
                            IEnumerable <FilteredData> result;
                            if (variable == "precipitationAmount") //Para precipitaciones se suma (valor acumulado)
                            {
                                result = from f in summary
                                         group f by f.key1.Date into g
                                         select new FilteredData {
                                    key1 = g.Key, Key2 = g.Sum(x => Convert.ToDouble(x.Key2.ToString()))
                                };
                                //generateGraphics(result, variable);
                            }
                            else //Para el resto de variables se promedia
                            {
                                result = from f in summary
                                         group f by f.key1.Date into g
                                         select new FilteredData {
                                    key1 = g.Key, Key2 = g.Average(x => Convert.ToDouble(x.Key2.ToString()))
                                };
                                //generateGraphics(result, variable);
                            }
                            Session.Add("stationInfo", db.stations.Single(i => i.idStation == u.idStation));
                            Session.Add("resultInfo", result);
                            Session.Add("variableInfo", variable);

                            generateGraphics(result, variable, u);

                            aux = u;
                            Session.Add("results", result);
                            return(View("ShowResults", result));
                        }
                        else
                        {
                            Session.Add("notification", "No data found with the selected search criteria");
                            Session["message"] = null;
                            Session["error"]   = null;
                            return(RedirectToAction("Search", u));
                        }
                    }

                    else if (u.idMeasurementType == 2) //Búsqueda cuando la información es de glaciología
                    {
                        List <glaciologicalData> searchedData = (from doc in db.enteredDatas
                                                                 join data in db.glaciologicalDatas on doc.idEnteredData equals data.idEnteredData
                                                                 where doc.idEnteredData == u.idEnteredData && data.altitudinalBar == u.altitudinalBar
                                                                 select data).ToList();
                        if (searchedData.Any())
                        {
                            List <FilteredData> summary = new List <FilteredData>();
                            foreach (var item in searchedData)
                            {
                                var cnkjdvbhdfbvdf = item.Get <double>(variable).ToString();
                                if (Double.Parse(item.Get <double>(variable).ToString()) != -6999)
                                {
                                    if (item.startDay != -6999)
                                    {
                                        FilteredData aux = new FilteredData()
                                        {
                                            key1 = (DateTime.Parse(item.startDay.ToString() + "/" + item.startMonth.ToString() + "/" + item.startYear.ToString())),
                                            //key3 = item.startMonth,
                                            Key2 = Double.Parse(item.Get <double>(variable).ToString())
                                        };
                                        summary.Add(aux);
                                    }
                                    else
                                    {
                                        FilteredData aux = new FilteredData()
                                        {
                                            key1 = (DateTime.Parse("01" + "/" + item.startMonth.ToString() + "/" + item.startYear.ToString())),
                                            //key3 = item.startMonth,
                                            Key2 = Double.Parse(item.Get <double>(variable).ToString())
                                        };
                                        summary.Add(aux);
                                    }
                                }
                            }
                            IEnumerable <FilteredData> result;
                            result = (IEnumerable <FilteredData>)(summary);

                            Session.Add("stationInfo", db.stations.Single(i => i.idStation == u.idStation));
                            Session.Add("resultInfo", result);
                            Session.Add("variableInfo", variable);
                            Session.Add("altitudinalBar", u.altitudinalBar);

                            generateGraphics(result, variable, u);

                            aux = u;
                            Session.Add("results", result);
                            return(View("ShowResults", result));
                        }
                        else
                        {
                            Session.Add("notification", "No data found with the selected search criteria");
                            Session["message"] = null;
                            Session["error"]   = null;
                            return(RedirectToAction("Search", u));
                        }
                    }

                    else             //Búsqueda cuando la información es de hidrología
                    {
                        List <hydrologicalData> searchedData = (from doc in db.enteredDatas
                                                                join data in db.hydrologicalDatas on doc.idEnteredData equals data.idEnteredData
                                                                where doc.idStation == u.idStation && (SqlFunctions.DatePart("year", doc.startDate) == year || SqlFunctions.DatePart("year", doc.endDate) == year) && SqlFunctions.DatePart("year", data.dateData) == year //&& Convert.ToDouble(data.Get<meteorologicalData>(variable).ToString()) != -6999
                                                                select data).ToList();

                        if (searchedData.Any())
                        {
                            List <FilteredData> summary = new List <FilteredData>();
                            foreach (var item in searchedData)
                            {
                                var cnkjdvbhdfbvdf = item.Get <double>(variable).ToString();
                                if (Double.Parse(item.Get <double>(variable).ToString()) != -6999)
                                {
                                    FilteredData aux = new FilteredData()
                                    {
                                        key1 = item.dateData,
                                        Key2 = Double.Parse(item.Get <double>(variable).ToString())
                                    };
                                    summary.Add(aux);
                                }
                            }
                            IEnumerable <FilteredData> result;

                            result = from f in summary
                                     group f by f.key1.Date into g
                                     select new FilteredData {
                                key1 = g.Key, Key2 = g.Average(x => Convert.ToDouble(x.Key2.ToString()))
                            };

                            //generateGraphics(result, variable);
                            Session.Add("stationInfo", db.stations.Single(i => i.idStation == u.idStation));
                            Session.Add("resultInfo", result);
                            Session.Add("variableInfo", variable);

                            generateGraphics(result, variable, u);

                            aux = u;
                            Session.Add("results", result);
                            return(View("ShowResults", result));
                        }
                        else
                        {
                            Session.Add("notification", "No data found with the selected search criteria");
                            Session["message"] = null;
                            Session["error"]   = null;
                            return(RedirectToAction("Search", u));
                        }
                    }
                }
                else
                {
                    Session.Add("notification", "Simulations are not available at this moment. We are sorry!");
                    Session["message"] = null;
                    Session["error"]   = null;
                    return(RedirectToAction("Search", u));
                }
            }
            else
            {
                Session.Add("notification", null);
                Session["message"] = null;
                Session["error"]   = "Select all fields";
                return(RedirectToAction("Search"));
            }
        }