Пример #1
0
 public JsonResult CoverageAdjust(CoverageStatChart chart)
 {
     List<ENodeb> eNodebList = eNodebRepository.GetAllList();
     IEnumerable<CoverageAdjustment> adjustments =
         chart.StatList.GenerateAdjustmentList(cellRepository, eNodebList);
     var result = from a in adjustments
                  join e in eNodebList
                  on a.ENodebId equals e.ENodebId
                  select new
                  {
                      N = e.Name + "-" + a.SectorId,
                      F = a.Frequency,
                      F165m = (int)(100 * a.Factor165m) / (double)(100),
                      F135m = (int)(100 * a.Factor135m) / (double)(100),
                      F105m = (int)(100 * a.Factor105m) / (double)(100),
                      F75m = (int)(100 * a.Factor75m) / (double)(100),
                      F45m = (int)(100 * a.Factor45m) / (double)(100),
                      F15m = (int)(100 * a.Factor15m) / (double)(100),
                      F15 = (int)(100 * a.Factor15) / (double)(100),
                      F45 = (int)(100 * a.Factor45) / (double)(100),
                      F75 = (int)(100 * a.Factor75) / (double)(100),
                      F105 = (int)(100 * a.Factor105) / (double)(100),
                      F135 = (int)(100 * a.Factor135) / (double)(100),
                      F165 = (int)(100 * a.Factor165) / (double)(100)
                  };
     return Json(result, JsonRequestBehavior.AllowGet);
 }
Пример #2
0
 public void TestCoverageStatList_Hugeland()
 {
     HugelandDescriptionInitialize();
     testInput = HugelandRecordExample;
     coverageStatList = CsvContext.ReadString<HugelandRecord>(testInput, fileDescription_namesUs).Select(x =>
     {
         CoverageStat stat = new CoverageStat(); stat.Import(x); return stat;
     }).ToList();
     Assert.AreEqual(coverageStatList.Count, 19);
     Assert.AreEqual(coverageStatList[0].Longtitute, 113.13548);
     Assert.AreEqual(coverageStatList[0].Lattitute, 23.07062);
     Assert.AreEqual(coverageStatList[0].Rsrp, -93);
     Assert.AreEqual(coverageStatList[0].Sinr, 3.4);
     CoverageStatChart chart = new CoverageStatChart();
     chart.Import(coverageStatList);
     Assert.AreEqual(chart.StatList.Count, 9);
     Assert.AreEqual(chart.StatList[0].Longtitute, 113.13548);
     Assert.AreEqual(chart.StatList[0].Lattitute, 23.07062);
     Assert.AreEqual(chart.StatList[0].Rsrp, -93);
     Assert.AreEqual(chart.StatList[1].Rsrp, -93.2, 1E-6);
     Assert.AreEqual(chart.StatList[2].Rsrp, -93.15);
     Assert.AreEqual(chart.StatList[3].Rsrp, -92.6);
     Assert.AreEqual(chart.StatList[4].Rsrp, -94.1);
     Assert.AreEqual(chart.StatList[5].Rsrp, -96.5);
     Assert.AreEqual(chart.StatList[6].Rsrp, -98.5);
     Assert.AreEqual(chart.StatList[7].Rsrp, -98.5);
     Assert.AreEqual(chart.StatList[8].Rsrp, -98.5);
     Assert.AreEqual(chart.StatList[0].Sinr, 3.4);
     Assert.AreEqual(chart.StatList[1].Sinr, 2.8);
     Assert.AreEqual(chart.StatList[2].Sinr, 2.55);
 }
        public void TestCoverageStatList_Dingli()
        {
            DescriptionInitialize();
            testInput        = DingliRecordExample;
            coverageStatList = CsvContext.ReadString <LogRecord>(testInput, fileDescription_namesUs).Select(x =>
            {
                CoverageStat stat = new CoverageStat(); stat.Import(x); return(stat);
            }).ToList();
            Assert.AreEqual(coverageStatList.Count, 74);
            Assert.AreEqual(coverageStatList[0].Longtitute, -9999);
            Assert.AreEqual(coverageStatList[0].Rsrp, -97.31);
            Assert.AreEqual(coverageStatList[0].Sinr, 14.3);
            CoverageStatChart chart = new CoverageStatChart();

            chart.Import(coverageStatList);
            Assert.AreEqual(chart.StatList.Count, 7);
            Assert.AreEqual(chart.StatList[0].Longtitute, 113.0001);
            Assert.AreEqual(chart.StatList[0].Lattitute, 23.0002);
            Assert.AreEqual(chart.StatList[0].Rsrp, -97.31);
            Assert.AreEqual(chart.StatList[1].Rsrp, -97.25);
            Assert.AreEqual(chart.StatList[2].Rsrp, -97.25);
            Assert.AreEqual(chart.StatList[3].Rsrp, -97.25);
            Assert.AreEqual(chart.StatList[4].Rsrp, -97.25);
            Assert.AreEqual(chart.StatList[5].Rsrp, -97.25);
            Assert.AreEqual(chart.StatList[6].Rsrp, -97.25);
            Assert.AreEqual(chart.StatList[0].Sinr, 14.3);
            Assert.AreEqual(chart.StatList[1].Sinr, 13.4);
            Assert.AreEqual(chart.StatList[2].Sinr, 13.4);
            Assert.AreEqual(chart.StatList[3].Sinr, 13.4);
            Assert.AreEqual(chart.StatList[4].Sinr, 13.4);
            Assert.AreEqual(chart.StatList[5].Sinr, 13.4);
            Assert.AreEqual(chart.StatList[6].Sinr, 13.4);
        }
