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); }
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); }
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); }
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)); }
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")); }
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"); }
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)); }
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)); }
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; }
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); }
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)); }
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); }
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); }
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); }