Example #1
0
        //通过intersect关系进行裁切
        public void ClipByExtent(int groupNm, int extNum)
        {
            IGeometry       extent   = GetClipExtent(extNum);
            string          findName = "grp" + groupNm.ToString() + "ext0";
            IGroupLayer     grpLy    = avlbLayers.Find(item => item.Name == findName);
            ICompositeLayer comLy    = grpLy as ICompositeLayer;

            IGroupLayer newGroupLayer = new GroupLayerClass();

            newGroupLayer.Name = "grp" + groupNm.ToString() + "ext" + extNum.ToString();

            for (int i = 0; i < comLy.Count; i++)
            {
                IFeatureLayer feaLy  = comLy.get_Layer(i) as IFeatureLayer;
                IFeatureClass clipFC = feaLy.FeatureClass;
                IFields       flds   = clipFC.Fields;

                ISpatialFilter spatialFilter = new SpatialFilterClass();
                spatialFilter.Geometry   = extent;
                spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
                IFeatureCursor cursor = clipFC.Search(spatialFilter, false);

                IWorkspaceFactory workspaceFactory = new InMemoryWorkspaceFactoryClass();
                IWorkspaceName    workspaceName    = workspaceFactory.Create(null, "MyWorkspace", null, 0);
                IName             name             = (IName)workspaceName;
                IWorkspace        workspace        = (IWorkspace)name.Open();
                IFeatureWorkspace inmemFeaWksp     = workspace as IFeatureWorkspace;

                if (clipFC.ShapeType == esriGeometryType.esriGeometryPoint)
                {
                    IFeatureClass inmemPTFC = CreateWithoutDescription("inmemPTFC_" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemPTFC, cursor, extent);

                    IFeatureLayer inmemPTFCLayer = new FeatureLayerClass();
                    inmemPTFCLayer.FeatureClass = inmemPTFC;
                    newGroupLayer.Add(inmemPTFCLayer);
                }

                else if (clipFC.ShapeType == esriGeometryType.esriGeometryPolyline)
                {
                    IFeatureClass inmemLNFC = CreateWithoutDescription("inmemLNFC" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemLNFC, cursor, extent);

                    IFeatureLayer inmemLNFCLayer = new FeatureLayerClass();
                    inmemLNFCLayer.FeatureClass = inmemLNFC;
                    newGroupLayer.Add(inmemLNFCLayer);
                }

                else if (clipFC.ShapeType == esriGeometryType.esriGeometryPolygon)
                {
                    IFeatureClass inmemPLGFC = CreateWithoutDescription("inmemPLGFC" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemPLGFC, cursor, extent);

                    IFeatureLayer inmemPLGFCLayer = new FeatureLayerClass();
                    inmemPLGFCLayer.FeatureClass = inmemPLGFC;
                    newGroupLayer.Add(inmemPLGFCLayer);
                }
            }
            avlbLayers.Add(newGroupLayer);
        }
Example #2
0
        //读取原始数据并添加到grouplayer列表中
        public void LoadOriginData(string path, int groupNumber)
        {
            IWorkspaceFactory shpFactory = new ShapefileWorkspaceFactoryClass();
            IFeatureWorkspace shpFeaWksp = shpFactory.OpenFromFile(path, 0) as IFeatureWorkspace;
            IFeatureClass     fcPoint    = shpFeaWksp.OpenFeatureClass(pointFile);
            IFeatureClass     fcLine     = shpFeaWksp.OpenFeatureClass(lineFile);
            IFeatureClass     fcPlygon   = shpFeaWksp.OpenFeatureClass(polygonFile);

            IFeatureLayer lyPoint = new FeatureLayerClass();

            lyPoint.FeatureClass = fcPoint;
            IFeatureLayer lyLine = new FeatureLayerClass();

            lyLine.FeatureClass = fcLine;
            IFeatureLayer lyPlygon = new FeatureLayerClass();

            lyPlygon.FeatureClass = fcPlygon;

            IGroupLayer grpLayer = new GroupLayerClass();

            grpLayer.Name = "grp" + groupNumber.ToString() + "ext0";
            grpLayer.Add(lyPoint);
            grpLayer.Add(lyLine);
            grpLayer.Add(lyPlygon);

            avlbLayers.Add(grpLayer);
        }
Example #3
0
        /// <summary>
        /// 打开指定的CAD图层,包括点point,线polyline,多点mutilpoint,多段mutilpatch与注记(如果是注记,需要建立CadAnnotationLayerClass实例对象),添加的是空间数据对象(添加到同一个图层组中,图层组名为文件名无后缀)
        /// </summary>
        /// <param name="mapControlDefault">地图控件</param>
        /// <param name="pWorkspace">工作空间</param>
        /// <param name="strFileName">文件名,没有会追</param>
        public static void GetALLCADLayerFromGeo(IMapControlDefault mapControlDefault, IWorkspace pWorkspace, string strFileName)
        {
            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
            //组图层
            IGroupLayer pGroupLayer = new GroupLayerClass();

            pGroupLayer.Name = strFileName.Substring(0, strFileName.LastIndexOf("."));

            //打开指定的的cad图层--Point
            IFeatureClass pFeatureClass_Point = pFeatureWorkspace.OpenFeatureClass(strFileName + ":point");

            if (pFeatureClass_Point != null)
            {
                IFeatureLayer pFeatureLayer_Point = new CadFeatureLayerClass();
                pFeatureLayer_Point.FeatureClass = pFeatureClass_Point;
                pFeatureLayer_Point.Name         = pFeatureClass_Point.AliasName;
                pGroupLayer.Add(pFeatureLayer_Point);
            }
            //Polyline
            string        strPlineName        = System.String.Concat(strFileName, ":Polyline");
            IFeatureClass pFeatClass_Polyline = pFeatureWorkspace.OpenFeatureClass(strPlineName);

            if (pFeatClass_Polyline != null)
            {
                IFeatureLayer pFeatureLayer_Polyline = new CadFeatureLayerClass();
                pFeatureLayer_Polyline.FeatureClass = pFeatClass_Polyline;
                pFeatureLayer_Polyline.Name         = pFeatClass_Polyline.AliasName;
                pGroupLayer.Add(pFeatureLayer_Polyline);
                pGroupLayer.Add(pFeatureLayer_Polyline);
            }

            mapControlDefault.AddLayer(pGroupLayer as ILayer, 0);
        }
Example #4
0
        /// <summary>
        /// 加载栅格库体
        /// </summary>
        /// <param name="m_Hook">主程序hook</param>
        /// <param name="DbEleInfo">矢量库体对应的库体信息XmlElement</param>
        /// <param name="ex">输出错误信息</param>
        public static void AddRasterLayer(Plugin.Application.IAppDBIntegraRef m_Hook, XmlElement DbEleInfo, out Exception ex)
        {
            ex = null;
            try
            {
                IGroupLayer pGroupLayer = new GroupLayerClass();
                pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + m_Hook.ProjectTree.SelectedNode.Text;
                // string rasterDBType = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).GetAttribute("存储类型");
                // string rasterDBType = DbEleInfo.GetAttribute("存储类型");
                string     rasterDBType = string.Empty;
                XmlElement RasterEle    = DbEleInfo.SelectSingleNode(".//栅格数据库") as XmlElement;
                rasterDBType = RasterEle.GetAttribute("存储类型").Trim();
                XmlElement elementTemp   = DbEleInfo.SelectSingleNode(".//栅格数据库/连接信息") as XmlElement;
                IWorkspace TempWorkSpace = ModDBOperate.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace;
                if (TempWorkSpace == null)
                {
                    // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!");
                    ex = new Exception("连接数据库失发生异常");
                    return;
                }
                IRasterWorkspaceEx pRasterWS = TempWorkSpace as IRasterWorkspaceEx;
                if (pRasterWS == null)
                {
                    return;
                }
                string feaclsName = (elementTemp.FirstChild as XmlElement).GetAttribute("名称");
                if (rasterDBType.Trim() == "栅格编目")
                {
                    //栅格编目数据加载
                    IRasterCatalog         pRasterCatalog = pRasterWS.OpenRasterCatalog(feaclsName);
                    IGdbRasterCatalogLayer pGDBRCLayer    = new GdbRasterCatalogLayerClass();
                    if (!pGDBRCLayer.Setup(pRasterCatalog as ITable))
                    {
                        return;
                    }
                    IFeatureLayer mFeaLayer = pGDBRCLayer as IFeatureLayer;
                    pGroupLayer.Add(mFeaLayer as ILayer);
                }
                else if (rasterDBType.Trim() == "栅格数据集")
                {
                    //栅格数据集加载

                    IRasterDataset pRasterDataset = pRasterWS.OpenRasterDataset(feaclsName);
                    IRasterLayer   pRasterLayer   = new RasterLayerClass();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    if (pRasterLayer == null)
                    {
                        return;
                    }
                    pGroupLayer.Add(pRasterLayer as ILayer);
                }
                m_Hook.MapControl.Map.AddLayer(pGroupLayer);
            }
            catch (Exception eError)
            {
                ex = eError;
                return;
            }
        }
 private void btnCollectCAD_Click(object sender, EventArgs e)
 {
     if (this.textboxCAD.Text == "")
     {
         return;
     }
     try
     {
         //获取文件名和文件路径
         int    pIndex    = this.textboxCAD.Text.LastIndexOf("\\");
         string pFilePath = this.textboxCAD.Text.Substring(0, pIndex);
         string pFileName = this.textboxCAD.Text.Substring(pIndex + 1);
         //打开CAD数据集
         IWorkspaceFactory pWorkspaceFactory;
         IFeatureWorkspace pFeatureWorkspace;
         IFeatureLayer     pFeatureLayer;
         IFeatureDataset   pFeatureDataset;
         pWorkspaceFactory = new CadWorkspaceFactoryClass(); //using ESRI.ArcGIS.DataSourcesFile;
         pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0);
         //打开一个要素集
         pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pFileName);
         //IFeatureClassContainer可以管理IFeatureDataset中的每个要素类
         IFeatureClassContainer pFeatClassContainer = (IFeatureClassContainer)pFeatureDataset;
         IGroupLayer            pGroupLayer         = new GroupLayerClass();
         pGroupLayer.Name = pFileName;
         //对CAD文件中的要素进行遍历处理
         for (int i = 0; i < pFeatClassContainer.ClassCount; i++)
         {
             IFeatureClass pFeatClass = pFeatClassContainer.get_Class(i);
             //如果是注记,则添加注记层
             if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)
             {
                 pFeatureLayer              = new CadAnnotationLayerClass();
                 pFeatureLayer.Name         = pFeatClass.AliasName;
                 pFeatureLayer.FeatureClass = pFeatClass;
                 pGroupLayer.Add(pFeatureLayer);
                 //this.pMapControl.Map.AddLayer(pFeatureLayer);
             }
             else //如果是点、线、面则添加要素层
             {
                 pFeatureLayer              = new FeatureLayerClass();
                 pFeatureLayer.Name         = pFeatClass.AliasName;
                 pFeatureLayer.FeatureClass = pFeatClass;
                 pGroupLayer.Add(pFeatureLayer);
                 //this.pMapControl.Map.AddLayer(pFeatureLayer);
             }
         }
         this.pMapControl.Map.AddLayer(pGroupLayer);
         this.pMapControl.ActiveView.Refresh();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Example #6
0
        /// <summary>
        /// 加载.shp文件
        /// </summary>
        /// <param name="fileName"></param>
        private void OpenShpFile(string fileName)
        {
            try
            {
                string            path              = fileName;
                string            pFolder           = System.IO.Path.GetDirectoryName(path);
                string            pFileName         = System.IO.Path.GetFileName(path);
                IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
                IWorkspace        pWorkspace        = pWorkspaceFactory.OpenFromFile(pFolder, 0);
                IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
                IFeatureClass     featureClass      = pFeatureWorkspace.OpenFeatureClass(pFileName);
                //创建layer并把上一步生成的featureClass赋值给featureLayer
                IFeatureLayer featureLayer = new FeatureLayerClass();
                featureLayer.FeatureClass = featureClass;
                featureLayer.Name         = featureClass.AliasName;
                IGroupLayer groupLayer = new GroupLayerClass();
                groupLayer.Name = "add" + pFileName;
                groupLayer.Add(featureLayer);

                axGlobeControl.Globe.AddLayerType(groupLayer as ILayer, esriGlobeLayerType.esriGlobeLayerTypeElevation, true);
            }
            catch (Exception)
            {
            }
        }
Example #7
0
        public static void AddIdahoWms(string idahoId, string groupLayerName, string token)
        {
            IGroupLayer groupLayer = new GroupLayerClass();

            groupLayer.Name = groupLayerName;

            var wmsMapLayer = new WMSMapLayerClass();

            // create and configure wms connection name, this is used to store the connection properties
            IWMSConnectionName pConnName = new WMSConnectionNameClass();
            IPropertySet       propSet   = new PropertySetClass();

            // create the idaho wms url
            var idahoUrl = string.Format(
                "http://idaho.geobigdata.io/v1/wms/idaho-images/{0}/{1}/mapserv?",
                idahoId, token);

            // setup the arcmap connection properties
            propSet.SetProperty("URL", idahoUrl);
            pConnName.ConnectionProperties = propSet;

            //uses the name information to connect to the service
            IDataLayer dataLayer = wmsMapLayer;

            try
            {
                dataLayer.Connect((IName)pConnName);
            }
            catch (Exception e)
            {
                Jarvis.Logger.Error("Problems connecting to WMS: " + e.Message);
            }

            // get wms service description
            var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription;

            ILayer wmsLayer = null;

            // add layers for the wms currently there will only be one.
            for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++)
            {
                var layerDesc = serviceDesc.LayerDescription[i];

                var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc);
                for (var j = 0; j <= grpLayer.Count - 1; j++)
                {
                    wmsLayer         = wmsMapLayer;
                    wmsMapLayer.Name = idahoId;
                }
            }

            // turn on sub layers, add it to arcmap and move it to top of TOC
//            SublayerVisibleOn(wmsLayer);
            groupLayer.Add(wmsLayer);

            // turn on sub layers, add it to arcmap and move it to top of TOC
            ArcMap.Document.AddLayer(groupLayer);
            ArcMap.Document.FocusMap.MoveLayer(groupLayer, 0);
        }
Example #8
0
 private static ILayer BuildLayerGroup(IEnumerable<ILayer> layers)
 {
     var layerGroup = new GroupLayerClass();
     foreach (var layer in layers)
     {
         layerGroup.Add(layer);
     }
     return layerGroup;
 }
Example #9
0
        private static ILayer BuildLayerGroup(IEnumerable <ILayer> layers)
        {
            var layerGroup = new GroupLayerClass();

            foreach (var layer in layers)
            {
                layerGroup.Add(layer);
            }
            return(layerGroup);
        }
Example #10
0
        //**选择所有图层**//
        private void TOC_SelectAllLayers()
        {
            IGroupLayer pGroupLayer = new GroupLayerClass();

            for (int i = 0; i < this.m_pMapControl.LayerCount; i++)
            {
                ILayer pLayer = this.m_pMapControl.get_Layer(i);
                pGroupLayer.Add(pLayer);
                //this.m_pTOCControl.SelectItem(pLayer,null);
            }
            this.m_pTOCControl.SelectItem(pGroupLayer);
        }
