示例#1
0
        private static async System.Threading.Tasks.Task AddDataPoints(int count)
        {
            Random rand = new Random();

            List <Station> stations = await _context.Stations.ToListAsync();

            List <Parameter> parameters = await _context.Parameters.ToListAsync();


            foreach (Station station in stations)
            {
                List <DataPoint> points = new List <DataPoint>();

                decimal lat = (decimal)(rand.NextDouble() * 13 + 35.8);
                decimal lng = (decimal)(rand.NextDouble() * 44.1 - 121);

                for (int i = 0; i < count; i++)
                {
                    foreach (Parameter parameter in parameters)
                    {
                        DataPoint datapoint = new DataPoint();

                        //datapoint.Lat = lat;
                        //datapoint.Lng = lng;


                        datapoint.AQI      = rand.Next(400);
                        datapoint.Category = GetHealthRiskCategory(datapoint.AQI);
                        datapoint.Indoor   = (datapoint.AQI % 2 == 0) ? true : false;

                        datapoint.Parameter = parameter;
                        datapoint.Station   = station;
                        datapoint.Value     = DateTime.Now.Millisecond;
                        datapoint.Time      = DateTime.Now.AddMinutes(i * 15);

                        points.Add(datapoint);
                    }
                }

                _repo.SetDataPointsFromStation(points.ToArray());
            }
        }
示例#2
0
        public IHttpActionResult AddStationDataPointSet([FromBody] DataPoint[] dataSet)
        {
            DateTime start = DateTime.Now;

            if (dataSet.Length == 0)
            {
                return(NotFound());
            }

            foreach (DataPoint dataPoint in dataSet)
            {
                if (dataPoint.Category == 0 && dataPoint.AQI == 0 || dataPoint.AQI < 0)
                {
                    Tuple <int, int> result = null;

                    switch (dataPoint.Parameter.Name)
                    {
                    case "PM2.5":
                        result             = Pm25Aqi.CalculateAQIAndCategory(dataPoint.Value);
                        dataPoint.AQI      = result.Item1;
                        dataPoint.Category = result.Item2;
                        break;

                    case "PM10":
                        result             = Pm10Aqi.CalculateAQIAndCategory(dataPoint.Value);
                        dataPoint.AQI      = result.Item1;
                        dataPoint.Category = result.Item2;
                        break;

                    case "CO":
                        result             = CoAqi.CalculateAQIAndCategory(dataPoint.Value);
                        dataPoint.AQI      = result.Item1;
                        dataPoint.Category = result.Item2;
                        break;

                    case "NO2":
                        result             = No2Aqi.CalculateAQIAndCategory(dataPoint.Value);
                        dataPoint.AQI      = result.Item1;
                        dataPoint.Category = result.Item2;
                        break;

                    case "OZONE":
                        result             = OzoneAqi.CalculateAQIAndCategory(dataPoint.Value);
                        dataPoint.AQI      = result.Item1;
                        dataPoint.Category = result.Item2;
                        break;

                    case "SO2":
                        result             = So2Aqi.CalculateAQIAndCategory(dataPoint.Value);
                        dataPoint.AQI      = result.Item1;
                        dataPoint.Category = result.Item2;
                        break;
                    }
                }
            }

            IEnumerable <DataPoint> response = _stationRepo.SetDataPointsFromStation(dataSet);
            DateTime end = DateTime.Now;

            if (response == null)
            {
                return(NotFound());
            }

            return(Ok(response));
        }