Пример #4
0
 public void TestCoverageStatList_Dingli()
 {
     DescriptionInitialize();
     testInput = DingliRecordExample;
     coverageStatList = CsvContext.ReadString<LogRecord>(testInput, fileDescription_namesUs).Select(x =>
         {
              CoverageStat stat = new CoverageStat(); stat.Import(x); return stat;
         }).ToList();
     Assert.AreEqual(coverageStatList.Count, 74);
     Assert.AreEqual(coverageStatList[0].Longtitute, -9999);
     Assert.AreEqual(coverageStatList[0].Rsrp, -97.31);
     Assert.AreEqual(coverageStatList[0].Sinr, 14.3);
     CoverageStatChart chart = new CoverageStatChart();
     chart.Import(coverageStatList);
     Assert.AreEqual(chart.StatList.Count, 7);
     Assert.AreEqual(chart.StatList[0].Longtitute, 113.0001);
     Assert.AreEqual(chart.StatList[0].Lattitute, 23.0002);
     Assert.AreEqual(chart.StatList[0].Rsrp, -97.31);
     Assert.AreEqual(chart.StatList[1].Rsrp, -97.25);
     Assert.AreEqual(chart.StatList[2].Rsrp, -97.25);
     Assert.AreEqual(chart.StatList[3].Rsrp, -97.25);
     Assert.AreEqual(chart.StatList[4].Rsrp, -97.25);
     Assert.AreEqual(chart.StatList[5].Rsrp, -97.25);
     Assert.AreEqual(chart.StatList[6].Rsrp, -97.25);
     Assert.AreEqual(chart.StatList[0].Sinr, 14.3);
     Assert.AreEqual(chart.StatList[1].Sinr, 13.4);
     Assert.AreEqual(chart.StatList[2].Sinr, 13.4);
     Assert.AreEqual(chart.StatList[3].Sinr, 13.4);
     Assert.AreEqual(chart.StatList[4].Sinr, 13.4);
     Assert.AreEqual(chart.StatList[5].Sinr, 13.4);
     Assert.AreEqual(chart.StatList[6].Sinr, 13.4);
 }
        public void TestCoverageStatList_Hugeland()
        {
            HugelandDescriptionInitialize();
            testInput        = HugelandRecordExample;
            coverageStatList = CsvContext.ReadString <HugelandRecord>(testInput, fileDescription_namesUs).Select(x =>
            {
                CoverageStat stat = new CoverageStat(); stat.Import(x); return(stat);
            }).ToList();
            Assert.AreEqual(coverageStatList.Count, 19);
            Assert.AreEqual(coverageStatList[0].Longtitute, 113.13548);
            Assert.AreEqual(coverageStatList[0].Lattitute, 23.07062);
            Assert.AreEqual(coverageStatList[0].Rsrp, -93);
            Assert.AreEqual(coverageStatList[0].Sinr, 3.4);
            CoverageStatChart chart = new CoverageStatChart();

            chart.Import(coverageStatList);
            Assert.AreEqual(chart.StatList.Count, 9);
            Assert.AreEqual(chart.StatList[0].Longtitute, 113.13548);
            Assert.AreEqual(chart.StatList[0].Lattitute, 23.07062);
            Assert.AreEqual(chart.StatList[0].Rsrp, -93);
            Assert.AreEqual(chart.StatList[1].Rsrp, -93.2, 1E-6);
            Assert.AreEqual(chart.StatList[2].Rsrp, -93.15);
            Assert.AreEqual(chart.StatList[3].Rsrp, -92.6);
            Assert.AreEqual(chart.StatList[4].Rsrp, -94.1);
            Assert.AreEqual(chart.StatList[5].Rsrp, -96.5);
            Assert.AreEqual(chart.StatList[6].Rsrp, -98.5);
            Assert.AreEqual(chart.StatList[7].Rsrp, -98.5);
            Assert.AreEqual(chart.StatList[8].Rsrp, -98.5);
            Assert.AreEqual(chart.StatList[0].Sinr, 3.4);
            Assert.AreEqual(chart.StatList[1].Sinr, 2.8);
            Assert.AreEqual(chart.StatList[2].Sinr, 2.55);
        }