Example #11
0
        private void AddLayer(IWorkspace space)
        {
            IFeatureWorkspace F_work = space as IFeatureWorkspace;

            IFeatureLayer f_layer = new FeatureLayerClass();
            IGroupLayer   G_layer = new GroupLayerClass();

            G_layer.Name = "Geo_GroupLayer_check";

            IEnumDataset dataset = space.get_Datasets(esriDatasetType.esriDTFeatureDataset);//得到MDB里的所有集合名称

            dataset.Reset();
            IDataset set = dataset.Next();

            while (set != null)
            {
                IFeatureDataset F_dataset    = set as IFeatureDataset;
                IEnumDataset    dataset_each = F_dataset.Subsets;
                dataset_each.Reset();
                IDataset dataset_class = dataset_each.Next();

                if (dataset_class == null)
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "这个集合当中没有任何的数据,请重新选择要素集合!");
                    return;
                }

                while (dataset_class != null)
                {
                    if (dataset_class is IFeatureClass)
                    {
                        f_layer = new FeatureLayerClass();
                        IFeatureClass class_each = F_work.OpenFeatureClass(dataset_class.Name);
                        f_layer.FeatureClass = class_each;
                        f_layer.Name         = dataset_class.Name;

                        G_layer.Add(f_layer as ILayer);
                    }
                    dataset_class = dataset_each.Next();
                }

                set = dataset.Next();
            }
            if (G_layer != null)
            {
                this.Close();
                _AppHk.MapControl.Map.AddLayer(G_layer);
                _AppHk.MapControl.ActiveView.Refresh();
            }
        }
        private static IGroupLayer RefreshLayer(string catId, List <string> idahoIds, out bool unRecoverableError)
        {
            IGroupLayer groupLayer = new GroupLayerClass();

            groupLayer.Name = catId;
            foreach (var id in idahoIds)
            {
                var wmsMapLayer = CreateWmsMapLayer(id);

                if (wmsMapLayer == null)
                {
                    Jarvis.Logger.Info("An unknown issue occurred trying to establish a WMS layer link");
                    unRecoverableError = true;
                    return(null);
                }

                // get wms service description
                var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription;

                ILayer wmsLayer = null;

                // add layers for the wms currently there will only be one.
                for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++)
                {
                    var layerDesc = serviceDesc.LayerDescription[i];

                    var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc);
                    for (var j = 0; j <= grpLayer.Count - 1; j++)
                    {
                        wmsLayer         = wmsMapLayer;
                        wmsMapLayer.Name = id;
                    }
                }

                // turn on sub layers, add it to arcmap and move it to top of TOC
                SublayerVisibleOn(wmsLayer);
                groupLayer.Add(wmsLayer);
            }

            // No error occurred
            unRecoverableError = false;
            return(groupLayer);
        }
Example #13
0
 private ILayer getLayer(DevComponents.AdvTree.Node advN)//支持两层结构递归调用
 {
     if (!advN.HasChildNodes && advN.Checked)
     {
         string tag      = advN.Tag as string;
         ILayer addLayer = null;
         if (tag == "Layer")
         {
             //获取xml节点
             if (advN.DataKey != null)
             {
                 XmlNode layerNode = advN.DataKey as XmlNode;
                 string  nodeKey   = "";
                 if ((layerNode as XmlElement).HasAttribute("NodeKey"))
                 {
                     nodeKey = layerNode.Attributes["NodeKey"].Value;
                 }
                 addLayer = ModGetData.GetLayerByNodeKey(pAxMapControl.Map, nodeKey);
             }
         }
         else if (tag == "OutLayer")
         {
         }
         return(addLayer);
     }
     else if (advN.HasChildNodes)
     {
         IGroupLayer pGpLayer = new GroupLayerClass();
         pGpLayer.Name = advN.Text;
         foreach (DevComponents.AdvTree.Node avN in advN.Nodes)
         {
             ILayer pLyr = getLayer(avN);
             if (pLyr != null)
             {
                 pGpLayer.Add(pLyr);
             }
         }
         return(pGpLayer as ILayer);
     }
     return(null);
 }
Example #14
0
        //由专题类型构造制图页面的地图图层-----多了个专题名称针对DOM
        public static void AddMapOfNoneXZQ(IMap inMap, string inType, string LyrNT, IMap inSourceMap)
        {
            IMapLayers inMapLayers = inMap as IMapLayers;

            if (!File.Exists(LayerXMLpath))
            {
                return;
            }
            XmlDocument cXmlDoc = new XmlDocument();

            cXmlDoc.Load(LayerXMLpath);
            if (cXmlDoc == null)
            {
                return;
            }
            XmlNode xn = cXmlDoc.SelectSingleNode("//DIR[@DIRType='" + inType + "']");

            if (xn == null)
            {
                return;
            }
            inMap.Name = xn.Attributes["NodeText"].Value;//设置地图名称
            IGroupLayer gLayer = new GroupLayerClass();

            gLayer.Name = xn.Attributes["NodeText"].Value;
            XmlNodeList xnl = xn.SelectNodes(".//Layer[@NodeText='" + LyrNT + "']");

            foreach (XmlNode pxn in xnl)
            {
                string nodeKey = pxn.Attributes["NodeKey"].Value;
                ILayer pLayer  = GetLayerByNodeKey(inSourceMap, nodeKey);
                if (pLayer != null)
                {
                    gLayer.Add(pLayer);
                }
            }
            inMapLayers.InsertLayer(gLayer as ILayer, false, inMapLayers.LayerCount);
            cXmlDoc = null;
        }
Example #15
0
        /////////该类实现将各种ArcGis图层加载至数据库集成管理界面的图层控件当中来////////
        /// <summary>
        /// 加载矢量库体
        /// </summary>
        /// <param name="DbEleInfo">矢量库体对应的库体信息XmlElement</param>
        /// <param name="in_MXDFile">符号化mxd文件路径</param>
        /// <param name="ex">输出错误信息</param>
        public static void AddFeaLayer(Plugin.Application.IAppDBIntegraRef m_Hook, XmlElement DbEleInfo, string in_MXDFile, out Exception ex)
        {
            ex = null;
            try
            {
                XmlElement elementTemp   = DbEleInfo.SelectSingleNode(".//现势库/连接信息") as XmlElement;
                IWorkspace TempWorkSpace = ModDBOperate.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace;
                if (TempWorkSpace == null)
                {
                    //SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!");
                    ex = new Exception("连接数据库失败!");
                    return;
                }
                ILayer player = ModDBOperate.GetGroupLayer(m_Hook.MapControl, m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + m_Hook.ProjectTree.SelectedNode.Text);
                if (player != null)
                {
                    m_Hook.MapControl.Map.DeleteLayer(player);
                    m_Hook.TOCControl.Update();
                }

                IGroupLayer pGroupLayer = new GroupLayerClass();
                SysCommon.Gis.SysGisDataSet sysGisDataset  = new SysCommon.Gis.SysGisDataSet(TempWorkSpace);
                IFeatureDataset             featureDataset = sysGisDataset.GetFeatureDataset((elementTemp.FirstChild as XmlElement).GetAttribute("名称"), out ex);
                if (ex != null)
                {
                    //SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据失败!");
                    ex = new Exception("获取数据发生异常:" + ex.Message);
                    return;
                }

                pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + m_Hook.ProjectTree.SelectedNode.Text;
                List <IDataset> lstDataset = sysGisDataset.GetFeatureClass(featureDataset);
                //遍历要素类,加载图层
                string dbType   = "";
                string userName = "";//用户名

                userName = elementTemp.GetAttribute("用户");
                dbType   = elementTemp.GetAttribute("类型");
                foreach (IDataset dataset in lstDataset)
                {
                    IFeatureClass pFeatureClass = dataset as IFeatureClass;
                    if (pFeatureClass == null)
                    {
                        continue;
                    }
                    IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                    if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation)
                    {
                        pFeatureLayer = new FDOGraphicsLayerClass();
                    }
                    pFeatureLayer.FeatureClass = pFeatureClass;
                    if (dbType.Trim().ToUpper() == "SDE")
                    {
                        if (dataset.Name.ToUpper().Contains(userName.Trim().ToUpper()))
                        {
                            //SDE用户图层名去掉用户名
                            pFeatureLayer.Name = dataset.Name.Substring(userName.Trim().Length + 1);
                        }
                        else
                        {
                            pFeatureLayer.Name = dataset.Name;
                        }
                    }
                    else
                    {
                        pFeatureLayer.Name = dataset.Name;
                    }
                    pFeatureLayer.Visible = false;
                    pGroupLayer.Add(pFeatureLayer as ILayer);
                }
                m_Hook.MapControl.Map.AddLayer(pGroupLayer);
                SysCommon.Gis.ModGisPub.LayersCompose(m_Hook.MapControl);
            }
            catch (Exception eError)
            {
                ex = eError;
                return;
            }
        }
Example #16
0
        /// <summary>
        /// 创建要素图层
        /// 也可以利用现有要素图层创建:IFeatureLayer featurelayer,
        /// </summary>
        /// <param name="map"></param>
        /// <param name="workspace"></param>
        /// <param name="layername"></param>
        /// <param name="aliasname"></param>
        /// <returns></returns>
        public IFeatureLayer CreateFeatureLayer(IMap map, IWorkspace workspace,
                                                string layername, string aliasname)
        {
            try
            {
                IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
                //IFields fields = featurelayer.FeatureClass.Fields;

                // 创建要素类的字段集
                IFields     fields     = new FieldsClass();
                IFieldsEdit fieldsEdit = (IFieldsEdit)fields;

                // 添加要素类必须字段:object ID 字段
                IField     oidField     = new FieldClass();
                IFieldEdit oidFieldEdit = (IFieldEdit)oidField;
                oidFieldEdit.Name_2 = "OBJECTID";
                oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID;
                fieldsEdit.AddField(oidField);

                // 创建几何定义(和空间参考)
                IGeometryDef     geometryDef     = new GeometryDefClass();
                IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
                geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
                //ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
                //ISpatialReference spatialReference =
                //spatialReferenceFactory.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_NAD1983UTM_20N);
                //ISpatialReferenceResolution spatialReferenceResolution = (ISpatialReferenceResolution)spatialReference;
                //spatialReferenceResolution.ConstructFromHorizon();
                //ISpatialReferenceTolerance spatialReferenceTolerance = (ISpatialReferenceTolerance)spatialReference;
                //spatialReferenceTolerance.SetDefaultXYTolerance();
                geometryDefEdit.SpatialReference_2 = map.SpatialReference;

                //添加几何字段
                IField     geometryField     = new FieldClass();
                IFieldEdit geometryFieldEdit = (IFieldEdit)geometryField;
                geometryFieldEdit.Name_2        = "Shape";
                geometryFieldEdit.Type_2        = esriFieldType.esriFieldTypeGeometry;
                geometryFieldEdit.GeometryDef_2 = geometryDef;
                fieldsEdit.AddField(geometryField);

                //新建字段
                IField     pField     = new FieldClass();
                IFieldEdit pFieldEdit = pField as IFieldEdit;
                pFieldEdit.Length_2    = 50;
                pFieldEdit.Name_2      = "ID";
                pFieldEdit.AliasName_2 = "ID";
                pFieldEdit.Type_2      = esriFieldType.esriFieldTypeString;
                fieldsEdit.AddField(pField);

                //检查字段的有效性
                IFieldChecker   fieldChecker    = new FieldCheckerClass();
                IEnumFieldError enumFieldError  = null;
                IFields         validatedFields = null;
                fieldChecker.ValidateWorkspace = (IWorkspace)featureWorkspace;
                fieldChecker.Validate(fields, out enumFieldError, out validatedFields);

                IFeatureClass featureClass = featureWorkspace.CreateFeatureClass(layername, validatedFields, null, null,
                                                                                 esriFeatureType.esriFTSimple, "Shape", "");

                //用创建的要素类生成要素图层
                IFeatureLayer newFeaLayer = new FeatureLayerClass();
                newFeaLayer.FeatureClass = featureClass;
                newFeaLayer.Name         = aliasname;

                //添加新建图层到相应图层组中
                IGroupLayer groupLayer     = new GroupLayerClass();
                string      groupLayerName = aliasname.Split("-".ToCharArray())[1].Trim();
                groupLayer = GetGroupLayerByName(groupLayerName);
                groupLayer.Add(newFeaLayer as ILayer);
                DataEditCommon.g_axTocControl.Update();
                DataEditCommon.g_pAxMapControl.Refresh();

                return(newFeaLayer);
            }
            catch (Exception ex)
            {
                Log.Debug(ex.ToString());
                return(null);
            }
        }
Example #17
0
        private static void AddSubClass(MajorClass mc, GroupLayerClass group, Dictionary <string, IFeatureClass> fcs, string geoColumnName)
        {
            if (mc == null || string.IsNullOrEmpty(mc.ClassifyField) || string.IsNullOrEmpty(mc.Fc3D))
            {
                return;
            }
            string[] arrayFc3DGuids = mc.Fc3D.Split(';');
            if (arrayFc3DGuids == null || arrayFc3DGuids.Count() == 0)
            {
                return;
            }
            // 给每个大类节点关联上所有的要素类,并记录上所有要素类
            Dictionary <string, DF3DFeatureClass> dict = new Dictionary <string, DF3DFeatureClass>();

            foreach (string fc3DGuid in arrayFc3DGuids)
            {
                foreach (KeyValuePair <string, IFeatureClass> kv in fcs)
                {
                    if (kv.Key == fc3DGuid)
                    {
                        dict[kv.Key] = new DF3DFeatureClass(kv.Value);
                        DF3DFeatureClassManager.Instance.Add(dict[kv.Key]);
                        break;
                    }
                }
            }
            if (group is TreeNodeMajorClass)
            {
                (group as TreeNodeMajorClass).FeatureClasses = dict;
            }

            // 可视化所有的要素类
            DF3DApplication app = DF3DApplication.Application;

            if (app == null || app.Current3DMapControl == null)
            {
                return;
            }
            AxRenderControl d3 = app.Current3DMapControl;
            Dictionary <string, IFeatureLayer> dictLayers = new Dictionary <string, IFeatureLayer>();

            foreach (DF3DFeatureClass dffc in dict.Values)
            {
                IFeatureClass fc = dffc.GetFeatureClass();
                if (fc == null)
                {
                    continue;
                }
                IGeometryRender geoRender = new SimpleGeometryRender();
                geoRender.RenderGroupField = "GroupId";
                IFeatureLayer fl = d3.ObjectManager.CreateFeatureLayer(fc, geoColumnName, null, geoRender, d3.ProjectTree.RootID);
                if (fl != null)
                {
                    dictLayers[fl.Guid.ToString()] = fl;
                    dffc.SetFeatureLayer(fl);
                }
            }

            // 给每个大类节点划分二级子类
            foreach (SubClass sc in mc.SubClasses)
            {
                TreeNodeSubClass tnsc = new TreeNodeSubClass()
                {
                    Name        = sc.Name,
                    CustomValue = sc
                };
                tnsc.FeatureLayers  = dictLayers;
                tnsc.FeatureClasses = dict;
                tnsc.Visible        = true;
                group.Add(tnsc);
            }
            group.Visible = true;
            group.CollapseAll();
        }
