Example #1
0
 private static void RecursiveAddAndVisualizePipeData(TreeList parentTree, List <LogicGroup> list, Dictionary <string, IFeatureClass> dicfc, IMapControl2 mapControl, IMap pMap)
 {
     if (parentTree == null || list == null)
     {
         return;
     }
     foreach (LogicGroup lg in list)
     {
         TreeNodeLogicGroup2D tnlg = new TreeNodeLogicGroup2D()
         {
             Name = string.IsNullOrEmpty(lg.Alias) ? lg.Name : lg.Alias
         };
         tnlg.OwnNode = parentTree.AppendNode(new object[] { tnlg.Name }, (TreeListNode)null);
         tnlg.Visible = true;
         RecursiveAddAndVisualizePipeData(tnlg.OwnNode.TreeList, lg.LogicGroups, dicfc, mapControl, pMap);
         foreach (MajorClass mc in lg.MajorClasses)
         {
             Dictionary <string, DF2DFeatureClass> dict   = new Dictionary <string, DF2DFeatureClass>(); //subclass所对应的<要素类ID,类>字典
             Dictionary <string, IFeatureLayer>    dicFLs = new Dictionary <string, IFeatureLayer>();    //subclass所对应的<要素类ID,图层>字典
             TreeNodeMajorClass2D tnmc = new TreeNodeMajorClass2D()
             {
                 Name = string.IsNullOrEmpty(mc.Alias) ? mc.Name : mc.Alias
             };
             tnmc.Visible     = true;
             tnmc.CustomValue = mc;
             tnlg.Add(tnmc);
             SetFeatureClassForGroup(mc, tnmc, dicfc, dict);
             VisualMapLayer(pMap, mapControl, dict, dicFLs);
             SetSubClass(mc, tnmc, dict, dicFLs);
             //AddSubClass(mc, tnlg, fcs, dict, dicFLs);
         }
         tnlg.CollapseAll();
     }
 }
Example #2
0
 private void LayerCheckOnOffControl(IBaseLayer layer)
 {
     if (layer is TreeNodeComLayer)
     {
         TreeNodeComLayer node = layer as TreeNodeComLayer;
         node.CheckOn = node.Visible;
         List <IBaseLayer> childNodes = node.SelectAllSubLayers();
         if (childNodes.Count > 0)
         {
             foreach (IBaseLayer cn in childNodes)
             {
                 LayerCheckOnOffControl(cn);
             }
         }
     }
     else if (layer is TreeNodeLogicGroup2D)
     {
         TreeNodeLogicGroup2D lg     = layer as TreeNodeLogicGroup2D;
         List <IBaseLayer>    listBL = lg.SelectAllSubLayers();
         if (listBL.Count > 0)
         {
             foreach (IBaseLayer bl in listBL)
             {
                 LayerCheckOnOffControl(bl);
             }
         }
     }
     else if (layer is TreeNodeMajorClass2D)
     {
         TreeNodeMajorClass2D node = layer as TreeNodeMajorClass2D;
         node.CheckOn = node.Visible;
         List <IBaseLayer> childNodes = node.SelectAllSubLayers();
         if (childNodes.Count > 0)
         {
             foreach (IBaseLayer cn in childNodes)
             {
                 LayerCheckOnOffControl(cn);
             }
         }
     }
     else if (layer is TreeNodeSubClass2D)
     {
         TreeNodeSubClass2D node = layer as TreeNodeSubClass2D;
         node.CheckOn = node.Visible;
     }
 }
Example #3
0
        public override void OnExtentUpdated(object displayTransformation, bool sizeChanged, object newEnvelope)
        {
            DF2DApplication app = DF2DApplication.Application;

            if (app == null)
            {
                return;
            }
            double sMapScale = app.Current2DMapControl.MapScale;
            //List<TreeNodeComLayer> listTreeLayer = DF2DFeatureClassManager.Instance.GetAllTreeLayer();
            List <DF2DFeatureClass> listFC     = DF2DFeatureClassManager.Instance.GetAllFeatureClass();
            List <DF2DRaster>       listRaster = DF2DRasterManager.Instance.GetAllRaster();

            #region  树控件栅格节点显示控制

            foreach (DF2DRaster dfrd in listRaster)
            {
                IRasterLayer     rl        = dfrd.GetRasterLayer();
                TreeNodeComLayer treeLayer = dfrd.GetTreeLayer();
                if (treeLayer == null)
                {
                    continue;
                }
                if (rl == null)
                {
                    continue;
                }
                if (!treeLayer.CheckOn)
                {
                    continue;
                }
                if (rl.MinimumScale != 0)
                {
                    if (sMapScale >= rl.MinimumScale)
                    {
                        treeLayer.Visible = false;
                    }
                    else
                    {
                        treeLayer.Visible = true;
                    }
                }
                else if (rl.MaximumScale != 0)
                {
                    if (sMapScale <= rl.MaximumScale)
                    {
                        treeLayer.Visible = false;
                    }
                    else
                    {
                        treeLayer.Visible = true;
                    }
                }
                else
                {
                    treeLayer.Visible = true;
                }
            }
            #endregion
            foreach (DF2DFeatureClass dffc in listFC)
            {
                #region   控制树控件管线部分二级分类显示
                string faccName = dffc.GetFacilityClassName();
                if (faccName == "PipeLine")
                {
                    string         id   = dffc.GetFeatureClass().FeatureClassID.ToString();
                    DF2DMajorClass dfmc = DF2DMajorClassManager.Instance.GetDFMCByFeatureClassID(id);
                    if (dfmc != null)
                    {
                        ILayer lyr = dffc.GetLayer();
                        if (lyr != null)
                        {
                            TreeNodeMajorClass2D tnmc = dfmc.GetTNByFeatureClassID(id);
                            if (!tnmc.CheckOn)
                            {
                                continue;
                            }
                            if (tnmc != null)
                            {
                                if (lyr.MinimumScale != 0)
                                {
                                    if (sMapScale >= lyr.MinimumScale)
                                    {
                                        tnmc.Visible = false;
                                    }
                                    else
                                    {
                                        tnmc.Visible = true;
                                    }
                                }
                                else if (lyr.MaximumScale != 0)
                                {
                                    if (sMapScale <= lyr.MaximumScale)
                                    {
                                        tnmc.Visible = false;
                                    }
                                    else
                                    {
                                        tnmc.Visible = true;
                                    }
                                }
                                else
                                {
                                    tnmc.Visible = true;
                                }
                            }
                        }
                    }
                }

                #endregion

                #region  控制图层树背景图部分显示


                IFeatureLayer    fl        = dffc.GetFeatureLayer();
                TreeNodeComLayer treeLayer = dffc.GetTreeLayer();
                if (treeLayer == null)
                {
                    continue;
                }
                if (fl == null)
                {
                    continue;
                }
                if (!treeLayer.CheckOn)
                {
                    continue;
                }
                if (fl.MinimumScale != 0)
                {
                    if (sMapScale >= fl.MinimumScale)
                    {
                        treeLayer.Visible = false;
                    }
                    else
                    {
                        treeLayer.Visible = true;
                    }
                }
                else if (fl.MaximumScale != 0)
                {
                    if (sMapScale <= fl.MaximumScale)
                    {
                        treeLayer.Visible = false;
                    }
                    else
                    {
                        treeLayer.Visible = true;
                    }
                }
                else
                {
                    treeLayer.Visible = true;
                }
                #endregion
            }
        }