Пример #6
0
        public JsonResult CoverageAdjust(CoverageStatChart chart)
        {
            List <ENodeb> eNodebList = eNodebRepository.GetAllList();
            IEnumerable <CoverageAdjustment> adjustments =
                chart.StatList.GenerateAdjustmentList(cellRepository, eNodebList);
            var result = from a in adjustments
                         join e in eNodebList
                         on a.ENodebId equals e.ENodebId
                         select new
            {
                N     = e.Name + "-" + a.SectorId,
                F     = a.Frequency,
                F165m = (int)(100 * a.Factor165m) / (double)(100),
                F135m = (int)(100 * a.Factor135m) / (double)(100),
                F105m = (int)(100 * a.Factor105m) / (double)(100),
                F75m  = (int)(100 * a.Factor75m) / (double)(100),
                F45m  = (int)(100 * a.Factor45m) / (double)(100),
                F15m  = (int)(100 * a.Factor15m) / (double)(100),
                F15   = (int)(100 * a.Factor15) / (double)(100),
                F45   = (int)(100 * a.Factor45) / (double)(100),
                F75   = (int)(100 * a.Factor75) / (double)(100),
                F105  = (int)(100 * a.Factor105) / (double)(100),
                F135  = (int)(100 * a.Factor135) / (double)(100),
                F165  = (int)(100 * a.Factor165) / (double)(100)
            };

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Пример #7
0
        public ActionResult CoverageAnalyze(HttpPostedFileBase[] fileUpload, CoverageStatChart chart)
        {
            List <CoverageStat> coverageStatList = new List <CoverageStat>();

            if (fileUpload[0] != null)
            {
                foreach (HttpPostedFileBase file in fileUpload)
                {
                    using (HttpFileImporter importer = new HttpFileImporter(file))
                    {
                        if (!importer.Success)
                        {
                            if (TempData["warning"] == null)
                            {
                                TempData["warning"] = "请选择合适的路测数据导入!读取以下文件失败:"
                                                      + importer.FilePath;
                            }
                            else
                            {
                                TempData["warning"] += "; " + importer.FilePath;
                            }
                        }
                        else
                        {
                            string extension = Path.GetExtension(importer.FileName);
                            if (extension != null)
                            {
                                string fileExt = extension.ToLower();
                                coverageStatList.AddRange(
                                    (fileExt == ".txt") ?
                                    CsvContext.Read <LogRecord>(
                                        importer.Reader, CsvFileDescription.TabDescription).Select(x =>
                                {
                                    CoverageStat stat = new CoverageStat(); stat.Import(x); return(stat);
                                }).ToList() :
                                    CsvContext.Read <HugelandRecord>(
                                        importer.Reader, CsvFileDescription.CommaDescription).Select(x =>
                                {
                                    CoverageStat stat = new CoverageStat(); stat.Import(x); return(stat);
                                }));
                            }
                            chart.Import(coverageStatList);
                            if (TempData["warning"] == null)
                            {
                                TempData["success"] = "导入路测数据成功!";
                            }
                        }
                    }
                }
            }

            ViewBag.Title          = "路测覆盖指标分析";
            TempData["StatLength"] = chart.StatList.Count;
            return(View("CoverageImport"));
        }
Пример #8
0
        public ActionResult CoverageAnalyze(HttpPostedFileBase[] fileUpload, CoverageStatChart chart)
        {
            List<CoverageStat> coverageStatList = new List<CoverageStat>();
            if (fileUpload[0] != null)
            {
                foreach (HttpPostedFileBase file in fileUpload)
                {
                    using (HttpFileImporter importer = new HttpFileImporter(file))
                    {
                        if (!importer.Success)
                        {
                            if (TempData["warning"] == null)
                            {
                                TempData["warning"] = "请选择合适的路测数据导入!读取以下文件失败:"
                                                      + importer.FilePath;
                            }
                            else
                            {
                                TempData["warning"] += "; " + importer.FilePath;
                            }
                        }
                        else
                        {
                            string extension = Path.GetExtension(importer.FileName);
                            if (extension != null)
                            {
                                string fileExt = extension.ToLower();
                                coverageStatList.AddRange(
                                    (fileExt == ".txt") ?
                                        CsvContext.Read<LogRecord>(
                                            importer.Reader, CsvFileDescription.TabDescription).Select(x =>
                                            {
                                                CoverageStat stat = new CoverageStat(); stat.Import(x); return stat;
                                            }).ToList() :
                                        CsvContext.Read<HugelandRecord>(
                                            importer.Reader, CsvFileDescription.CommaDescription).Select(x =>
                                            {
                                                CoverageStat stat = new CoverageStat(); stat.Import(x); return stat;
                                            }));
                            }
                            chart.Import(coverageStatList);
                            if (TempData["warning"] == null)
                            {
                                TempData["success"] = "导入路测数据成功!";
                            }
                        }
                    }
                }
            }

            ViewBag.Title = "路测覆盖指标分析";
            TempData["StatLength"] = chart.StatList.Count;
            return View("CoverageImport");
        }
Пример #9
0
        public JsonResult GetCoveragePoints(string fieldName,
                                            StatValueFieldRepository repository, CoverageStatChart chart)
        {
            StatValueField field = repository.GenerateDefaultField(fieldName);

            return(Json(chart.StatList.Select(x => new
            {
                X = x.Longtitute + GeoMath.BaiduLongtituteOffset,
                Y = x.Lattitute + GeoMath.BaiduLattituteOffset,
                C = field.GetColor(fieldName == "信号RSRP" ? x.Rsrp : x.Sinr, "FFFFFF")
            }), JsonRequestBehavior.AllowGet));
        }
Пример #10
0
        public JsonResult CoverageIntervalPercentage(string fieldName, CoverageStatChart chart)
        {
            StatValueField field = new StatValueField {
                FieldName = fieldName
            };

            field.AutoGenerateIntervals(8);
            IEnumerable <double> values = (fieldName == "信号RSRP") ?
                                          chart.StatList.Select(x => x.Rsrp) : chart.StatList.Select(x => x.Sinr);
            Dictionary <string, double> result = field.GetPercentageStat(values);

            return(Json(result.Select(x => new { N = x.Key, V = 100 * x.Value }), JsonRequestBehavior.AllowGet));
        }
Пример #11
0
        public object BindModel(ControllerContext controllerContext,
            ModelBindingContext bindingContext)
        {
            CoverageStatChart repository
                = (CoverageStatChart)controllerContext.HttpContext.Session[sessionKey];

            if (repository == null)
            {
                repository = new CoverageStatChart();
                controllerContext.HttpContext.Session[sessionKey] = repository;
            }
            // return the cart
            return repository;
        }
Пример #12
0
        public object BindModel(ControllerContext controllerContext,
                                ModelBindingContext bindingContext)
        {
            CoverageStatChart repository
                = (CoverageStatChart)controllerContext.HttpContext.Session[sessionKey];

            if (repository == null)
            {
                repository = new CoverageStatChart();
                controllerContext.HttpContext.Session[sessionKey] = repository;
            }
            // return the cart
            return(repository);
        }
Пример #13
0
        public ActionResult ExportPoints(string fieldName, StatValueFieldRepository repository,
                                         CoverageStatChart chart)
        {
            if (chart.StatList.Count == 0)
            {
                TempData["warning"] = "覆盖数据为空,请先导入数据分析。";
                return(RedirectToAction("CoverageImport"));
            }
            StatValueField field = repository.GenerateDefaultField(fieldName);

            TempData["centerX"] = chart.StatList.Average(x => x.BaiduLongtitute);
            TempData["centerY"] = chart.StatList.Average(x => x.BaiduLattitute);
            return(View(field));
        }
Пример #14
0
 public JsonResult GetCoveragePoints(string fieldName,
     StatValueFieldRepository repository, CoverageStatChart chart)
 {
     StatValueField field = repository.GenerateDefaultField(fieldName);
     return Json(chart.StatList.Select(x => new
     {
         X = x.Longtitute + GeoMath.BaiduLongtituteOffset,
         Y = x.Lattitute + GeoMath.BaiduLattituteOffset,
         C = field.GetColor(fieldName == "信号RSRP" ? x.Rsrp : x.Sinr, "FFFFFF")
     }), JsonRequestBehavior.AllowGet);
 }
Пример #15
0
 public ActionResult ExportPoints(string fieldName, StatValueFieldRepository repository,
     CoverageStatChart chart)
 {
     if (chart.StatList.Count == 0)
     {
         TempData["warning"] = "覆盖数据为空,请先导入数据分析。";
         return RedirectToAction("CoverageImport");
     }
     StatValueField field = repository.GenerateDefaultField(fieldName);
     TempData["centerX"] = chart.StatList.Average(x=>x.BaiduLongtitute);
     TempData["centerY"] = chart.StatList.Average(x=>x.BaiduLattitute);
     return View(field);
 }
Пример #16
0
 public JsonResult CoverageIntervalPercentage(string fieldName, CoverageStatChart chart)
 {
     StatValueField field = new StatValueField { FieldName = fieldName };
     field.AutoGenerateIntervals(8);
     IEnumerable<double> values = (fieldName == "信号RSRP") ?
         chart.StatList.Select(x => x.Rsrp) : chart.StatList.Select(x => x.Sinr);
     Dictionary<string, double> result = field.GetPercentageStat(values);
     return Json(result.Select(x => new { N = x.Key, V = 100 * x.Value }), JsonRequestBehavior.AllowGet);
 }