Example #18
0
        /// <summary>
        /// 打开指定的CAD图层,包括点point,线polyline,多点mutilpoint,多段mutilpatch与注记(如果是注记,需要建立CadAnnotationLayerClass实例对象),添加的是空间数据对象(添加到同一个图层组中,图层组名为文件名无后缀)
        /// </summary>
        /// <param name="mapControlDefault">地图控件</param>
        /// <param name="pWorkspace">工作空间</param>
        /// <param name="strFileName">文件名,没有会追</param>
        public static void GetALLCADLayerFromGeo(IMapControlDefault mapControlDefault, IWorkspace pWorkspace, string strFileName)
        {
            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
            //组图层
            IGroupLayer pGroupLayer = new GroupLayerClass();
            pGroupLayer.Name = strFileName.Substring(0, strFileName.LastIndexOf("."));

            //打开指定的的cad图层--Point
            IFeatureClass pFeatureClass_Point = pFeatureWorkspace.OpenFeatureClass(strFileName + ":point");
            if (pFeatureClass_Point != null)
            {
                IFeatureLayer pFeatureLayer_Point = new CadFeatureLayerClass();
                pFeatureLayer_Point.FeatureClass = pFeatureClass_Point;
                pFeatureLayer_Point.Name = pFeatureClass_Point.AliasName;
                pGroupLayer.Add(pFeatureLayer_Point);
            }
            //Polyline  
            string strPlineName = System.String.Concat(strFileName, ":Polyline");
            IFeatureClass pFeatClass_Polyline = pFeatureWorkspace.OpenFeatureClass(strPlineName);
            if (pFeatClass_Polyline != null)
            {
                IFeatureLayer pFeatureLayer_Polyline = new CadFeatureLayerClass();
                pFeatureLayer_Polyline.FeatureClass = pFeatClass_Polyline;
                pFeatureLayer_Polyline.Name = pFeatClass_Polyline.AliasName;
                pGroupLayer.Add(pFeatureLayer_Polyline);
                pGroupLayer.Add(pFeatureLayer_Polyline);
            }

            mapControlDefault.AddLayer(pGroupLayer as ILayer, 0);
        }
        public static List <ILayer> AnalyzeLayers(IWorkspace workspace)
        {
            var          list        = new List <ILayer>();
            IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny);

            enumDataset.Reset();
            IDataset dataset = enumDataset.Next();

            while (dataset != null)
            {
                if (dataset is IFeatureDataset)
                {
                    IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
                    IFeatureDataset   featureDataset   = featureWorkspace.OpenFeatureDataset(dataset.Name);
                    IEnumDataset      enumdataset1     = featureDataset.Subsets;
                    enumdataset1.Reset();
                    IGroupLayer groupLayer = new GroupLayerClass();
                    groupLayer.Name = featureDataset.Name;
                    IDataset dataset1 = enumdataset1.Next();
                    while (dataset1 != null)
                    {
                        if (dataset1 is IFeatureClass)
                        {
                            IFeatureLayer featureLayer = new FeatureLayerClass();
                            featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(dataset1.Name);
                            if (featureLayer.FeatureClass != null)
                            {
                                featureLayer.Name = featureLayer.FeatureClass.AliasName;
                                list.Add(featureLayer);
                                groupLayer.Add(featureLayer);
                            }
                        }
                        dataset1 = enumdataset1.Next();
                    }
                    //list.Add(groupLayer);
                }
                else if (dataset is IFeatureClass)
                {
                    IFeatureWorkspace featureworkSpace = workspace as IFeatureWorkspace;
                    IFeatureLayer     featurelayer     = new FeatureLayerClass();
                    featurelayer.FeatureClass = featureworkSpace.OpenFeatureClass(dataset.Name);
                    featurelayer.Name         = featurelayer.FeatureClass.AliasName;
                    list.Add(featurelayer);
                }
                else if (dataset is IRasterDataset)
                {
                    IRasterWorkspaceEx rasterWorkspace = workspace as IRasterWorkspaceEx;
                    IRasterDataset     rasterDataset   = rasterWorkspace.OpenRasterDataset(dataset.Name);
                    IRasterPyramid3    rasterPyramid   = rasterDataset as IRasterPyramid3;
                    if (rasterPyramid != null)
                    {
                        if (!(rasterPyramid.Present))
                        {
                            rasterPyramid.Create();
                        }
                    }

                    IRasterLayer rasterLayer = new RasterLayerClass();
                    rasterLayer.CreateFromDataset(rasterDataset);
                    ILayer layer = rasterLayer as ILayer;
                    list.Add(layer);
                }

                dataset = enumDataset.Next();
            }

            return(list);
        }
        /// <summary>
        ///     Add all current idaho ids for a given catalog id to arcmap
        /// </summary>
        /// <param name="catalogId">catalog id to be added</param>
        /// <param name="colorInterp">Kind of color interpretation.  PAN, MS</param>
        private void AddIdahoWms(string catalogId, string colorInterp)
        {
            HashSet<string> idahoIds;
            switch (colorInterp)
            {
                case "PAN":
                    idahoIds = IdahoIdRepo.GetPanIdahoIds(catalogId);
                    break;
                case "MS":
                    idahoIds = IdahoIdRepo.GetMsIdahoIds(catalogId);
                    break;

                default:
                    idahoIds = null;
                    break;
            }

            if (idahoIds == null) return;

            IGroupLayer groupLayer = new GroupLayerClass();
            groupLayer.Name = colorInterp + " " + catalogId;
            foreach (var id in idahoIds)
            {
                var wmsMapLayer = new WMSMapLayerClass();

                // create and configure wms connection name, this is used to store the connection properties
                IWMSConnectionName pConnName = new WMSConnectionNameClass();
                IPropertySet propSet = new PropertySetClass();

                // create the idaho wms url
                var idahoUrl = string.Format(
                    "http://idaho.geobigdata.io/v1/wms/idaho-images/{0}/{1}/mapserv?",
                    id,
                    this.token);

                Jarvis.Logger.Info("Adding WMS Layer to: " + idahoUrl);

                // setup the arcmap connection properties
                propSet.SetProperty("URL", idahoUrl);
                pConnName.ConnectionProperties = propSet;

                //uses the name information to connect to the service
                IDataLayer dataLayer = wmsMapLayer;
                try
                {
                    dataLayer.Connect((IName)pConnName);
                }
                catch (Exception e)
                {
                    Jarvis.Logger.Error("Problems connecting to WMS: " + e.Message);
                }

                // get wms service description
                var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription;

                ILayer wmsLayer = null;

                // add layers for the wms currently there will only be one.
                for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++)
                {
                    var layerDesc = serviceDesc.LayerDescription[i];

                    var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc);
                    for (var j = 0; j <= grpLayer.Count - 1; j++)
                    {
                        wmsLayer = wmsMapLayer;
                        wmsMapLayer.Name = id;
                    }
                }

                // turn on sub layers, add it to arcmap and move it to top of TOC
                SublayerVisibleOn(wmsLayer);
                groupLayer.Add(wmsLayer);
            }
            // turn on sub layers, add it to arcmap and move it to top of TOC
            ArcMap.Document.AddLayer(groupLayer);
            ArcMap.Document.FocusMap.MoveLayer(groupLayer, 0);
        }
Example #21
0
        public static void AddIdahoWms(string idahoId, string groupLayerName, string token)
        {
            IGroupLayer groupLayer = new GroupLayerClass();
            groupLayer.Name = groupLayerName;

            var wmsMapLayer = new WMSMapLayerClass();

            // create and configure wms connection name, this is used to store the connection properties
            IWMSConnectionName pConnName = new WMSConnectionNameClass();
            IPropertySet propSet = new PropertySetClass();

            // create the idaho wms url
            var idahoUrl = string.Format(
                "http://idaho.geobigdata.io/v1/wms/idaho-images/{0}/{1}/mapserv?",
                idahoId, token);

            // setup the arcmap connection properties
            propSet.SetProperty("URL", idahoUrl);
            pConnName.ConnectionProperties = propSet;

            //uses the name information to connect to the service
            IDataLayer dataLayer = wmsMapLayer;
            try
            {
                dataLayer.Connect((IName)pConnName);
            }
            catch (Exception e)
            {
                Jarvis.Logger.Error("Problems connecting to WMS: " + e.Message);
            }

            // get wms service description
            var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription;

            ILayer wmsLayer = null;

            // add layers for the wms currently there will only be one.
            for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++)
            {
                var layerDesc = serviceDesc.LayerDescription[i];

                var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc);
                for (var j = 0; j <= grpLayer.Count - 1; j++)
                {
                    wmsLayer = wmsMapLayer;
                    wmsMapLayer.Name = idahoId;
                }
            }

            // turn on sub layers, add it to arcmap and move it to top of TOC
            //            SublayerVisibleOn(wmsLayer);
            groupLayer.Add(wmsLayer);

            // turn on sub layers, add it to arcmap and move it to top of TOC
            ArcMap.Document.AddLayer(groupLayer);
            ArcMap.Document.FocusMap.MoveLayer(groupLayer, 0);
        }
Example #22
0
        //通过intersect关系进行裁切
        public void ClipByExtent(int groupNm, int extNum)
        {
            IGeometry extent = GetClipExtent(extNum);
            string findName = "grp" + groupNm.ToString() + "ext0";
            IGroupLayer grpLy = avlbLayers.Find(item => item.Name == findName);
            ICompositeLayer comLy = grpLy as ICompositeLayer;

            IGroupLayer newGroupLayer = new GroupLayerClass();
            newGroupLayer.Name = "grp" + groupNm.ToString() + "ext" + extNum.ToString();

            for (int i = 0; i < comLy.Count; i++)
            {
                IFeatureLayer feaLy = comLy.get_Layer(i) as IFeatureLayer;
                IFeatureClass clipFC = feaLy.FeatureClass;
                IFields flds = clipFC.Fields;

                ISpatialFilter spatialFilter = new SpatialFilterClass();
                spatialFilter.Geometry = extent;
                spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
                IFeatureCursor cursor = clipFC.Search(spatialFilter, false);

                IWorkspaceFactory workspaceFactory = new InMemoryWorkspaceFactoryClass();
                IWorkspaceName workspaceName = workspaceFactory.Create(null, "MyWorkspace", null, 0);
                IName name = (IName)workspaceName;
                IWorkspace workspace = (IWorkspace)name.Open();
                IFeatureWorkspace inmemFeaWksp = workspace as IFeatureWorkspace;

                if (clipFC.ShapeType == esriGeometryType.esriGeometryPoint)
                {
                    IFeatureClass inmemPTFC = CreateWithoutDescription("inmemPTFC_" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemPTFC, cursor, extent);

                    IFeatureLayer inmemPTFCLayer = new FeatureLayerClass();
                    inmemPTFCLayer.FeatureClass = inmemPTFC;
                    newGroupLayer.Add(inmemPTFCLayer);
                }

                else if (clipFC.ShapeType == esriGeometryType.esriGeometryPolyline)
                {
                    IFeatureClass inmemLNFC = CreateWithoutDescription("inmemLNFC" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemLNFC, cursor, extent);

                    IFeatureLayer inmemLNFCLayer = new FeatureLayerClass();
                    inmemLNFCLayer.FeatureClass = inmemLNFC;
                    newGroupLayer.Add(inmemLNFCLayer);
                }

                else if (clipFC.ShapeType == esriGeometryType.esriGeometryPolygon)
                {
                    IFeatureClass inmemPLGFC = CreateWithoutDescription("inmemPLGFC" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds);
                    InsertFeaturesBoun(inmemPLGFC, cursor, extent);

                    IFeatureLayer inmemPLGFCLayer = new FeatureLayerClass();
                    inmemPLGFCLayer.FeatureClass = inmemPLGFC;
                    newGroupLayer.Add(inmemPLGFCLayer);
                }
            }
            avlbLayers.Add(newGroupLayer);
        }
Example #23
0
        private void AddAllDataset(IWorkspace pWorkspace, AxMapControl mapControl)
        {
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);

            pEnumDataset.Reset();
            //将Enum数据集中的数据一个个读到DataSet中
            IDataset pDataset = pEnumDataset.Next();

            //判断数据集是否有数据
            while (pDataset != null)
            {
                TreeNode node = new TreeNode();
                node.Name = pDataset.Name;
                node.Text = pDataset.Name;
                //treeView1.Nodes.Add(node);
                if (pDataset is IFeatureDataset)  //要素数据集
                {
                    IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
                    IFeatureDataset   pFeatureDataset   = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
                    IEnumDataset      pEnumDataset1     = pFeatureDataset.Subsets;
                    pEnumDataset1.Reset();
                    IGroupLayer pGroupLayer = new GroupLayerClass();
                    pGroupLayer.Name = pFeatureDataset.Name;
                    IDataset pDataset1 = pEnumDataset1.Next();
                    while (pDataset1 != null)
                    {
                        if (pDataset1 is IFeatureClass)  //要素类
                        {
                            IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                            pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);

                            if (pFeatureLayer.FeatureClass != null)
                            {
                                pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;

                                CheckBox checkbox = new CheckBox();
                                checkbox.Text = pFeatureLayer.Name;
                                checkbox.Name = pFeatureLayer.Name;
                                node.Nodes.Add(checkbox.Name);

                                pGroupLayer.Add(pFeatureLayer);
                                mapControl.Map.AddLayer(pFeatureLayer);
                            }
                        }
                        pDataset1 = pEnumDataset1.Next();
                    }
                }
                else if (pDataset is IFeatureClass) //要素类
                {
                    IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
                    IFeatureLayer     pFeatureLayer     = new FeatureLayerClass();
                    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);

                    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                    mapControl.Map.AddLayer(pFeatureLayer);
                }
                else if (pDataset is IRasterDataset) //栅格数据集
                {
                    IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace;
                    IRasterDataset     pRasterDataset   = pRasterWorkspace.OpenRasterDataset(pDataset.Name);
                    //影像金字塔判断与创建

                    IRasterPyramid3 pRasPyrmid;
                    pRasPyrmid = pRasterDataset as IRasterPyramid3;
                    if (pRasPyrmid != null)
                    {
                        if (!(pRasPyrmid.Present))
                        {
                            pRasPyrmid.Create(); //创建金字塔
                        }
                    }
                    IRasterLayer pRasterLayer = new RasterLayerClass();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    ILayer pLayer = pRasterLayer as ILayer;
                    mapControl.AddLayer(pLayer, 0);
                }
                pDataset = pEnumDataset.Next();
            }

            mapControl.ActiveView.Refresh();
        }
