예제 #1
0
        /// <summary>
        /// 刷新地图
        /// </summary>
        /// <param name="mapId">地图编号</param>
        /// <returns></returns>
        public bool RefreshMap(string mapId, string user)
        {
            var query = from a in _IMapReleationRepository.GetAll()
                        join b in _ILayerContentRepository.GetAll() on a.DataConfigID equals b.Id
                        join c in _IMapRepository.GetAll() on a.MapID equals c.Id
                        where a.MapID == mapId
                        orderby a.DataSort
                        select new
            {
                a.Id,
                b.LayerAttrTable,
                c.MapEnName
            };

            var query2 = from a in _IMapReleationRepository.GetAll()
                         join b in _IDataStyleRepository.GetAll() on a.DataStyleID equals b.Id
                         select new
            {
                a.Id,
                b.StyleName
            };
            var           list         = query2.ToList();
            List <string> targetLayers = new List <string>();
            List <string> styleLayers  = new List <string>();
            string        mapName      = string.Empty;

            foreach (var item in query)
            {
                targetLayers.Add(item.LayerAttrTable);
                var style = list.Find(t => t.Id == item.Id);
                if (style != null)
                {
                    styleLayers.Add(style.StyleName);
                }
                else
                {
                    styleLayers.Add(string.Empty);
                }
                mapName = item.MapEnName;
            }

            var             map     = _IMapRepository.Get(mapId);
            GeoServerHelper geoHelp = new GeoServerHelper();

            geoHelp.AddLayerGroup(mapName, targetLayers, styleLayers);
            geoHelp.TerminatingTask(mapName);
            geoHelp.TileMap(map.MapEnName);

            #region [生成缩略图]

            string strBBox = map.MinX.ToString() + "," + map.MinY.ToString() + "," + map.MaxX.ToString() + "," + map.MaxY.ToString();
            GetThumbnial(map.MapEnName, strBBox);

            #endregion

            _IOperateLogAppService.WriteOperateLog(mapId, user, 1002, 1106, 1201, 1451, null);
            return(true);
        }
예제 #2
0
        public async Task <bool> UpdateMapBBox(string mapID)
        {
            try
            {
                var list = _IMapReleationRepository.GetAll().Where(q => q.MapID == mapID).ToList();
                var map  = _IMapRepository.Get(mapID);
                if (map != null && list != null && list.Count > 0)
                {
                    Dictionary <string, decimal?> bbox = new Dictionary <string, decimal?>();
                    for (int i = 0; i < list.Count; i++)
                    {
                        var layer = _ILayerContentRepository.Get(list[i].DataConfigID);

                        if (i == 0)
                        {
                            bbox.Add("MaxX", layer.MaxX);
                            bbox.Add("MinX", layer.MinX);
                            bbox.Add("MaxY", layer.MaxY);
                            bbox.Add("MinY", layer.MinY);
                        }
                        else
                        {
                            if (layer.MaxX > bbox["MaxX"])
                            {
                                bbox["MaxX"] = layer.MaxX;
                            }
                            if (layer.MaxY > bbox["MaxY"])
                            {
                                bbox["MaxY"] = layer.MaxY;
                            }
                            if (layer.MinX < bbox["MinX"])
                            {
                                bbox["MinX"] = layer.MinX;
                            }
                            if (layer.MinY < bbox["MinY"])
                            {
                                bbox["MinY"] = layer.MinY;
                            }
                        }
                    }
                    map.MaxX = bbox["MaxX"];
                    map.MinX = bbox["MinX"];
                    map.MaxY = bbox["MaxY"];
                    map.MinY = bbox["MinY"];

                    await _IMapRepository.UpdateAsync(map);


                    GeoServerHelper geoHelp     = new GeoServerHelper();
                    string          isAutoCache = ConfigurationManager.AppSettings.Get("IsAutoCache");
                    if (!string.IsNullOrEmpty(isAutoCache) && isAutoCache == "1")
                    {
                        geoHelp.TerminatingTask(map.MapEnName);
                        geoHelp.TileMap(map.MapEnName);
                    }

                    string strBBox = map.MinX.ToString() + "," + map.MinY.ToString() + "," + map.MaxX.ToString() + "," + map.MaxY.ToString();
                    #region [生成缩略图]

                    ThumbnailHelper tbh       = new ThumbnailHelper();
                    string          imagePath = tbh.CreateThumbnail(map.MapEnName, "map", strBBox);

                    if (string.IsNullOrEmpty(imagePath))
                    {
                        return(false);
                    }
                    else
                    {
                        return(true);
                    }

                    #endregion
                }
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }