public IEnumerable <AreaTestInfo> QueryAreaTestInfos(int fileId) { var townIds = _boundaryRepository.GetAllList(x => x.AreaName == null).Select(x => x.TownId).Distinct().ToList(); return(from info in _areaTestInfoRepository.GetAllList(x => x.FileId == fileId) join id in townIds on info.TownId equals id select info); }
protected void UpdateTownRecords <TRecord>(List <int> townIds, int fileId, IEnumerable <TRecord> data, List <AreaTestInfo> results) where TRecord : IGeoPoint <double?>, ICoverage { foreach (var record in data) { if (record.Longtitute == null || record.Lattitute == null) { continue; } var point = new GeoPoint(record.Longtitute ?? 0, record.Lattitute ?? 0); foreach (var townId in townIds) { var coors = _boundaryRepository.GetAllList(x => x.TownId == townId); if (coors == null) { continue; } if (!coors.IsInTownRange(point)) { continue; } UpdateCurrentTownId(results, townId, point, fileId, record.IsCoverage()); break; } } }
public IEnumerable <TownBoundaryView> GetTownBoundaryViews(string city, string district, string town) { var item = _repository.GetAllList() .FirstOrDefault(x => x.CityName == city && x.DistrictName == district && x.TownName == town); if (item == null) { return(new List <TownBoundaryView>()); } var coors = _boundaryRepository.GetAllList(x => x.TownId == item.Id); return(coors.Select(coor => new TownBoundaryView { Town = town, BoundaryGeoPoints = coor.CoorList() }).ToList()); }
public List <List <GeoPoint> > QueryTownBoundaries(string district, string town) { var townItem = _townRepository.QueryTown(district, town); if (townItem == null) { return(null); } return(_boundaryRepository.GetAllList(x => x.TownId == townItem.Id).Select(x => x.CoorList()).ToList()); }
private List<TownRectangle> GenerateRectangle(List<int> townIds) { return (from townId in townIds let coors = _boundaryRepository.GetAllList(x => x.TownId == townId) where coors.Any() let west = coors.Select(coor => coor.CoorList().Min(x => x.Longtitute)).Min() let east = coors.Select(coor => coor.CoorList().Max(x => x.Longtitute)).Max() let south = coors.Select(coor => coor.CoorList().Min(x => x.Lattitute)).Min() let north = coors.Select(coor => coor.CoorList().Max(x => x.Lattitute)).Max() select new TownRectangle { TownId = townId, West = west, East = east, South = south, North = north, Coors = coors }).ToList(); }