Example #4
0
 public DF2DMajorClass(MajorClass mj, TreeNodeMajorClass2D treeLayer)
 {
     this.treeLayer  = treeLayer;
     this.majorClass = mj;
     listLayer       = new List <ILayer>();
 }
Example #5
0
        public static void AddAndVisualizeTreelistPipe(TreeList parentTree, IMapControl2 mapControl)
        {
            try
            {
                if (parentTree == null)
                {
                    return;
                }
                IMapDocument pMapDoc   = new MapDocument();
                string       pFileName = Config.GetConfigValue("2DMxdPipe");
                if (string.IsNullOrEmpty(pFileName) || !File.Exists(pFileName))
                {
                    return;
                }
                SplashScreenManager.Default.SendCommand(null, "正在加载二维管线数据......");
                pMapDoc.Open(pFileName, null);
                IMap pMap = pMapDoc.get_Map(0);
                Dictionary <string, IFeatureClass> dicfc = new Dictionary <string, IFeatureClass>(); //初始化要<素类ID,要素类>字典
                for (int i = 0; i < pMap.LayerCount; i++)                                            //对地图图层进行遍历
                {
                    ILayer layer = pMap.get_Layer(i);
                    ReadMapLayer(layer, dicfc);//读取该图层,并更新字典
                }
                if (dicfc == null || dicfc.Count == 0)
                {
                    return;
                }
                foreach (LogicGroup lg in LogicDataStructureManage2D.Instance.RootLogicGroups)
                {
                    TreeNodeLogicGroup2D tnlg = new TreeNodeLogicGroup2D()//创建逻辑分组根节点
                    {
                        Name = string.IsNullOrEmpty(lg.Alias) ? lg.Name : lg.Alias
                    };
                    tnlg.OwnNode = parentTree.AppendNode(new object[] { tnlg.Name }, (TreeListNode)null);
                    tnlg.Visible = true;
                    RecursiveAddAndVisualizePipeData(tnlg.OwnNode.TreeList, lg.LogicGroups, dicfc, mapControl, pMap);
                    foreach (MajorClass mc in lg.MajorClasses)                                                      //遍历当前逻辑分组的二级大类
                    {
                        Dictionary <string, DF2DFeatureClass> dict   = new Dictionary <string, DF2DFeatureClass>(); //MajorClass所对应的<要素类ID,类>字典
                        Dictionary <string, IFeatureLayer>    dicFLs = new Dictionary <string, IFeatureLayer>();    //MajorClass所对应的<要素类ID,图层>字典
                        TreeNodeMajorClass2D tnmc = new TreeNodeMajorClass2D()
                        {
                            Name = string.IsNullOrEmpty(mc.Alias) ? mc.Name : mc.Alias
                        };
                        tnmc.Visible     = true;
                        tnmc.CustomValue = mc;
                        tnlg.Add(tnmc);
                        SetFeatureClassForGroup(mc, tnmc, dicfc, dict); //设置MajorClass所对应的要素类
                        VisualMapLayer(pMap, mapControl, dict, dicFLs); //为地图控件加载相关的图层
                        SetSubClass(mc, tnmc, dict, dicFLs);            //设置subclass包含的相关参数的值
                        //AddSubClass(mc, tnmc, dicfc,dict,dicFLs);

                        DF2DMajorClass dfmc = new DF2DMajorClass(mc, tnmc);//应用于管线显示控制
                        DF2DMajorClassManager.Instance.Add(dfmc);
                    }
                    tnlg.CollapseAll();
                }
            }
            catch (System.Exception ex)
            {
                return;
            }
        }