Example #24
0
        private void PrepareMapForOutput(object sender, MapOutput_EventArgs e)
        {
            ITrackCancel pTrackCancel = new CancelTrackerClass();
            IProgressDialogFactory pPDFact = new ProgressDialogFactoryClass();
            IProgressDialog2 pProgressDialog = null;

            //IMxDocument pMxDoc = null;

            try
            {
                //pMxDoc = (IMxDocument)m_app.Document;

                // check the spatial reference of the first map in the draw order
                ISpatialReference pSpatialRef = m_pISDUTExt.MxDocument.Maps.get_Item(0).SpatialReference;

                // get the template file and store the pagelayout and map
                IGxFile pGxFile = new GxMapClass();
                pGxFile.Path = e.mapTemplatePath; //@"D:\Project\64235_SUT\development\current\src\templates\exA.mxt";
                IGxMapPageLayout pGxMapPageLayout = (IGxMapPageLayout)pGxFile;

                IPageLayout pPageLayoutTemplate = pGxMapPageLayout.PageLayout;
                IMap pMapTemplate = FindMap(pPageLayoutTemplate);

                // make sure the user understands that we're only supporting one map frame in the template
                if (m_pISDUTExt.MxDocument.Maps.Count > 1)
                {
                    System.Windows.Forms.DialogResult diagRes2 =
                        MessageBox.Show("You have more maps than the target template can accomodate.\n" +
                                        "The top most map in your Table of Contents will be used in \n" +
                                        "the template and the others will be discarded. \n\n" +
                                        "Do you want to continue?", "SUITT Question", MessageBoxButtons.YesNo);
                    if(diagRes2 == DialogResult.No)
                        return;
                }

                // setup the progress dialog and show it
                pProgressDialog = (IProgressDialog2)pPDFact.Create(pTrackCancel,m_app.hWnd);
                pProgressDialog.Animation = esriProgressAnimationTypes.esriProgressGlobe;
                pProgressDialog.Title = "Loading and applying template...";
                pProgressDialog.CancelEnabled = true;
                pProgressDialog.ShowDialog();

                // save the layers in the template target frame to a List
                System.Collections.Generic.List<ILayer> templateMapLayers = new System.Collections.Generic.List<ILayer>();
                for(int i = 0; i < pMapTemplate.LayerCount; i++)
                {
                    templateMapLayers.Add(pMapTemplate.get_Layer(i));
                }

                // remove other map frames from the current document (the 'destination')
                while (m_pISDUTExt.MxDocument.Maps.Count > 1)
                {
                    m_pISDUTExt.MxDocument.Maps.RemoveAt(m_pISDUTExt.MxDocument.Maps.Count - 1);
                }

                IMap pMapToBeReplaced = m_pISDUTExt.MxDocument.FocusMap;

                // set the active view to the pagelayout mode
                m_pISDUTExt.MxDocument.ActiveView = (IActiveView)m_pISDUTExt.MxDocument.PageLayout;

                // Get active views and extents for both the template and current map frames.
                // Will be used to set the extents later
                IActiveView pAVdest = (IActiveView)m_pISDUTExt.MxDocument.FocusMap;
                IActiveView pAVtemplate = (IActiveView)pMapTemplate;

                IEnvelope pEnvDest = pAVdest.Extent;
                pEnvDest.SpatialReference = m_pISDUTExt.MxDocument.FocusMap.SpatialReference;

                IEnvelope pEnvTemplate = pAVtemplate.Extent;
                pEnvTemplate.SpatialReference = pMapTemplate.SpatialReference;

                // deal with reprojecting data frames as necessary
                DialogResult diagResMatchSR = DialogResult.No;
                try
                {
                    if (pMapTemplate.SpatialReference.FactoryCode != pSpatialRef.FactoryCode)
                    {
                        diagResMatchSR = MessageBox.Show("The spatial reference of the map is not the\n" +
                            "same as the target map of the template.\n\n" +
                            "Do you want to change the current map spatial reference to\n" +
                            "match the template spatial reference?", "SUITT Question", MessageBoxButtons.YesNo);

                        if (diagResMatchSR == DialogResult.No)
                        {
                            //m_pISDUTExt.Document.Maps.get_Item(0).SpatialReference = pMapTemplate.SpatialReference;
                            pMapTemplate.SpatialReference = pMapToBeReplaced.SpatialReference;
                        }
                    }
                }
                catch { }

                // save the layers in the current map frame to a List
                System.Collections.Generic.List<ILayer> destMapLayers = new System.Collections.Generic.List<ILayer>();
                for(int i = 0; i < m_pISDUTExt.MxDocument.FocusMap.LayerCount; i++)
                {
                    destMapLayers.Add(m_pISDUTExt.MxDocument.FocusMap.get_Layer(i));
                }

                // if the spatial reference systems don't match, project the current map envelope
                // to match the SR of the template --> will use this to set the extents later
                if (pMapTemplate.SpatialReference.FactoryCode != pMapToBeReplaced.SpatialReference.FactoryCode)
                {
                    pEnvDest.Project(pEnvTemplate.SpatialReference);

                }

                IGroupLayer pGroupLayer = new GroupLayerClass();
                pGroupLayer.Name = "Layers From Template";

                // group the layers in the new map frame (from the template)
                //for(int i = 0; i < templateMapLayers.Count; i++)
                foreach(ILayer pLayer in templateMapLayers)
                {
                    pGroupLayer.Add(pLayer);
                    pMapTemplate.DeleteLayer(pLayer);
                }

                // copy all elements from the template to the current document pagelayout
                CopyPasteLayoutElements(m_pISDUTExt.MxDocument.PageLayout, pPageLayoutTemplate);

                // add the layers from the current (destination) document to the new map frame
                // that got copied over from the template
                for (int i = destMapLayers.Count - 1; i >= 0; i--)
                {
                    pMapTemplate.AddLayer(destMapLayers[i]);
                }

                // add and move group layer to top of TOC
                pMapTemplate.AddLayer((ILayer)pGroupLayer);
                pMapTemplate.MoveLayer((ILayer)pGroupLayer, 0);
                //m_pISDUTExt.Document.Maps.get_Item(0).AddLayer((ILayer)pGroupLayer);
                //m_pISDUTExt.Document.Maps.get_Item(0).MoveLayer((ILayer)pGroupLayer, 0);

                // set the extent of the map
                pAVtemplate.Extent = pEnvDest;

                // refresh the TOC
                m_pISDUTExt.MxDocument.CurrentContentsView.Refresh(null);

                // Do the search and replaces for the text elements
                Hashtable htSearchAndRep = new Hashtable();

                // add the date
                string strDate = DateTime.Today.ToLongDateString();
                htSearchAndRep.Add("<Enter Date Here>",strDate);

                pSpatialRef = m_pISDUTExt.MxDocument.Maps.get_Item(0).SpatialReference;

                // add the spatial ref info
                IProjectedCoordinateSystem pPCS = pSpatialRef as IProjectedCoordinateSystem;

                try
                {
                    // try to set the datum
                    if (pPCS != null)
                    {
                        IDatum pDatum = pPCS.GeographicCoordinateSystem.Datum;

                        /*
                        * esriSRDatum_NAD1927 6267 North American Datum 1927.
                        * esriSRDatum_NAD1983 6269 North American Datum 1983.
                        */

                        if (pDatum.FactoryCode == 6267)
                            htSearchAndRep.Add("<Enter NAD Here>","27");
                        else if (pDatum.FactoryCode == 6269)
                            htSearchAndRep.Add("<Enter NAD Here>","83");
                    }
                }
                catch{}

                try
                {
                    // try to set the utm zone
                    if (pPCS.FactoryCode >= 26903 && pPCS.FactoryCode <= 26923) // NAD83 UTM Zones 3-23
                    {
                        string strZone = Convert.ToString(pPCS.FactoryCode - 26900);
                        htSearchAndRep.Add("<Enter Zone Here>",strZone);

                    }
                    else if(pPCS.FactoryCode >= 26703 && pPCS.FactoryCode <= 26722) // NAD27 UTM Zones 3-22
                    {
                        string strZone = Convert.ToString(pPCS.FactoryCode - 26700);
                        htSearchAndRep.Add("<Enter Zone Here>",strZone);
                    }
                }
                catch{}

                // do all replacements
                ReplaceText(htSearchAndRep,m_pISDUTExt.MxDocument.PageLayout);

                //m_pISDUTExt.Document = (IMxDocument)m_app.Document;
                //m_pISDUTExt.Document.FocusMap.MapScale = Convert.ToInt32(e.mapScale);
                pMapTemplate.MapScale = Convert.ToInt32(e.mapScale);
                //IActiveView pAV = (IActiveView)m_pISDUTExt.Document.PageLayout;
                //util.Utils.Release(m_pISDUTExt.Document);
                //pAV.Refresh();
                pAVtemplate.Refresh();
            }
            catch(Exception ex)
            {
                Debug.WriteLine(ex.Message + "\n" + ex.StackTrace);
                util.Logger.Write(" Descrip  : Preparing map for output " +
                    "\n Message  : " + ex.Message +
                    "\n StackTrc : " + ex.StackTrace,util.Logger.LogLevel.Debug);
            }
            finally
            {
                try
                {
                    pProgressDialog.HideDialog();
                    //util.Utils.Release(m_pISDUTExt.Document);
                }
                catch{}
            }
        }
Example #25
0
        //cyf 2011065 modify
        public override void OnClick()
        {
            Exception err = null;

            /////获取工程项目名称
            DevComponents.AdvTree.Node ProjectNode = new DevComponents.AdvTree.Node();
            ProjectNode = m_Hook.ProjectTree.SelectedNode;
            while (ProjectNode.Parent != null)
            {
                ProjectNode = ProjectNode.Parent;
            }
            //cyf 20110625 add:
            DevComponents.AdvTree.Node DBNode = new DevComponents.AdvTree.Node(); //数据库树节点
            //获取数据库节点
            DBNode = m_Hook.ProjectTree.SelectedNode;
            while (DBNode.Parent != null && DBNode.DataKeyString != "DB")
            {
                DBNode = DBNode.Parent;
            }
            if (DBNode.DataKeyString != "DB")
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据库节点失败!");
                return;
            }

            DevComponents.AdvTree.Node DtSetNode = new DevComponents.AdvTree.Node();  //数据集树节点
            #region 获取数据集节点
            if (DBNode.Text == "现势库" || DBNode.Text == "历史库" || DBNode.Text == "临时库") //.DataKeyString == "现势库"
            {
                //获取数据集节点
                DtSetNode = m_Hook.ProjectTree.SelectedNode;
                while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "FD")
                {
                    DtSetNode = DtSetNode.Parent;
                }
                if (DtSetNode.DataKeyString != "FD")
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!");
                    return;
                }
            }
            else if (DBNode.Text == "栅格数据库")
            {
                //cyf 20110626 add:获取栅格数据库图层节点
                DtSetNode = m_Hook.ProjectTree.SelectedNode;
                if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RC")
                {
                    while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "RC")
                    {
                        DtSetNode = DtSetNode.Parent;
                    }
                    if (DtSetNode.DataKeyString != "RC")
                    {
                        SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!");
                        return;
                    }
                }
                else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RD")
                {
                    while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "RD")
                    {
                        DtSetNode = DtSetNode.Parent;
                    }
                    if (DtSetNode.DataKeyString != "RD")
                    {
                        SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!");
                        return;
                    }
                }
                //end
            }
            #endregion


            XmlElement elementTemp   = (DBNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement;
            IWorkspace TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace;
            if (TempWorkSpace == null)
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!");
                return;
            }
            //cyf 20110625 modify
            ILayer player = null;
            //ILayer player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + ProjectNode.Text);
            if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD")
            {
                player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text);
            }
            else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC")
            {
                player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, DtSetNode.Text + "_" + ProjectNode.Text);
            }
            //cyf 20110626 add:添加获取栅格数据图层
            else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RC" || m_Hook.ProjectTree.SelectedNode.DataKeyString == "RD")
            {
                //获取栅格数据图层
                player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, DtSetNode.Text + "_" + ProjectNode.Text);
            }
            //end
            if (player != null)
            {
                m_Hook.MapControl.Map.DeleteLayer(player);
                m_Hook.TOCControl.Update();
            }
            //end

            IGroupLayer pGroupLayer = new GroupLayerClass();

            //cyf 20110625

            if (DBNode.Text == "现势库" || DBNode.Text == "历史库" || DBNode.Text == "临时库") //.DataKeyString == "现势库"
            {
                /////////若为历史库管理状态退出该状态,加载现势库
                m_Hook.MapControl.Map.ClearLayers();
                Plugin.Interface.ICommandRef HisBaseCommand = null;
                bool GetSeccess = Plugin.ModuleCommon.DicCommands.TryGetValue("GeoDBATool.ControlsDBHistoryManage", out HisBaseCommand);
                if (GetSeccess)
                {
                    HisCommand = HisBaseCommand as ControlsDBHistoryManage;
                    if (HisCommand.Checked)
                    {
                        HisCommand.IsHistory = false;//判断是不是历史库点的加载,若是现势库就卸载掉历史库,若是历史库就不操作
                        HisCommand.OnClick();
                    }
                }
                #region 加载数据
                SysCommon.Gis.SysGisDataSet sysGisDataset = new SysCommon.Gis.SysGisDataSet(TempWorkSpace);
                //cyf 20110625 modify
                IFeatureDataset featureDataset = null;        //数据集
                if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD")
                {
                    featureDataset = sysGisDataset.GetFeatureDataset(m_Hook.ProjectTree.SelectedNode.Text, out err);
                    if (err != null)
                    {
                        SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败,请检查该数据集是否存在!");
                        return;
                    }
                    pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text;
                }
                else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC")
                {
                    featureDataset = sysGisDataset.GetFeatureDataset(DtSetNode.Text, out err);
                    if (err != null)
                    {
                        SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败!");
                        return;
                    }
                    pGroupLayer.Name = DtSetNode.Text + "_" + ProjectNode.Text;
                }
                //end

                List <IDataset> lstDataset = sysGisDataset.GetFeatureClass(featureDataset);
                //遍历要素类,加载图层
                string dbType   = "";
                string userName = "";//用户名

                userName = elementTemp.GetAttribute("用户");
                dbType   = elementTemp.GetAttribute("类型");
                foreach (IDataset dataset in lstDataset)
                {
                    IFeatureClass pFeatureClass = dataset as IFeatureClass;
                    if (pFeatureClass == null)
                    {
                        continue;
                    }
                    IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                    if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation)
                    {
                        pFeatureLayer = new FDOGraphicsLayerClass();
                    }
                    pFeatureLayer.FeatureClass = pFeatureClass;
                    if (dbType.Trim().ToUpper() == "SDE")
                    {
                        //cyf 20110706 modify:修改为不去掉用户名 changed by xisheng 0906 去掉用户名
                        if (dataset.Name.ToUpper().Contains(userName.Trim().ToUpper()))
                        {
                            //SDE用户图层名去掉用户名
                            pFeatureLayer.Name = dataset.Name.Substring(userName.Trim().Length + 1);
                        }
                        else
                        {
                            pFeatureLayer.Name = dataset.Name;
                        }
                        //end
                    }
                    else
                    {
                        pFeatureLayer.Name = dataset.Name;
                    }
                    //cyf 20110625 modify
                    if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC")
                    {
                        //加载指定的图层
                        if (m_Hook.ProjectTree.SelectedNode.Text != pFeatureLayer.Name)
                        {
                            continue;
                        }
                    }
                    else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD")
                    {
                        //加载具备权限的图层
                        XmlElement feaclsElem = null;
                        try { feaclsElem = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; } catch { }
                        if (feaclsElem != null)
                        {
                            if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name))
                            {
                                //若不具备数据权限,则不进行加载
                                continue;
                            }
                        }
                    }
                    //end
                    pGroupLayer.Add(pFeatureLayer as ILayer);
                }

                m_Hook.MapControl.Map.AddLayer(pGroupLayer);
                #endregion
            }
            //else if (DBNode.Text == "历史库")
            //{
            //    //历史库加载
            //    //ModDBOperator.WriteLog("GetCommand");
            //    Plugin.Interface.ICommandRef HisBaseCommand = null;
            //    bool GetSeccess = Plugin.ModuleCommon.DicCommands.TryGetValue("GeoDBATool.ControlsDBHistoryManage", out HisBaseCommand);
            //    if (GetSeccess)
            //    {
            //        HisCommand = HisBaseCommand as ControlsDBHistoryManage;
            //        //判断是不是历史库点的加载,若是现势库就卸载掉历史库,若是历史库就不操作
            //        HisCommand.IsHistory = true;
            //        HisCommand.OnClick();
            //        if (HisCommand.MyControlHistoryBar != null)
            //        {
            //            string HisDBType = elementTemp.GetAttribute("类型");
            //            string[] strTemp = new string[] { elementTemp.GetAttribute("服务器"), elementTemp.GetAttribute("服务名"), elementTemp.GetAttribute("数据库"), elementTemp.GetAttribute("用户"), elementTemp.GetAttribute("密码"), elementTemp.GetAttribute("版本") };

            //            HisCommand.MyControlHistoryBar.AddHistoryData(strTemp, HisDBType);
            //        }
            //    }
            //}
            //加载sde数据后,注册版本
            //if (dbType.Trim().ToUpper() == "SDE")
            //{
            //    IDataset pFeaDt = featureDataset as IDataset;
            //    if (pFeaDt != null)
            //    {
            //        IVersionedObject pVerObj = pFeaDt as IVersionedObject;
            //        if (!pVerObj.IsRegisteredAsVersioned)
            //        {
            //            //注册版本
            //            pVerObj.RegisterAsVersioned(true);
            //        }
            //        else
            //        {
            //            pVerObj.RegisterAsVersioned(false);
            //        }
            //    }

            //}

            else if (DBNode.Text == "栅格数据库")
            {
                //栅格数据加载,分为两种情况:栅格数据集、栅格编目
                //cyf 20110625 modify
                pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text;
                //end
                string rasterDBType = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).GetAttribute("存储类型");

                elementTemp   = (DBNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement; //cyf 20110626
                TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace;
                if (TempWorkSpace == null)
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!");
                    return;
                }
                IRasterWorkspaceEx pRasterWS = TempWorkSpace as IRasterWorkspaceEx;
                if (pRasterWS == null)
                {
                    return;
                }
                //string feaclsName = (elementTemp.FirstChild as XmlElement).GetAttribute("名称");
                string feaclsName = m_Hook.ProjectTree.SelectedNode.Text;
                try
                {
                    if (rasterDBType.Trim() == "栅格编目")
                    {
                        //栅格编目数据加载
                        IRasterCatalog         pRasterCatalog = pRasterWS.OpenRasterCatalog(feaclsName);
                        IGdbRasterCatalogLayer pGDBRCLayer    = new GdbRasterCatalogLayerClass();
                        if (!pGDBRCLayer.Setup(pRasterCatalog as ITable))
                        {
                            return;
                        }
                        IFeatureLayer mFeaLayer = pGDBRCLayer as IFeatureLayer;
                        pGroupLayer.Add(mFeaLayer as ILayer);
                        //IFeatureClass pFeaCls = pRasterCatalog as IFeatureClass;
                        //if (pFeaCls == null) return;
                        //IFeatureCursor pFeaCursor=pFeaCls.Search(null,false);
                        //if(pFeaCursor==null) return;
                        //IFeature pFea=pFeaCursor.NextFeature();
                        //while (pFea != null)
                        //{
                        //    IRasterCatalogItem pRCItem = pFea as IRasterCatalogItem;
                        //    IRasterDataset pRasterDt = pRCItem.RasterDataset;
                        //    IRasterLayer mRasterLayer = new RasterLayerClass();
                        //    mRasterLayer.CreateFromDataset(pRasterDt);
                        //    if (mRasterLayer == null) return;
                        //    pGroupLayer.Add(mRasterLayer as ILayer);

                        //    pFea = pFeaCursor.NextFeature();

                        //    //IFeatureLayer pFeaLayer = new FeatureLayerClass();
                        //    //pFeaLayer.FeatureClass = pFeaCls as IFeatureClass;
                        //    //pFeaLayer.Name = feaclsName;
                        //    //pGroupLayer.Add(pFeaLayer as ILayer);
                        //}
                    }
                    else if (rasterDBType.Trim() == "栅格数据集")
                    {
                        //栅格数据集加载

                        IRasterDataset pRasterDataset = pRasterWS.OpenRasterDataset(feaclsName);
                        //IRasterPyramid pRasterPyramid = pRasterDataset as IRasterPyramid;
                        //if(!pRasterPyramid.Present)
                        //{
                        //    if (SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "未构建金字塔,是否构建金字塔?"))
                        //    {
                        //        pRasterPyramid.Create();
                        //    }
                        //}
                        IRasterLayer pRasterLayer = new RasterLayerClass();
                        pRasterLayer.CreateFromDataset(pRasterDataset);
                        if (pRasterLayer == null)
                        {
                            return;
                        }
                        pGroupLayer.Add(pRasterLayer as ILayer);
                    }
                    m_Hook.MapControl.Map.AddLayer(pGroupLayer);
                } catch (Exception e)
                {
                    //*******************************************************************
                    //guozheng added
                    if (ModData.SysLog != null)
                    {
                        ModData.SysLog.Write(e, null, DateTime.Now);
                    }
                    else
                    {
                        ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog();
                        ModData.SysLog.Write(e, null, DateTime.Now);
                    }
                    //********************************************************************

                    return;
                }
            }
            //对图层进行排序

            SysCommon.Gis.ModGisPub.LayersCompose(m_Hook.MapControl);

            //符号化 去掉加载的符号化 20111025 席胜

            //GeoUtilities.ControlsRenderLayerByMxd RenderLayerByMxd = new GeoUtilities.ControlsRenderLayerByMxd();
            //RenderLayerByMxd.OnCreate(m_Hook);
            //RenderLayerByMxd.OnClick();
        }
        /// <summary>
        /// 创建要素图层
        /// 也可以利用现有要素图层创建:IFeatureLayer featurelayer,
        /// </summary>
        /// <params name="map"></params>
        /// <params name="workspace"></params>
        /// <params name="layername"></params>
        /// <params name="aliasname"></params>
        /// <returns></returns>
        public IFeatureLayer CreateFeatureLayer(IMap map, IWorkspace workspace,
            string layername, string aliasname)
        {
            try
            {
                IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
                //IFields fields = featurelayer.FeatureClass.Fields;

                // 创建要素类的字段集
                IFields fields = new FieldsClass();
                IFieldsEdit fieldsEdit = (IFieldsEdit)fields;

                // 添加要素类必须字段:object ID 字段
                IField oidField = new FieldClass();
                IFieldEdit oidFieldEdit = (IFieldEdit)oidField;
                oidFieldEdit.Name_2 = "OBJECTID";
                oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID;
                fieldsEdit.AddField(oidField);

                // 创建几何定义(和空间参考)
                IGeometryDef geometryDef = new GeometryDefClass();
                IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
                geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
                //ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
                //ISpatialReference spatialReference =
                //spatialReferenceFactory.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_NAD1983UTM_20N);
                //ISpatialReferenceResolution spatialReferenceResolution = (ISpatialReferenceResolution)spatialReference;
                //spatialReferenceResolution.ConstructFromHorizon();
                //ISpatialReferenceTolerance spatialReferenceTolerance = (ISpatialReferenceTolerance)spatialReference;
                //spatialReferenceTolerance.SetDefaultXYTolerance();
                geometryDefEdit.SpatialReference_2 = map.SpatialReference;

                //添加几何字段
                IField geometryField = new FieldClass();
                IFieldEdit geometryFieldEdit = (IFieldEdit)geometryField;
                geometryFieldEdit.Name_2 = "Shape";
                geometryFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
                geometryFieldEdit.GeometryDef_2 = geometryDef;
                fieldsEdit.AddField(geometryField);

                //新建字段
                IField pField = new FieldClass();
                IFieldEdit pFieldEdit = pField as IFieldEdit;
                pFieldEdit.Length_2 = 50;
                pFieldEdit.Name_2 = "ID";
                pFieldEdit.AliasName_2 = "ID";
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                fieldsEdit.AddField(pField);

                //检查字段的有效性
                IFieldChecker fieldChecker = new FieldCheckerClass();
                IEnumFieldError enumFieldError = null;
                IFields validatedFields = null;
                fieldChecker.ValidateWorkspace = (IWorkspace)featureWorkspace;
                fieldChecker.Validate(fields, out enumFieldError, out validatedFields);

                IFeatureClass featureClass = featureWorkspace.CreateFeatureClass(layername, validatedFields, null, null,
                    esriFeatureType.esriFTSimple, "Shape", "");

                //用创建的要素类生成要素图层
                IFeatureLayer newFeaLayer = new FeatureLayerClass();
                newFeaLayer.FeatureClass = featureClass;
                newFeaLayer.Name = aliasname;

                //添加新建图层到相应图层组中
                IGroupLayer groupLayer = new GroupLayerClass();
                string groupLayerName = aliasname.Split("-".ToCharArray())[1].Trim();
                groupLayer = GetGroupLayerByName(groupLayerName);
                groupLayer.Add(newFeaLayer as ILayer);
                DataEditCommon.g_axTocControl.Update();
                DataEditCommon.g_pAxMapControl.Refresh();

                return newFeaLayer;
            }
            catch (Exception ex)
            {
                Log.Debug(ex.ToString());
                return null;
            }
        }
