Example #1
0
        public static IArray OrganizeMapWorkspaceAndLayer(IMap pMap)
        {
            IArray        arrayClass       = new ESRI.ArcGIS.esriSystem.ArrayClass();
            IPropertySet  propertySetClass = new PropertySetClass();
            IFeatureLayer featureLayer     = null;


            UID uid = new UIDClass();

            uid.Value = "{40A9E885-5533-11d0-98BE-00805F7CED21}";
            IEnumLayer layers = pMap.Layers[uid, true];

            layers.Reset();
            ILayer pLayer = layers.Next();

            while (pLayer != null)
            {
                if (pLayer is IFeatureLayer)
                {
                    featureLayer = pLayer as IFeatureLayer;
                    IDataset featureClass = featureLayer.FeatureClass as IDataset;
                    if (featureClass != null && !(featureClass is ICoverageFeatureClass))
                    {
                        IWorkspace workspace = featureClass.Workspace;
                        if (workspace is IFeatureWorkspace)
                        {
                            IPropertySet connectionProperties = workspace.ConnectionProperties;
                            bool         hasFindWorkspace     = false;
                            for (int i = 0; i < arrayClass.Count; i++)
                            {
                                PipeWorkspaceInfo workspaceInfo = arrayClass.Element[i] as PipeWorkspaceInfo;
                                if (workspaceInfo.Workspace.ConnectionProperties.Equals(connectionProperties))
                                {
                                    workspaceInfo.AddClass(featureLayer.FeatureClass);
                                    hasFindWorkspace = true;
                                    break;
                                }
                            }
                            if (hasFindWorkspace == false)
                            {
                                PipeWorkspaceInfo workspaceInfo = new PipeWorkspaceInfo(workspace);
                                workspaceInfo.AddClass(featureLayer.FeatureClass);
                                arrayClass.Add(workspaceInfo);
                            }
                        }
                    }
                }
                pLayer = layers.Next();
            }
            return(arrayClass);
        }
Example #2
0
        private void InitData()
        {
            _dataSet   = new DataSet("管线配置");
            _dataTable = new DataTable("管线图层");
            DataColumn col = new DataColumn("Workspace", typeof(string));

            col.Caption     = "工作空间";
            col.AllowDBNull = true;
            _dataTable.Columns.Add(col);
            col             = new DataColumn("FeatureClass", typeof(string));
            col.Caption     = "要素类";
            col.AllowDBNull = true;
            _dataTable.Columns.Add(col);
            col             = new DataColumn("PipelineLayer", typeof(string));
            col.Caption     = "管线组";
            col.AllowDBNull = true;
            _dataTable.Columns.Add(col);
            col             = new DataColumn("BasicLayerInfo", typeof(string));
            col.Caption     = "具体图层";
            col.AllowDBNull = true;
            _dataTable.Columns.Add(col);

            IArray pArrayClass = ConfigHelper.OrganizeMapWorkspaceAndLayer(_map);

            for (int i = 0; i < pArrayClass.Count; i++)
            {
                PipeWorkspaceInfo info = pArrayClass.Element[i] as PipeWorkspaceInfo;
                for (int j = 0; j < info.ClassArray.Count; j++)
                {
                    IFeatureClass pClass     = info.ClassArray.Element[j] as IFeatureClass;
                    string        pShortName = ConfigHelper.GetClassShortName(pClass);
                    DataRow       row        = _dataTable.NewRow();
                    row[0] = info.Workspace.PathName;
                    row[1] = pShortName;
                    _dataTable.Rows.Add(row);
                }
            }

            gridControl1.DataSource = _dataTable;
        }