예제 #1
0
        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);
        }
예제 #2
0
 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;
         }
     }
 }
예제 #3
0
        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());
        }
예제 #4
0
        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());
        }
예제 #5
0
 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();
 }