Example #27
0
        protected override void handleClick(  )
        {
            startHourGlass("Add Edit Layers");

            try
            {
                /* Value Map Renderer? */
                IMap mp = this.ext.FocusMap;

                IGroupLayer grp = null;
                // look up layer for fc
                try
                {
                    // to avoid first chance exceptions -- look for a group layer manually first
                    // this is a work-around for an ESRI bug ...
                    bool bGroup = false;
                    for (int i = 0; i < mp.LayerCount; i++)
                    {
                        if (mp.get_Layer(i) is IGroupLayer)
                        {
                            bGroup = true;
                            break;
                        }
                    }

                    if (bGroup)
                    {
                        UID uid = new UIDClass();
                        // IGroupLayer
                        uid.Value = "{EDAD6644-1810-11D1-86AE-0000F8751720}";
                        // may throw a 'A first chance exception of type
                        // 'System.Runtime.InteropServices.COMException' occurred in ISDUTLib.dll'
                        // seems to occur when there are not any group layers
                        IEnumLayer layers = mp.get_Layers(uid, true);
                        for (ILayer lyr = layers.Next(); lyr != null; lyr = layers.Next())
                        {
                            if (lyr is IGroupLayer && lyr.Name == EDITS_LAYER_GRP_NAME)
                            {
                                Logger.Write("Found layer Edits");
                                mp.DeleteLayer(lyr);
                                break;
                            }
                        }
                    }
                }
                catch(Exception e)
                {
                    Logger.Write(e);
                }

                // create it
                grp = new GroupLayerClass();
                grp.Name = "Edits";
                grp.Visible = true;
                grp.Expanded = false;
                mp.AddLayer(grp);

                IEnumDatasetName names = this.ext.TransactionManager.Current().PGDBConnection.get_DatasetNames(esriDatasetType.esriDTAny);
                for(IDatasetName curName = names.Next();curName!=null;curName = names.Next())
                {
                    string key = curName.Name;
                    if (key != null && !key.Equals("ISDUT_SPATIAL_EDIT_EXTENTS_SP") && !key.Equals("DATA_ERRORS") && !key.Equals("METADATA") && !key.StartsWith("P_") && !key.StartsWith("C_") && !key.StartsWith("E_"))
                    {
                        // we have a working layer

                        string editname = "E_" + key; // this.ext.TransactionManager.transactionConfig().get_EditIndicator(key);

                        IFeatureClass edit_fc = null;
                        try
                        {
                            edit_fc = ((IFeatureWorkspace)this.ext.TransactionManager.Current().PGDBConnection).OpenFeatureClass(editname);
                        }
                        catch(Exception e)
                        {
                            MessageBox.Show("PGDB Feature Class "+editname+" Not Found",
                                "EXCEPTION", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                            throw new HandledException(e);
                        }

                        if(edit_fc!=null)
                        {
                            try
                            {
                                // add layer
                                Logger.Write("Create Layer "+editname);
                                IFeatureLayer pFeatureLayer = new FeatureLayer();
                                pFeatureLayer.Name = editname;
                                pFeatureLayer.FeatureClass = edit_fc;
                                pFeatureLayer.SpatialReference = ((IGeoDataset)edit_fc).SpatialReference;

                                // setup renderer
                                // http://www.pitt.edu/~nisg/cis/web/cgi/rgb.html
                                IGeoFeatureLayer geoFeatureLayer = (IGeoFeatureLayer)pFeatureLayer;
                                IUniqueValueRenderer pRender = new UniqueValueRendererClass();
                                pRender.FieldCount = 1;
                                pRender.set_Field(0,EditsDAO.EDIT_STATE);
                                pRender.DefaultSymbol = ((ISimpleRenderer)geoFeatureLayer.Renderer).Symbol;
                                pRender.UseDefaultSymbol = true;

                                IRgbColor red = new RgbColorClass();
                                red.Red = 255;
                                IRgbColor orange = new RgbColorClass();
                                orange.Red = 255;
                                orange.Green = 165;
                                IRgbColor green = new RgbColorClass();
                                green.Green = 255;

                                ISymbol delSym = null;
                                ISymbol updSym = null;
                                ISymbol insSym = null;

                                switch (edit_fc.ShapeType)
                                {

                                    case esriGeometryType.esriGeometryPoint:
                                    case esriGeometryType.esriGeometryMultipoint:
                                        {
                                            ISimpleMarkerSymbol s = new SimpleMarkerSymbolClass();
                                            s.Style = esriSimpleMarkerStyle.esriSMSCircle;
                                            s.Size = 0.4;
                                            s.Color = red;
                                            delSym = (ISymbol)s;

                                            s = new SimpleMarkerSymbolClass();
                                            s.Style = esriSimpleMarkerStyle.esriSMSCircle;
                                            s.Size = 0.4;
                                            s.Color = orange;
                                            updSym = (ISymbol)s;

                                            s = new SimpleMarkerSymbolClass();
                                            s.Style = esriSimpleMarkerStyle.esriSMSCircle;
                                            s.Size = 0.4;
                                            s.Color = green;
                                            insSym = (ISymbol)s;
                                        }
                                        break;
                                    case esriGeometryType.esriGeometryLine:
                                    case esriGeometryType.esriGeometryPath:
                                    case esriGeometryType.esriGeometryPolyline:
                                        {
                                            ISimpleLineSymbol s = new SimpleLineSymbolClass();
                                            s.Style = esriSimpleLineStyle.esriSLSSolid;
                                            s.Width = 0.4;
                                            s.Color = red;
                                            delSym = (ISymbol)s;

                                            s = new SimpleLineSymbolClass();
                                            s.Style = esriSimpleLineStyle.esriSLSSolid;
                                            s.Width = 0.4;
                                            s.Color = orange;
                                            updSym = (ISymbol)s;

                                            s = new SimpleLineSymbolClass();
                                            s.Style = esriSimpleLineStyle.esriSLSSolid;
                                            s.Width = 0.4;
                                            s.Color = green;
                                            insSym = (ISymbol)s;
                                        }
                                        break;

                                    case esriGeometryType.esriGeometryPolygon:
                                    case esriGeometryType.esriGeometryRing:
                                    case esriGeometryType.esriGeometryMultiPatch:
                                    default:
                                        {
                                            ISimpleFillSymbol s = new SimpleFillSymbolClass();
                                            s.Style = esriSimpleFillStyle.esriSFSSolid;
                                            s.Outline.Width = 0.4;
                                            s.Color = red;
                                            delSym = (ISymbol)s;

                                            s = new SimpleFillSymbolClass();
                                            s.Style = esriSimpleFillStyle.esriSFSSolid;
                                            s.Outline.Width = 0.4;
                                            s.Color = orange;
                                            updSym = (ISymbol)s;

                                            s = new SimpleFillSymbolClass();
                                            s.Style = esriSimpleFillStyle.esriSFSSolid;
                                            s.Outline.Width = 0.4;
                                            s.Color = green;
                                            insSym = (ISymbol)s;
                                        }
                                        break;
                                }

                                Logger.Write("Setup Value Map Renderer");
                                // add values
                                pRender.AddValue(EditsDAO.DEL,EditsDAO.EDIT_STATE,delSym);
                                pRender.AddValue(EditsDAO.UPD,EditsDAO.EDIT_STATE,updSym);
                                pRender.AddValue(EditsDAO.INS,EditsDAO.EDIT_STATE,insSym);

                                geoFeatureLayer.Renderer = (IFeatureRenderer)pRender;

                                pFeatureLayer.Visible = true;
                                pFeatureLayer.Selectable = false;

                                Logger.Write("Adding layer "+editname);
                                grp.Add(pFeatureLayer);
                            }
                            catch(Exception e)
                            {
                                MessageBox.Show("Error Creating new Edit Layer "+editname+": "+e.Message,
                                    "EXCEPTION", MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                                throw new HandledException(e);
                            }
                        }
                    }
                }
            }
            finally
            {
                endHourGlass();
            }

            this.ext.MxDocument.UpdateContents();

            this.app.RefreshWindow();
        }
        private static IGroupLayer RefreshLayer(string catId, List<string> idahoIds, out bool unRecoverableError)
        {
            IGroupLayer groupLayer = new GroupLayerClass();
            groupLayer.Name = catId;
            foreach (var id in idahoIds)
            {
                var wmsMapLayer = CreateWmsMapLayer(id);

                if(wmsMapLayer == null)
                {
                    Jarvis.Logger.Info("An unknown issue occurred trying to establish a WMS layer link");
                    unRecoverableError = true;
                    return null;
                }

                // get wms service description
                var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription;

                ILayer wmsLayer = null;

                // add layers for the wms currently there will only be one.
                for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++)
                {
                    var layerDesc = serviceDesc.LayerDescription[i];

                    var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc);
                    for (var j = 0; j <= grpLayer.Count - 1; j++)
                    {
                        wmsLayer = wmsMapLayer;
                        wmsMapLayer.Name = id;
                    }
                }

                // turn on sub layers, add it to arcmap and move it to top of TOC
                SublayerVisibleOn(wmsLayer);
                groupLayer.Add(wmsLayer);
            }

            // No error occurred
            unRecoverableError = false;
            return groupLayer;
        }
