public int UpdateMobileAgisPoint(AgpsCoverageView view, string district, string town) { var date = view.StatDate.Date; var point = _agisDtPointRepository.FirstOrDefault( x => x.StatDate == date && x.X == view.X && x.Y == view.Y && x.Operator == district + town); if (point == null) { point = new AgisDtPoint { X = view.X, Y = view.Y, Longtitute = view.Longtitute, Lattitute = view.Lattitute, StatDate = date, MobileRsrp = view.AverageRsrp, MobileRate100 = view.CoverageRate100, MobileRate105 = view.CoverageRate105, MobileRate110 = view.CoverageRate110, Operator = district + town }; _agisDtPointRepository.Insert(point); } else { point.MobileRsrp = view.AverageRsrp; point.MobileRate100 = view.CoverageRate100; point.MobileRate105 = view.CoverageRate105; point.MobileRate110 = view.CoverageRate110; } return(_agisDtPointRepository.SaveChanges()); }
public void Test_RectanglePoints() { using (var reader = new StreamReader(_resultFileName)) { using (var writer = new StreamWriter(_lastFileName)) { string line; while (!string.IsNullOrEmpty(line = reader.ReadLine())) { var fields = line.Split(','); var dtPoint = new AgisDtPoint { Operator = "小范围", Longtitute = fields[1].ConvertToDouble(0), Lattitute = fields[2].ConvertToDouble(0), UnicomRsrp = fields[3].ConvertToInt(-140), MobileRsrp = fields[4].ConvertToInt(-140), TelecomRsrp = fields[5].ConvertToInt(-140) }; if (dtPoint.Longtitute > 113.08 && dtPoint.Longtitute < 113.11 && dtPoint.Lattitute > 23 && dtPoint.Lattitute < 23.02) { writer.WriteLine(dtPoint.Operator + "," + dtPoint.Longtitute + "," + dtPoint.Lattitute + "," + dtPoint.UnicomRsrp + "," + dtPoint.MobileRsrp + "," + dtPoint.TelecomRsrp); } } } } }
public void Test_ProcessPoints() { var points = new List <GeoPoint>(); using (var reader = new StreamReader(_mergeFileName)) { string line; while (!string.IsNullOrEmpty(line = reader.ReadLine())) { var fields = line.Split(','); var longtitute = fields[0].ConvertToDouble(0); var lattitute = fields[1].ConvertToDouble(0); points.Add(new GeoPoint(longtitute, lattitute)); } } var dtPoints = new List <AgisDtPoint>(); using (var reader = new StreamReader(_resultFileName)) { string line; while (!string.IsNullOrEmpty(line = reader.ReadLine())) { var fields = line.Split(','); var dtPoint = new AgisDtPoint { Operator = fields[0], Longtitute = fields[1].ConvertToDouble(0), Lattitute = fields[2].ConvertToDouble(0), UnicomRsrp = fields[3].ConvertToInt(-140), MobileRsrp = fields[4].ConvertToInt(-140), TelecomRsrp = fields[5].ConvertToInt(-140) }; dtPoints.Add(dtPoint); } } using (var writer = new StreamWriter(_lastFileName)) { foreach (var point in points) { var mergePoints = dtPoints.Where( x => x.Longtitute > point.Longtitute - 0.0002 && x.Longtitute <point.Longtitute + 0.0002 && x.Lattitute> point.Lattitute - 0.0002 && x.Lattitute < point.Lattitute + 0.0002); if (mergePoints.Any()) { writer.WriteLine(mergePoints.First().Operator + "," + point.Longtitute + "," + point.Lattitute + "," + mergePoints.Average(x => x.UnicomRsrp) + "," + mergePoints.Average(x => x.MobileRsrp) + "," + mergePoints.Average(x => x.TelecomRsrp)); } } } }
public IEnumerable <AgisDtPoint> QueryAgisDtPoints(DateTime begin, DateTime end) { var points = _agisRepository.GetAllList(x => x.StatDate > begin && x.StatDate <= end); if (!points.Any()) { return(new List <AgisDtPoint>()); } return(points.GroupBy(x => new { x.X, x.Y }).Select(g => { var telecomGroups = g.Where(x => x.TelecomRsrp > 0).ToList(); var mobileGroups = g.Where(x => x.MobileRsrp > 0).ToList(); var unicomGroups = g.Where(x => x.UnicomRsrp > 0).ToList(); var stat = new AgisDtPoint { X = g.Key.X, Y = g.Key.Y, Longtitute = g.First().Longtitute, Lattitute = g.First().Lattitute, StatDate = g.First().StatDate }; if (telecomGroups.Any()) { stat.TelecomRsrp = telecomGroups.Average(x => x.TelecomRsrp); stat.TelecomRate100 = telecomGroups.Average(x => x.TelecomRate100); stat.TelecomRate105 = telecomGroups.Average(x => x.TelecomRate105); stat.TelecomRate110 = telecomGroups.Average(x => x.TelecomRate110); } if (mobileGroups.Any()) { stat.MobileRsrp = mobileGroups.Average(x => x.MobileRsrp); stat.MobileRate100 = mobileGroups.Average(x => x.MobileRate100); stat.MobileRate105 = mobileGroups.Average(x => x.MobileRate105); stat.MobileRate110 = mobileGroups.Average(x => x.MobileRate110); } if (unicomGroups.Any()) { stat.UnicomRsrp = unicomGroups.Average(x => x.UnicomRsrp); stat.UnicomRate100 = unicomGroups.Average(x => x.UnicomRate100); stat.UnicomRate105 = unicomGroups.Average(x => x.UnicomRate105); stat.UnicomRate110 = unicomGroups.Average(x => x.UnicomRate110); } return stat; })); }