Example #29
0
//added by chulili 20110719 根据数据集加载历史数据
        public void AddHistoryDataByFD(string[] strTemp, string strType)
        {
            Mapcontrol.ClearLayers();
            Toccontrol.Update();
            Application.DoEvents();

            //加载历史数据
            Exception err = null;

            SysCommon.Gis.SysGisDataSet sourceSysGisDataSet = new SysCommon.Gis.SysGisDataSet();
            switch (strType)
            {
            case "SDE":
                sourceSysGisDataSet.SetWorkspace(strTemp[0], strTemp[1], strTemp[2], strTemp[3], strTemp[4], strTemp[5], out err);
                break;

            case "PDB":
                sourceSysGisDataSet.SetWorkspace(strTemp[2], SysCommon.enumWSType.PDB, out err);
                break;

            case "GDB":
                sourceSysGisDataSet.SetWorkspace(strTemp[2], SysCommon.enumWSType.GDB, out err);
                break;
            }

            if (err != null)
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("连接数据库失败", "原因:" + err.Message);
                return;
            }
            //cyf 20110706 add
            DevComponents.AdvTree.Node ProjectNode = new DevComponents.AdvTree.Node();
            ProjectNode = m_ProTree.SelectedNode;
            while (ProjectNode.Parent != null)
            {
                ProjectNode = ProjectNode.Parent;
            }
            //cyf 20110625 add:
            DevComponents.AdvTree.Node DBNode = new DevComponents.AdvTree.Node(); //数据库树节点
            //获取数据库节点
            DBNode = m_ProTree.SelectedNode;
            while (DBNode.Parent != null && DBNode.DataKeyString != "DB")
            {
                DBNode = DBNode.Parent;
            }
            if (DBNode.DataKeyString != "DB")
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据库节点失败!");
                return;
            }

            DevComponents.AdvTree.Node DtSetNode = new DevComponents.AdvTree.Node(); //数据集树节点
            if (DBNode.Text == "现势库" || DBNode.Text == "历史库")                        //.DataKeyString == "现势库"
            {
                //获取数据集节点
                DtSetNode = m_ProTree.SelectedNode;
                while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "FD")
                {
                    DtSetNode = DtSetNode.Parent;
                }
                if (DtSetNode.DataKeyString != "FD")
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!");
                    return;
                }
            }
            //end
            //added by chulili 20110719
            XmlElement elementTemp   = (DBNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement;
            IWorkspace TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace;

            SysCommon.Gis.SysGisDataSet sysGisDataset  = new SysCommon.Gis.SysGisDataSet(TempWorkSpace);
            IFeatureDataset             featureDataset = null; //数据集
            IGroupLayer pGroupLayer = new GroupLayerClass();

            if (m_ProTree.SelectedNode.DataKeyString == "FD")
            {
                featureDataset = sysGisDataset.GetFeatureDataset(m_ProTree.SelectedNode.Text, out err);
                if (err != null)
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败,请检查该数据集是否存在!");
                    return;
                }
                pGroupLayer.Name = m_ProTree.SelectedNode.Text + "_" + ProjectNode.Text;
            }
            else if (m_ProTree.SelectedNode.DataKeyString == "FC")
            {
                featureDataset = sysGisDataset.GetFeatureDataset(DtSetNode.Text, out err);
                if (err != null)
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败!");
                    return;
                }
                pGroupLayer.Name = DtSetNode.Text + "_" + ProjectNode.Text;
            }
            List <IDataset> lstDataset = sysGisDataset.GetFeatureClass(featureDataset);
            //end added by chulili
            //List<string> lstNames = sourceSysGisDataSet.GetFeatureClassNames();
            XmlElement feaclsElem = null;

            try { feaclsElem = (m_ProTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; }
            catch { }

            foreach (IDataset dataset in lstDataset)
            {
                IFeatureClass pFeatureClass = dataset as IFeatureClass;
                if (pFeatureClass == null)
                {
                    continue;
                }
                IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation)
                {
                    pFeatureLayer = new FDOGraphicsLayerClass();
                }
                pFeatureLayer.FeatureClass = pFeatureClass;

                pFeatureLayer.Name = dataset.Name;
                if (m_ProTree.SelectedNode.DataKeyString == "FC")
                {
                    //加载指定的图层
                    if (m_ProTree.SelectedNode.Text != pFeatureLayer.Name)
                    {
                        continue;
                    }
                }
                else if (m_ProTree.SelectedNode.DataKeyString == "FD")
                {
                    if (feaclsElem != null)
                    {
                        if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name))
                        {
                            //若不具备数据权限,则不进行加载
                            continue;
                        }
                    }
                }
                pGroupLayer.Add(pFeatureLayer as ILayer);
            }
            Mapcontrol.Map.AddLayer(pGroupLayer);
            SysCommon.Gis.ModGisPub.LayersCompose(Mapcontrol);

            InitialSliderItem(Mapcontrol);
        }
        private void AddLayersToMap(IWorkspace ValidNcgmpDatabase, bool hasTopologyStuff, bool hasStationFunction, bool useRepresentation)
        {
            // Get references to the map for adding layers and tables
            IMxDocument MxDoc = (IMxDocument)ArcMap.Document;
            IMap thisMap = MxDoc.FocusMap;
            IStandaloneTableCollection thisMapTables = (IStandaloneTableCollection)thisMap;

            // Create a group layer
            IGroupLayer GeoMapGroupLayer = new GroupLayerClass();
            GeoMapGroupLayer.Name = "Geologic Map";

            if (hasTopologyStuff == true)
            {
                #region "GeologicMapTopology"
                ITopology geoMapTopo = commonFunctions.OpenTopology(ValidNcgmpDatabase,"GeologicMapTopology");
                ITopologyLayer geoMapTopoTL = new TopologyLayerClass();
                geoMapTopoTL.Topology = geoMapTopo;

                ILayer geoMapTopoL = (ILayer)geoMapTopoTL;
                geoMapTopoL.Name = "Geologic Map Topology";
                geoMapTopoL.Visible = false;

                // Minimizing the legend info in the Table of Contents is not trivial
                ILegendInfo geoMapTopoLegendInfo = (ILegendInfo)geoMapTopoL;
                ILegendGroup geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(0);
                geoMapTopoLegendGroup.Visible = false;
                geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(1);
                geoMapTopoLegendGroup.Visible = false;
                geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(2);
                geoMapTopoLegendGroup.Visible = false;

                GeoMapGroupLayer.Add(geoMapTopoL);

                #endregion
            }

            if (hasStationFunction == true)
            {
                // Create a Group layer
                IGroupLayer stationGroupLayer = new GroupLayerClass();
                stationGroupLayer.Name = "Station Data";

                #region "StationPoints"
                // Open a FeatureClass, set it to a FeatureLayer
                IFeatureClass stationFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "StationPoints");
                IFeatureLayer stationFL = new FeatureLayerClass();
                stationFL.FeatureClass = stationFC;

                // Configure the FeatureLayer
                stationFL.Name = "Stations";
                stationFL.DisplayField = "FieldID";

                // Collapse the legend for this layer
                ILegendInfo stationLegendInfo = (ILegendInfo)stationFL;
                ILegendGroup stationLegendGroup = stationLegendInfo.get_LegendGroup(0);
                stationLegendGroup.Visible = false;

                // Finally, add the layer to the group layer
                stationGroupLayer.Add(stationFL);

                #endregion

                // Repeat for all these FeatureClasses
                #region "SamplePoints"
                IFeatureClass sampleFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "SamplePoints");
                IFeatureLayer sampleFL = new FeatureLayerClass();
                sampleFL.FeatureClass = sampleFC;

                sampleFL.Name = "Samples";
                sampleFL.DisplayField = "FieldID";

                ILegendInfo sampleLegendInfo = (ILegendInfo)sampleFL;
                ILegendGroup sampleLegendGroup = sampleLegendInfo.get_LegendGroup(0);
                sampleLegendGroup.Visible = false;

                stationGroupLayer.Add(sampleFL);

                #endregion

                #region "OrientationDataPoints"
                IFeatureClass structureFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OrientationDataPoints");
                IFeatureLayer structureFL = new FeatureLayerClass();
                structureFL.FeatureClass = structureFC;

                structureFL.Name = "Orientation Data";
                structureFL.DisplayField = "Type";

                // Symbology, if representations are present
                if (useRepresentation == true)
                {
                    // FeatureLayer must be cast as a GeoFeatureLayer in order to access the Renderer
                    IGeoFeatureLayer structureGeoFL = (IGeoFeatureLayer)structureFL;

                    // Create a RepresentationClassRenderer, assign the appropriate RepresentationClass to it
                    IRepresentationRenderer structureRepRend = new RepresentationRendererClass();
                    structureRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "r_OrientationDataPoints");

                    // Assign the RepresentationClassRenderer to the GeoFeatureLayer
                    structureGeoFL.Renderer = (IFeatureRenderer)structureRepRend;

                    // Assign generic FeatureTemplates
                    commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, structureFL as ILayer, "OrientationDataPoints");
                }

                ILegendInfo structureLegendInfo = (ILegendInfo)structureFL;
                ILegendGroup structureLegendGroup = structureLegendInfo.get_LegendGroup(0);
                structureLegendGroup.Visible = false;

                stationGroupLayer.Add(structureFL);

                #endregion

                // Add the Group Layer to the main layer
                stationGroupLayer.Expanded = true;
                GeoMapGroupLayer.Add(stationGroupLayer);

                #region "Notes Table"
                ITable notesTable = commonFunctions.OpenTable(ValidNcgmpDatabase, "Notes");
                IStandaloneTable notesStandalone = new StandaloneTableClass();
                notesStandalone.Table = notesTable;

                notesStandalone.Name = "Notes";
                notesStandalone.DisplayField = "Type";

                thisMapTables.AddStandaloneTable(notesStandalone);

                #endregion

                #region "RelatedDocuments Table"
                ITable relatedDocsTable = commonFunctions.OpenTable(ValidNcgmpDatabase, "RelatedDocuments");
                IStandaloneTable relatedDocsStandalone = new StandaloneTableClass();
                relatedDocsStandalone.Table = relatedDocsTable;

                relatedDocsStandalone.Name = "Related Documents";
                relatedDocsStandalone.DisplayField = "Type";

                thisMapTables.AddStandaloneTable(relatedDocsStandalone);

                #endregion
            }

            if (hasTopologyStuff == true)
            {
                #region "OtherLines"
                IFeatureClass otherLinesFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OtherLines");
                IFeatureLayer otherLinesFL = new FeatureLayerClass();
                otherLinesFL.FeatureClass = otherLinesFC;

                otherLinesFL.Name = "Other Lines";
                otherLinesFL.DisplayField = "Type";

                if (useRepresentation == true)
                {
                    IGeoFeatureLayer otherLinesGeoFL = (IGeoFeatureLayer)otherLinesFL;

                    IRepresentationRenderer otherLinesRepRend = new RepresentationRendererClass();
                    otherLinesRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "r_OtherLines");

                    otherLinesGeoFL.Renderer = (IFeatureRenderer)otherLinesRepRend;

                    commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, otherLinesFL as ILayer, "OtherLines");
                }

                ILegendInfo otherLinesLegendInfo = (ILegendInfo)otherLinesFL;
                ILegendGroup otherLinesLegendGroup = otherLinesLegendInfo.get_LegendGroup(0);
                otherLinesLegendGroup.Visible = false;

                GeoMapGroupLayer.Add(otherLinesFL);

                #endregion

            }

            #region "ContactsAndFaults"
            IFeatureClass contactsAndFaultsFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "ContactsAndFaults");
            IFeatureLayer contactsAndFaultsFL = new FeatureLayerClass();
            contactsAndFaultsFL.FeatureClass = contactsAndFaultsFC;

            contactsAndFaultsFL.Name = "Contacts and Faults";
            contactsAndFaultsFL.DisplayField = "Type";

            if (useRepresentation == true)
            {
                // Set the layer renderer to use representations
                IGeoFeatureLayer contactsAndFaultsGeoFL = (IGeoFeatureLayer)contactsAndFaultsFL;

                IRepresentationRenderer contactsAndFaultsRepRend = new RepresentationRendererClass();
                contactsAndFaultsRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "r_ContactsAndFaults");

                contactsAndFaultsGeoFL.Renderer = (IFeatureRenderer)contactsAndFaultsRepRend;

                commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, contactsAndFaultsFL as ILayer, "ContactsAndFaults");
            }

            ILegendInfo contactsAndFaultsLegendInfo = (ILegendInfo)contactsAndFaultsFL;
            ILegendGroup contactsAndFaultsLegendGroup = contactsAndFaultsLegendInfo.get_LegendGroup(0);
            contactsAndFaultsLegendGroup.Visible = false;

            GeoMapGroupLayer.Add(contactsAndFaultsFL);

            #endregion

            if (hasTopologyStuff == true)
            {
                #region "OverlayPolys"
                IFeatureClass overlayPolysFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OverlayPolys");
                IFeatureLayer overlayPolysFL = new FeatureLayerClass();
                overlayPolysFL.FeatureClass = overlayPolysFC;

                overlayPolysFL.Name = "Overlay Polygons";
                overlayPolysFL.DisplayField = "MapUnit";

                ILegendInfo overlayPolysLegendInfo = (ILegendInfo)overlayPolysFL;
                ILegendGroup overlayPolysLegendGroup = overlayPolysLegendInfo.get_LegendGroup(0);
                overlayPolysLegendGroup.Visible = false;

                GeoMapGroupLayer.Add(overlayPolysFL);

                #endregion
            }

            #region "MapUnitPolys"
            IFeatureClass mapUnitPolysFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "MapUnitPolys");
            IFeatureLayer mapUnitPolysFL = new FeatureLayerClass();
            mapUnitPolysFL.FeatureClass = mapUnitPolysFC;

            mapUnitPolysFL.Name = "Distribution of Map Units";
            mapUnitPolysFL.DisplayField = "MapUnit";

            ILegendInfo mapUnitPolysLegendInfo = (ILegendInfo)mapUnitPolysFL;
            ILegendGroup mapUnitPolysLegendGroup = mapUnitPolysLegendInfo.get_LegendGroup(0);
            mapUnitPolysLegendGroup.Visible = false;

            GeoMapGroupLayer.Add(mapUnitPolysFL);
            #endregion

            if (hasTopologyStuff == true)
            {
                #region "DataSourcePolys"
                IFeatureClass dataSourcePolysFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "DataSourcePolys");
                IFeatureLayer dataSourcePolysFL = new FeatureLayerClass();
                dataSourcePolysFL.FeatureClass = dataSourcePolysFC;

                dataSourcePolysFL.Name = "Data Source Polys";
                dataSourcePolysFL.DisplayField = "DataSourceID";

                ILegendInfo dataSourcePolysLegendInfo = (ILegendInfo)dataSourcePolysFL;
                ILegendGroup dataSourcePolysLegendGroup = dataSourcePolysLegendInfo.get_LegendGroup(0);
                dataSourcePolysLegendGroup.Visible = false;

                GeoMapGroupLayer.Add(dataSourcePolysFL);

                #endregion
            }

            // Add the Geologic Map Group Layer to the map
            GeoMapGroupLayer.Expanded = true;
            thisMap.AddLayer(GeoMapGroupLayer);

            // Adjust the MapUnitPolys Renderer
            commonFunctions.UpdateMapUnitPolysRenderer(ValidNcgmpDatabase);

            // Adjust the MapUnitPolys Feature Templates
            commonFunctions.UpdateMapUnitPolysFeatureTemplates(ValidNcgmpDatabase);
        }
        private void AddLayersToMap(IWorkspace ValidNcgmpDatabase, bool useRepresentation) // bool hasTopologyStuff, bool hasStationFunction,
        {
            // Get references to the map for adding layers and tables
            IMxDocument MxDoc   = (IMxDocument)ArcMap.Document;
            IMap        thisMap = MxDoc.FocusMap;
            IStandaloneTableCollection thisMapTables = (IStandaloneTableCollection)thisMap;

            // Create a group layer
            IGroupLayer GeoMapGroupLayer = new GroupLayerClass();

            GeoMapGroupLayer.Name = "Geologic Map";

            // Create a group layer
            IGroupLayer StationGroupLayer = new GroupLayerClass();

            StationGroupLayer.Name = "Observation Data";

            //if (hasTopologyStuff == true)
            {
                #region "GeologicMapTopology"
                ITopology      geoMapTopo   = commonFunctions.OpenTopology(ValidNcgmpDatabase, "GeologicMapTopology");
                ITopologyLayer geoMapTopoTL = new TopologyLayerClass();
                geoMapTopoTL.Topology = geoMapTopo;

                ILayer geoMapTopoL = (ILayer)geoMapTopoTL;
                geoMapTopoL.Name    = "Geologic Map Topology";
                geoMapTopoL.Visible = false;

                // Minimizing the legend info in the Table of Contents is not trivial
                ILegendInfo  geoMapTopoLegendInfo  = (ILegendInfo)geoMapTopoL;
                ILegendGroup geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(0);
                geoMapTopoLegendGroup.Visible = false;
                geoMapTopoLegendGroup         = geoMapTopoLegendInfo.get_LegendGroup(1);
                geoMapTopoLegendGroup.Visible = false;
                geoMapTopoLegendGroup         = geoMapTopoLegendInfo.get_LegendGroup(2);
                geoMapTopoLegendGroup.Visible = false;

                GeoMapGroupLayer.Add(geoMapTopoL);

                #endregion
            }
            {
                #region "OrientationPoints"
                IFeatureClass orientationPointsFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OrientationPoints");
                IFeatureLayer orientationPointsFL = new FeatureLayerClass();
                orientationPointsFL.FeatureClass = orientationPointsFC;

                orientationPointsFL.Name         = "Orientation Points";
                orientationPointsFL.DisplayField = "Type";

                if (useRepresentation == true)
                {
                    // Set the layer renderer to use representations
                    IGeoFeatureLayer orientationPointsGeoFL = (IGeoFeatureLayer)orientationPointsFL;

                    IRepresentationRenderer orientationPointsRepRend = new RepresentationRendererClass();
                    orientationPointsRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "OrientationPoints_Rep");

                    orientationPointsGeoFL.Renderer = (IFeatureRenderer)orientationPointsRepRend;

                    commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, orientationPointsFL as ILayer, "OrientationPoints");
                }

                ILegendInfo  orientationPointsLegendInfo  = (ILegendInfo)orientationPointsFL;
                ILegendGroup orientationPointsLegendGroup = orientationPointsLegendInfo.get_LegendGroup(0);
                orientationPointsLegendGroup.Visible = false;

                StationGroupLayer.Add(orientationPointsFL);

                #endregion

                #region "ObservationData"
                string[] arr = new string[4]; // Initialize
                arr[0] = "Stations";          // Element 1
                arr[1] = "GenericPoints";     // Element 2
                arr[2] = "GenericSamples";    // Element 3
                arr[3] = "GeochronPoints";    // Element 4

                foreach (string s in arr)
                {
                    try
                    {
                        IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s);
                        IFeatureLayer FL = new FeatureLayerClass();
                        FL.FeatureClass = FC;

                        FL.Name    = s;
                        FL.Visible = false;

                        ILegendInfo  LegendInfo  = (ILegendInfo)FL;
                        ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0);
                        LegendGroup.Visible = false;

                        StationGroupLayer.Add(FL);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path    = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }

            //add station group layer to map document
            GeoMapGroupLayer.Add(StationGroupLayer);

            {
                #region "LinesWithoutRepresentations"
                string[] arr = new string[2]; // Initialize
                arr[0] = "CartographicLines"; // Element 1
                arr[1] = "IsoValueLines";     // Element 2

                foreach (string s in arr)
                {
                    try
                    {
                        IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s);
                        IFeatureLayer FL = new FeatureLayerClass();
                        FL.FeatureClass = FC;

                        FL.Name    = s;
                        FL.Visible = false;

                        ILegendInfo  LegendInfo  = (ILegendInfo)FL;
                        ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0);
                        LegendGroup.Visible = false;

                        GeoMapGroupLayer.Add(FL);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path    = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }
            {
                #region "LinesWithRepresentations"
                string[] arr = new string[2]; // Initialize
                arr[0] = "GeologicLines";     // Element 1
                arr[1] = "ContactsAndFaults"; // Element 2

                foreach (string s in arr)
                {
                    try
                    {
                        IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s);
                        IFeatureLayer FL = new FeatureLayerClass();
                        FL.FeatureClass = FC;

                        FL.Name = s;

                        if (useRepresentation == true)
                        {
                            // Set the layer renderer to use representations
                            IGeoFeatureLayer GeoFL = (IGeoFeatureLayer)FL;

                            IRepresentationRenderer RepRend = new RepresentationRendererClass();
                            RepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, s + "_Rep");

                            GeoFL.Renderer = (IFeatureRenderer)RepRend;

                            commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, FL as ILayer, s);
                        }

                        ILegendInfo  LegendInfo  = (ILegendInfo)FL;
                        ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0);
                        LegendGroup.Visible = false;

                        GeoMapGroupLayer.Add(FL);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path    = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }
            {
                #region "Polygons"
                string[] arr = new string[3]; // Initialize
                arr[0] = "DataSourcePolys";   // Element 1
                arr[1] = "MapUnitPolys";      // Element 2
                arr[2] = "OtherPolys";        // Element 3

                foreach (string s in arr)
                {
                    try
                    {
                        IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s);
                        IFeatureLayer FL = new FeatureLayerClass();
                        FL.FeatureClass = FC;

                        FL.Name = s;

                        ILegendInfo  LegendInfo  = (ILegendInfo)FL;
                        ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0);
                        LegendGroup.Visible = false;

                        GeoMapGroupLayer.Add(FL);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path    = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }
            {
                #region "Tables"
                string[] arr = new string[7];     // Initialize
                arr[0] = "DataSources";           // Element 1
                arr[1] = "DescriptionOfMapUnits"; // Element 2
                arr[2] = "ExtendedAttributes";    // Element 3
                arr[3] = "GeologicEvents";        // Element 4
                arr[4] = "Glossary";              // Element 5
                arr[5] = "Notes";                 // Element 6
                arr[6] = "StandardLithology";     // Element 7
                foreach (string s in arr)
                {
                    try
                    {
                        ITable           Table      = commonFunctions.OpenTable(ValidNcgmpDatabase, s);
                        IStandaloneTable Standalone = new StandaloneTableClass();
                        Standalone.Table = Table;

                        Standalone.Name = s;

                        thisMapTables.AddStandaloneTable(Standalone);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path    = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }

            // Add the Geologic Map Group Layer to the map
            GeoMapGroupLayer.Expanded = true;
            thisMap.AddLayer(GeoMapGroupLayer);

            // Adjust the MapUnitPolys Renderer
            commonFunctions.UpdateMapUnitPolysRenderer(ValidNcgmpDatabase);

            // Adjust the MapUnitPolys Feature Templates
            commonFunctions.UpdateMapUnitPolysFeatureTemplates(ValidNcgmpDatabase);
        }
Example #32
0
        //读取原始数据并添加到grouplayer列表中
        public void LoadOriginData(string path, int groupNumber)
        {
            IWorkspaceFactory shpFactory = new ShapefileWorkspaceFactoryClass();
            IFeatureWorkspace shpFeaWksp = shpFactory.OpenFromFile(path, 0) as IFeatureWorkspace;
            IFeatureClass fcPoint = shpFeaWksp.OpenFeatureClass(pointFile);
            IFeatureClass fcLine = shpFeaWksp.OpenFeatureClass(lineFile);
            IFeatureClass fcPlygon = shpFeaWksp.OpenFeatureClass(polygonFile);

            IFeatureLayer lyPoint = new FeatureLayerClass();
            lyPoint.FeatureClass = fcPoint;
            IFeatureLayer lyLine = new FeatureLayerClass();
            lyLine.FeatureClass = fcLine;
            IFeatureLayer lyPlygon = new FeatureLayerClass();
            lyPlygon.FeatureClass = fcPlygon;

            IGroupLayer grpLayer = new GroupLayerClass();
            grpLayer.Name = "grp" + groupNumber.ToString() + "ext0";
            grpLayer.Add(lyPoint);
            grpLayer.Add(lyLine);
            grpLayer.Add(lyPlygon);

            avlbLayers.Add(grpLayer);
        }
        public override void OnClick()
        {
            //当前所有范围面,用来设置数据显示范围
            IFeatureLayer pRangeFeatLay = null;
            IFeatureLayer pFeatureLayer = null;
            IFeatureClass pFeatureClass = null;
            Exception     exError       = null;

            //如果工作库数据group图层已经存在 就不让再加了
            for (int i = 0; i < _AppHk.MapControl.LayerCount; i++)
            {
                ILayer mLayer = _AppHk.MapControl.get_Layer(i);
                if (mLayer is IGroupLayer)
                {
                    if (mLayer.Name == "现势库数据")
                    {
                        SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "现势库数据图层已经存在。");
                        return;
                    }
                }
            }

            Plugin.Application.IAppFormRef pArrForm = _AppHk as Plugin.Application.IAppFormRef;
            pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.WaitCursor;
            //获取更新库体数据集
            if (_AppHk.DBXmlDocument == null)
            {
                pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default;
                return;
            }
            XmlNode DBNode = _AppHk.DBXmlDocument.SelectSingleNode(".//项目工程");

            if (DBNode == null)
            {
                return;
            }
            XmlElement DBElement = DBNode as XmlElement;
            XmlElement objNode   = DBNode.SelectSingleNode(".//目标数据连接") as XmlElement;

            SysCommon.Gis.SysGisDataSet pObjSysGisDataSet = new SysCommon.Gis.SysGisDataSet();
            pObjSysGisDataSet.SetWorkspace(objNode.GetAttribute("服务器"), objNode.GetAttribute("服务名"), objNode.GetAttribute("数据库"), objNode.GetAttribute("用户"), objNode.GetAttribute("密码"), objNode.GetAttribute("版本"), out exError);
            if (exError != null)
            {
                pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default;
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "现势库数据连接失败,请确认");
                return;
            }
            //获取数据显示范围
            IGeometry pGeometry = null;

            pRangeFeatLay = ModDBOperator.GetMapFrameLayer("zone", _AppHk.MapControl, "示意图") as IFeatureLayer;
            if (pRangeFeatLay == null)
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获取数据显示范围!");
                return;
            }
            //判断当前是否有示提交的范围面
            IFeatureCursor pFeatureCursor = pRangeFeatLay.Search(null, false);

            if (pFeatureCursor != null)
            {
                IFeature pFeature = pFeatureCursor.NextFeature();
                while (pFeature != null)
                {
                    if (pGeometry == null)
                    {
                        pGeometry = pFeature.Shape;
                    }
                    else
                    {
                        pGeometry = (pGeometry as ITopologicalOperator).Union(pFeature.Shape);
                    }
                    pFeature = pFeatureCursor.NextFeature();
                }
            }
            if (pGeometry == null)
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获取数据显示范围!");
                return;
            }
            //获取所有更新数据的FeatureClass
            IFeatureDataset pFeaDataset = pObjSysGisDataSet.GetFeatureDataset("c_njtdt", out exError);// 这个地方要素集的名称是写死的 暂时没有办法获得工作库的信息 需要修改 陈新伟 20091211

            if (pFeaDataset == null)
            {
                pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default;
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获得指定的现势库数据【C_NJTDT】。");//yjl20120503
                return;
            }

            //符号化类
            //SymbolLyr symLyr = new SymbolLyr();   //@@@

            List <IDataset> listFC = pObjSysGisDataSet.GetFeatureClass(pFeaDataset);
            IGroupLayer     pLayer = new GroupLayerClass();

            pLayer.Name = "现势库数据";

            foreach (IDataset pDataset in listFC)
            {
                pFeatureClass = pDataset as IFeatureClass;
                if (pFeatureClass == null)
                {
                    continue;
                }
                pFeatureLayer = new FeatureLayerClass();
                if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation)
                {
                    pFeatureLayer = new FDOGraphicsLayerClass();
                }

                pFeatureLayer.FeatureClass = pFeatureClass;
                pFeatureLayer.Name         = pDataset.Name;
                pFeatureLayer.ScaleSymbols = false;
                //pFeatureLayer = ModDBOperator.GetSelectionLayer(pTempFeatureLayer, pGeometry);
                //if (pFeatureLayer == null) return;

                //符号化图层
                //symLyr.SymbolFeatrueLayer(pFeatureLayer);     //@@@

                //收缩图例
                if (pFeatureClass.FeatureType == esriFeatureType.esriFTSimple)
                {
                    ModDBOperator.ExpandLegend(pFeatureLayer as ILayer, false);
                }
                pLayer.Add(pFeatureLayer as ILayer);
            }
            _AppHk.MapControl.Map.AddLayer(pLayer);
            pObjSysGisDataSet.CloseWorkspace(true);

            //对图层进行排序
            SysCommon.Gis.ModGisPub.LayersCompose(pLayer);

            //将图幅结合表置于底层
            //ModDBOperator.MoveMapFrameLayer(_AppHk.MapControl);
            _AppHk.TOCControl.Update();
            _AppHk.MapControl.Map.ClipGeometry = pGeometry;
            _AppHk.MapControl.ActiveView.Refresh();

            pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default;
        }
        // bool hasTopologyStuff, bool hasStationFunction,
        private void AddLayersToMap(IWorkspace ValidNcgmpDatabase, bool useRepresentation)
        {
            // Get references to the map for adding layers and tables
            IMxDocument MxDoc = (IMxDocument)ArcMap.Document;
            IMap thisMap = MxDoc.FocusMap;
            IStandaloneTableCollection thisMapTables = (IStandaloneTableCollection)thisMap;

            // Create a group layer
            IGroupLayer GeoMapGroupLayer = new GroupLayerClass();
            GeoMapGroupLayer.Name = "Geologic Map";

            // Create a group layer
            IGroupLayer StationGroupLayer = new GroupLayerClass();
            StationGroupLayer.Name = "Observation Data";

            //if (hasTopologyStuff == true)
            {
                #region "GeologicMapTopology"
                ITopology geoMapTopo = commonFunctions.OpenTopology(ValidNcgmpDatabase, "GeologicMapTopology");
                ITopologyLayer geoMapTopoTL = new TopologyLayerClass();
                geoMapTopoTL.Topology = geoMapTopo;

                ILayer geoMapTopoL = (ILayer)geoMapTopoTL;
                geoMapTopoL.Name = "Geologic Map Topology";
                geoMapTopoL.Visible = false;

                // Minimizing the legend info in the Table of Contents is not trivial
                ILegendInfo geoMapTopoLegendInfo = (ILegendInfo)geoMapTopoL;
                ILegendGroup geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(0);
                geoMapTopoLegendGroup.Visible = false;
                geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(1);
                geoMapTopoLegendGroup.Visible = false;
                geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(2);
                geoMapTopoLegendGroup.Visible = false;

                GeoMapGroupLayer.Add(geoMapTopoL);

                #endregion
            }
            {
                #region "OrientationPoints"
                IFeatureClass orientationPointsFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OrientationPoints");
                IFeatureLayer orientationPointsFL = new FeatureLayerClass();
                orientationPointsFL.FeatureClass = orientationPointsFC;

                orientationPointsFL.Name = "Orientation Points";
                orientationPointsFL.DisplayField = "Type";

                if (useRepresentation == true)
                {
                    // Set the layer renderer to use representations
                    IGeoFeatureLayer orientationPointsGeoFL = (IGeoFeatureLayer)orientationPointsFL;

                    IRepresentationRenderer orientationPointsRepRend = new RepresentationRendererClass();
                    orientationPointsRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "OrientationPoints_Rep");

                    orientationPointsGeoFL.Renderer = (IFeatureRenderer)orientationPointsRepRend;

                    commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, orientationPointsFL as ILayer, "OrientationPoints");
                }

                ILegendInfo orientationPointsLegendInfo = (ILegendInfo)orientationPointsFL;
                ILegendGroup orientationPointsLegendGroup = orientationPointsLegendInfo.get_LegendGroup(0);
                orientationPointsLegendGroup.Visible = false;

                StationGroupLayer.Add(orientationPointsFL);

                #endregion

                #region "ObservationData"
                string[] arr = new string[4]; // Initialize
                arr[0] = "Stations";               // Element 1
                arr[1] = "GenericPoints";               // Element 2
                arr[2] = "GenericSamples";             // Element 3
                arr[3] = "GeochronPoints";              // Element 4

                foreach (string s in arr)
                {
                    try
                    {
                        IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s);
                        IFeatureLayer FL = new FeatureLayerClass();
                        FL.FeatureClass = FC;

                        FL.Name = s;
                        FL.Visible = false;

                        ILegendInfo LegendInfo = (ILegendInfo)FL;
                        ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0);
                        LegendGroup.Visible = false;

                        StationGroupLayer.Add(FL);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion

            }

            //add station group layer to map document
            GeoMapGroupLayer.Add(StationGroupLayer);

            {
                #region "LinesWithoutRepresentations"
                string[] arr = new string[2]; // Initialize
                arr[0] = "CartographicLines";               // Element 1
                arr[1] = "IsoValueLines";               // Element 2

                foreach (string s in arr)
                {
                    try
                    {
                        IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s);
                        IFeatureLayer FL = new FeatureLayerClass();
                        FL.FeatureClass = FC;

                        FL.Name = s;
                        FL.Visible = false;

                        ILegendInfo LegendInfo = (ILegendInfo)FL;
                        ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0);
                        LegendGroup.Visible = false;

                        GeoMapGroupLayer.Add(FL);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }
            {
                #region "LinesWithRepresentations"
                string[] arr = new string[2]; // Initialize
                arr[0] = "GeologicLines";               // Element 1
                arr[1] = "ContactsAndFaults";               // Element 2

                foreach (string s in arr)
                {
                    try {
                        IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s);
                        IFeatureLayer FL = new FeatureLayerClass();
                        FL.FeatureClass = FC;

                        FL.Name = s;

                        if (useRepresentation == true)
                        {
                            // Set the layer renderer to use representations
                            IGeoFeatureLayer GeoFL = (IGeoFeatureLayer)FL;

                            IRepresentationRenderer RepRend = new RepresentationRendererClass();
                            RepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, s + "_Rep");

                            GeoFL.Renderer = (IFeatureRenderer)RepRend;

                            commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, FL as ILayer, s);
                        }

                        ILegendInfo LegendInfo = (ILegendInfo)FL;
                        ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0);
                        LegendGroup.Visible = false;

                        GeoMapGroupLayer.Add(FL);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }
            {
                #region "Polygons"
                string[] arr = new string[3]; // Initialize
                arr[0] = "DataSourcePolys";               // Element 1
                arr[1] = "MapUnitPolys";               // Element 2
                arr[2] = "OtherPolys";               // Element 3

                foreach (string s in arr)
                {
                    try {
                        IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s);
                        IFeatureLayer FL = new FeatureLayerClass();
                        FL.FeatureClass = FC;

                        FL.Name = s;

                        ILegendInfo LegendInfo = (ILegendInfo)FL;
                        ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0);
                        LegendGroup.Visible = false;

                        GeoMapGroupLayer.Add(FL);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }
            {
                #region "Tables"
                string[] arr = new string[7]; // Initialize
                arr[0] = "DataSources";               // Element 1
                arr[1] = "DescriptionOfMapUnits";               // Element 2
                arr[2] = "ExtendedAttributes";             // Element 3
                arr[3] = "GeologicEvents";              // Element 4
                arr[4] = "Glossary";              // Element 5
                arr[5] = "Notes";              // Element 6
                arr[6] = "StandardLithology";              // Element 7
                foreach (string s in arr)
                {
                    try {
                        ITable Table = commonFunctions.OpenTable(ValidNcgmpDatabase, s);
                        IStandaloneTable Standalone = new StandaloneTableClass();
                        Standalone.Table = Table;

                        Standalone.Name = s;

                        thisMapTables.AddStandaloneTable(Standalone);
                    }
                    catch (Exception ex)
                    {
                        // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt
                        string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt");
                        string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n";
                        System.IO.File.AppendAllText(path, message);
                    }
                }

                #endregion
            }

            // Add the Geologic Map Group Layer to the map
            GeoMapGroupLayer.Expanded = true;
            thisMap.AddLayer(GeoMapGroupLayer);

            // Adjust the MapUnitPolys Renderer
            commonFunctions.UpdateMapUnitPolysRenderer(ValidNcgmpDatabase);

            // Adjust the MapUnitPolys Feature Templates
            commonFunctions.UpdateMapUnitPolysFeatureTemplates(ValidNcgmpDatabase);
        }
Example #35
0
        //区分行政区
        public static void AddMapOfByXZQ(IMap inMap, string inType, string ZTMC, IMap inSourceMap, string inXZQMC)
        {
            IMapLayers inMapLayers = inMap as IMapLayers;

            if (!File.Exists(LayerXMLpath))
            {
                return;
            }
            XmlDocument cXmlDoc = new XmlDocument();

            cXmlDoc.Load(LayerXMLpath);
            if (cXmlDoc == null)
            {
                return;
            }
            string xpath = "";

            if (ZTMC == "")//规划不分年度
            {
                xpath = "//DIR[@DIRType='" + inType + "']";
            }
            else//现状分年度专题
            {
                xpath = "//DIR[@DIRType='" + inType + "' and @NodeText='" + ZTMC + "']";
            }
            XmlNode xn = cXmlDoc.SelectSingleNode(xpath);

            if (xn == null)
            {
                return;
            }
            inMap.Name = xn.Attributes["NodeText"].Value; //设置地图名称
            string xzqmc = getXIAN(inXZQMC);              //从不同级别的行政区获得县名称,以获得数据

            if (xzqmc == null)
            {
                return;
            }
            if (ZTMC != "")//区分现状和规划
            {
                string nxzq = ModGetData.AttrValueByXpath("//SpecialXZQ[@ZTMC='" + ZTMC + "']", "New");
                if (nxzq != "")
                {
                    if (nxzq.Contains(xzqmc))
                    {
                        xzqmc = ModGetData.AttrValueByXpath("//SpecialXZQ[@ZTMC='" + ZTMC + "']", "Old");
                    }

                    if (xzqmc == "")
                    {
                        return;
                    }
                }
            }
            XmlNode xnXZQ = xn.SelectSingleNode(".//DataDIR[contains(@NodeText,'" + xzqmc + "')]");

            if (xnXZQ == null)
            {
                return;
            }
            IGroupLayer gLayer = new GroupLayerClass();

            gLayer.Name = xnXZQ.Attributes["NodeText"].Value;
            XmlNodeList xnl = xnXZQ.SelectNodes(".//Layer");

            foreach (XmlNode pxn in xnl)
            {
                string nodeKey = pxn.Attributes["NodeKey"].Value;
                ILayer pLayer  = GetLayerByNodeKey(inSourceMap, nodeKey);
                if (pLayer != null)
                {
                    gLayer.Add(pLayer);
                }
            }
            if ((gLayer as ICompositeLayer).Count != 0)
            {
                if (!isExistGpLyr(inMap, gLayer.Name))
                {
                    inMapLayers.InsertLayer(gLayer as ILayer, false, inMapLayers.LayerCount);
                }
            }
            cXmlDoc = null;
        }
Example #36
0
        private void AddShapesFromDirToFocusMap(string dir, string grouplayername)
        {
            // Start tool for download from WFS service
            try
            {
                IWorkspaceFactory workspaceFactoryShape = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass();
                IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactoryShape.OpenFromFile(dir, 0);

                IGroupLayer groupLayer = new GroupLayerClass();
                groupLayer.Name = grouplayername;
                IEnumDatasetName enumDatasetName = ((IWorkspace)featureWorkspace).get_DatasetNames(esriDatasetType.esriDTFeatureClass);
                IDatasetName featureDatasetName = (IDatasetName)enumDatasetName.Next();
                while (featureDatasetName != null)
                {
                    IFeatureLayer featureLayer = new FeatureLayerClass();
                    featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(featureDatasetName.Name);
                    featureLayer.Name = featureDatasetName.Name;
                    groupLayer.Add(featureLayer);
                    featureDatasetName = (IDatasetName)enumDatasetName.Next();
                }
                IMxDocument mxDoc = (IMxDocument)m_application.Document;
                IMap map = (IMap)mxDoc.FocusMap;
                IActiveView activeView = (IActiveView)map;
                map.AddLayer(groupLayer);
                mxDoc.UpdateContents();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Example #37
0
        /// <summary>
        /// 加载工作空间的方法进行封装,以便在空间数据库中调用(Personal Geodatabase、文件地理数据库、ArcSDE空间数据库)
        /// </summary>
        /// <param name="pWorkspace"></param>
        /// <param name="pMapControl"></param>
        private void AddAllDataset(IWorkspace pWorkspace, AxMapControl pMapControl)
        {
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);

            pEnumDataset.Reset();

            // 将Enum数据集中的数据一个一个地读到DataSet中
            IDataset pDataset = pEnumDataset.Next();

            // 判断数据集是否有数据
            while (pDataset != null)
            {
                // 要素数据集
                if (pDataset is IFeatureDataset)
                {
                    IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
                    IFeatureDataset   pFeatureDataset   = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
                    IEnumDataset      pEnumDataset1     = pFeatureDataset.Subsets;
                    pEnumDataset1.Reset();
                    IGroupLayer pGroupLayer = new GroupLayerClass();
                    pGroupLayer.Name = pFeatureDataset.Name;
                    IDataset pDataset1 = pEnumDataset1.Next();
                    while (pDataset1 != null)
                    {
                        // 要素类
                        if (pDataset1 is IFeatureClass)
                        {
                            IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                            pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
                            if (pFeatureLayer.FeatureClass != null)
                            {
                                pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                                pGroupLayer.Add(pFeatureLayer);
                                pMapControl.Map.AddLayer(pFeatureLayer);
                            }
                        }
                        pDataset1 = pEnumDataset1.Next();
                    }
                }
                else if (pDataset is IFeatureClass) //要素类
                {
                    IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
                    IFeatureLayer     pFeatureLayer     = new FeatureLayerClass();
                    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);

                    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                    pMapControl.Map.AddLayer(pFeatureLayer);
                }
                else if (pDataset is IRasterDataset) //栅格数据集
                {
                    IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace;
                    IRasterDataset     pRasterDataset   = pRasterWorkspace.OpenRasterDataset(pDataset.Name);
                    //影像金字塔判断与创建
                    IRasterPyramid3 pRasPyrmid;
                    pRasPyrmid = pRasterDataset as IRasterPyramid3;
                    if (pRasPyrmid != null)
                    {
                        if (!(pRasPyrmid.Present))
                        {
                            pRasPyrmid.Create(); //创建金字塔
                        }
                    }
                    IRasterLayer pRasterLayer = new RasterLayerClass();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    ILayer pLayer = pRasterLayer as ILayer;
                    pMapControl.AddLayer(pLayer, 0);
                }
                pDataset = pEnumDataset.Next();
            }

            pMapControl.ActiveView.Refresh();
            // 同步鹰眼
            SynchronizeEagleEye();
        }
Example #38
0
        public void AddHistoryData(string[] strTemp, string strType)
        {
            Mapcontrol.ClearLayers();
            Toccontrol.Update();
            Application.DoEvents();

            //加载历史数据
            Exception err = null;

            SysCommon.Gis.SysGisDataSet sourceSysGisDataSet = new SysCommon.Gis.SysGisDataSet();
            switch (strType)
            {
            case "SDE":
                sourceSysGisDataSet.SetWorkspace(strTemp[0], strTemp[1], strTemp[2], strTemp[3], strTemp[4], strTemp[5], out err);
                break;

            case "PDB":
                sourceSysGisDataSet.SetWorkspace(strTemp[2], SysCommon.enumWSType.PDB, out err);
                break;

            case "GDB":
                sourceSysGisDataSet.SetWorkspace(strTemp[2], SysCommon.enumWSType.GDB, out err);
                break;
            }
            string WsUsername = strTemp[3];//记录用户名 席胜20111020

            if (err != null)
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("连接数据库失败", "原因:" + err.Message);
                return;
            }
            //cyf 20110706 add
            DevComponents.AdvTree.Node ProjectNode = new DevComponents.AdvTree.Node();
            ProjectNode = m_ProTree.SelectedNode;
            while (ProjectNode.Parent != null)
            {
                ProjectNode = ProjectNode.Parent;
            }
            //cyf 20110625 add:
            DevComponents.AdvTree.Node DBNode = new DevComponents.AdvTree.Node(); //数据库树节点
            //获取数据库节点
            DBNode = m_ProTree.SelectedNode;
            while (DBNode.Parent != null && DBNode.DataKeyString != "DB")
            {
                DBNode = DBNode.Parent;
            }
            if (DBNode.DataKeyString != "DB")
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据库节点失败!");
                return;
            }

            DevComponents.AdvTree.Node DtSetNode = new DevComponents.AdvTree.Node(); //数据集树节点
            if (DBNode.Text == "现势库" || DBNode.Text == "历史库")                        //.DataKeyString == "现势库"
            {
                //获取数据集节点
                DtSetNode = m_ProTree.SelectedNode;
                while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "FD")
                {
                    DtSetNode = DtSetNode.Parent;
                }
                if (DtSetNode.DataKeyString != "FD")
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!");
                    return;
                }
            }
            //end

            //List<string> lstNames = sourceSysGisDataSet.GetFeatureClassNames();
            //if (lstNames == null) return;
            //foreach (string name in lstNames)
            //{
            //    if (name.EndsWith("_GOH"))
            //    {
            //        IFeatureClass featCls = sourceSysGisDataSet.GetFeatureClass(name, out err);
            //        IFeatureLayer pFeatureLayer = new FeatureLayerClass();
            //        if (featCls.FeatureType == esriFeatureType.esriFTAnnotation)
            //        {
            //            pFeatureLayer = new FDOGraphicsLayerClass();
            //        }

            //        pFeatureLayer.FeatureClass = featCls;
            //        //cyf 20110706 modify:不去掉图层名
            //        //if (strTemp[3].Trim() != "")
            //        //{
            //        //    if ((featCls as IDataset).Name.ToUpper().Contains(strTemp[3].Trim().ToUpper()))
            //        //    {
            //        //        //SDE,图层名带用户名,应该去掉
            //        //        pFeatureLayer.Name = (featCls as IDataset).Name.Substring(strTemp[3].Trim().Length+1);
            //        //    }
            //        //}
            //        //else
            //        //{
            //            pFeatureLayer.Name = (featCls as IDataset).Name;
            //        //}
            //        //end
            //        //cyf 20110705 add
            //        //加载具备权限的图层
            //        XmlElement feaclsElem = null;
            //        try { feaclsElem = (m_ProTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; } catch { }

            //        if (feaclsElem != null)
            //        {
            //            if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name))
            //            {
            //                //若不具备数据权限,则不进行加载
            //                continue;
            //            }
            //        }
            //        //end
            //        Mapcontrol.Map.AddLayer(pFeatureLayer as ILayer);
            //    }
            //}

            //lstNames = sourceSysGisDataSet.GetAllFeatureDatasetNames();
            //foreach (string name in lstNames)
            //{
            //    if (!name.EndsWith("_GOH"))
            //    {
            //        continue;
            //    }
            //    //cyf 20110706 modify
            //    IGroupLayer pGroupLayer = new GroupLayerClass();
            //    IFeatureDataset featureDataset = null;        //数据集
            //    if (m_ProTree.SelectedNode.DataKeyString == "FD")
            //    {
            //        featureDataset = sourceSysGisDataSet.GetFeatureDataset(m_ProTree.SelectedNode.Text, out err);
            //        if (err != null)
            //        {
            //            SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败,请检查历史库是否存在!");
            //            return;
            //        }
            //        pGroupLayer.Name = m_ProTree.SelectedNode.Text + "_" + ProjectNode.Text;
            //    }
            //    else if (m_ProTree.SelectedNode.DataKeyString == "FC")
            //    {
            //        featureDataset = sourceSysGisDataSet.GetFeatureDataset(DtSetNode.Text, out err);
            //        if (err != null)
            //        {
            //            SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败!");
            //            return;
            //        }
            //        pGroupLayer.Name = DtSetNode.Text + "_" + ProjectNode.Text;
            //    }
            //    //end
            IGroupLayer pGroupLayer = new GroupLayerClass();

            pGroupLayer.Name = m_ProTree.SelectedNode.Text + "_" + ProjectNode.Text;
            IFeatureDataset pFeatureDataset = sourceSysGisDataSet.GetFeatureDataset(DtSetNode.Text, out err);
            IEnumDataset    pEnumDs         = pFeatureDataset.Subsets;

            pEnumDs.Reset();
            IDataset pDs = pEnumDs.Next();

            //ModDBOperator.WriteLog("while start");
            while (pDs != null)
            {
                IFeatureClass featCls       = pDs as IFeatureClass;
                IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                if (featCls.FeatureType == esriFeatureType.esriFTAnnotation)
                {
                    pFeatureLayer = new FDOGraphicsLayerClass();
                }
                pFeatureLayer.FeatureClass = featCls;
                //去用户名 xisheng 0906
                if (strTemp[3].Trim() != "")
                {
                    if (pDs.Name.ToUpper().Contains(strTemp[3].Trim().ToUpper()))
                    {
                        //SDE,图层名带用户名,应该去掉
                        pFeatureLayer.Name = pDs.Name.Substring(strTemp[3].Trim().Length + 1);
                    }
                }
                else
                {
                    pFeatureLayer.Name = pDs.Name;
                }
                //end
                //pFeatureLayer.Name = pDs.Name;
                //cyf 20110705 add
                //加载具备权限的图层
                XmlElement feaclsElem = null;
                if (m_ProTree.SelectedNode.DataKeyString == "FC")
                {
                    //加载指定的图层
                    if (m_ProTree.SelectedNode.Text != pFeatureLayer.Name)
                    {
                        pDs = pEnumDs.Next();
                        continue;
                    }
                    else
                    {
                        pGroupLayer.Add(pFeatureLayer as ILayer);
                        break;
                    }
                }
                else if (m_ProTree.SelectedNode.DataKeyString == "FD")
                {
                    //数据集节点
                    try { feaclsElem = (m_ProTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; }
                    catch { }

                    if (feaclsElem != null)
                    {
                        if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name))
                        {
                            //若不具备数据权限,则不进行加载
                            pDs = pEnumDs.Next();
                            continue;
                        }
                    }
                }
                //end
                //cyf 20110706 modify
                pGroupLayer.Add(pFeatureLayer as ILayer);
                //Mapcontrol.Map.AddLayer(pFeatureLayer as ILayer);
                //end
                pDs = pEnumDs.Next();
            }
            //ModDBOperator.WriteLog("while end");
            Mapcontrol.Map.AddLayer(pGroupLayer as ILayer);
            Mapcontrol.ActiveView.Refresh();

            //ModDBOperator.WriteLog("LayersCompose start");
            SysCommon.Gis.ModGisPub.LayersCompose(Mapcontrol);
            //写日志
            //ModDBOperator.WriteLog("InitialSliderItem start");
            InitialSliderItem(Mapcontrol);
            //写日志
            //ModDBOperator.WriteLog("InitialSliderItem end");
        }