コード例 #1
0
        private void button5_Click(object sender, EventArgs e)
        {
            axMapControl1.Map.ClearLayers();
            string     _pInstance = "sde:oracle11g:172.31.2.90/orcl";
            string     _pUser     = "******";
            string     _pPassword = "******";
            string     _pVersion  = "sde.DEFAULT";
            IWorkspace pWS        = null;

            pWS = GetSDEWorkspace(_pInstance, _pUser, _pPassword, _pVersion) as IWorkspace;

            try
            {
                IEnumDatasetName pEDatasetNames = pWS.get_DatasetNames(esriDatasetType.esriDTAny);



                IDatasetName pDatasetName = pEDatasetNames.Next();
                while (pDatasetName != null)
                {
                    string name = pDatasetName.Name;
                    if (pDatasetName.Name.Equals("CSTEST.QDTEST"))
                    {
                        if (pDatasetName.Type.Equals(esriDatasetType.esriDTFeatureDataset))
                        {
                            IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWS;
                            IFeatureDataset   pFeatureDataset   = pFeatureWorkspace.OpenFeatureDataset("CSTEST.QDTEST");
                            IEnumDataset      pEnumDataset      = pFeatureDataset.Subsets;
                            pEnumDataset.Reset();
                            IDataset pDataset = pEnumDataset.Next();
                            comboBox1.Items.Clear();

                            while (pDataset != null)
                            {
                                if (pDataset.Type == esriDatasetType.esriDTFeatureClass)
                                {
                                    comboBox1.Items.Add(pDataset.Name);
                                    if (pDataset is IFeatureClass)
                                    {
                                        IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                                        pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);
                                        pFeatureLayer.Name         = pFeatureLayer.FeatureClass.AliasName;

                                        axMapControl1.Map.AddLayer(pFeatureLayer);
                                    }
                                }
                                pDataset = pEnumDataset.Next();
                            }
                            comboBox1.Text = comboBox1.Items[0].ToString();
                        }
                    }

                    pDatasetName = pEDatasetNames.Next();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.StackTrace);
            }
        }
コード例 #2
0
ファイル: AddData.cs プロジェクト: siszoey/geosufan
        /* private void FeatureLayer(object featureClass)
         * {
         *   object[] dataName = GetData();
         *
         *   IFeatureClass pFeatureClass = featureClass as IFeatureClass;
         *   // IFeatureLayer pFeaturelayer;
         *   // pFeaturelayer = new FeatureLayerClass();
         *   // pFeaturelayer.FeatureClass = pFeatureClass;
         *   // pFeaturelayer.Name = pFeaturelayer.FeatureClass.AliasName;
         *   m_pFeaturelayer.FeatureClass = pFeatureClass;
         * }*/
        /// <summary>
        /// 加载Dataset
        /// </summary>
        /// <param name="fileFullPath"></param>
        /// <param name="dsName"></param>
        private void AddDataset(object dataSet, IMap pMap)
        {
            //获取FeatureDataset
            IFeatureDataset   pFeatureDataset = (IFeatureDataset)dataSet;
            IWorkspace        pWorkspace      = pFeatureDataset.Workspace;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer     pFeatureLayer;

            pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
            IEnumDataset pEnDS = pFeatureDataset.Subsets;

            pEnDS.Reset();
            //遍历Dataset
            IDataset pDS = pEnDS.Next();

            while (pDS is IFeatureClass)
            {
                pFeatureLayer = new FeatureLayerClass();
                pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDS.Name);
                pFeatureLayer.Name         = pFeatureLayer.FeatureClass.AliasName;
                m_pFeaturelayer            = pFeatureLayer;
                pMap.AddLayer(pFeatureLayer);//加载Dataset中的FeatureClass
                pDS = pEnDS.Next();
            }
            m_pActiveView.Refresh();//刷新
        }
コード例 #3
0
        //#######################以下函数可配合使用########################

        //**************************Load Raster Begin****************************

        //函数编号:RasterLoad-01
        //函数名:DirToMosaic
        //函数功能:把文件夹中的Raster文件合并到新的Raster文件中去
        //参数:sDir:栅格文件夹
        //      pDataset:最后合并的RasterDataset
        //备注:pDataset可以使Geodataset中的参数,如果不存在利用函数创建
        public void DirToMosaic(string sDir, IRasterDataset pDataset)
        {
            //load all raster datasets in the input directory to the raster dataset
            //the geodatabase raster dataset has to exist,
            //if not create it first with proper storage parameters.
            IWorkspaceFactory pWsFact = new RasterWorkspaceFactoryClass();;
            IWorkspace        pFileWs = pWsFact.OpenFromFile(sDir, 0);

            IRasterDatasetEdit pSDEDs = pDataset as IRasterDatasetEdit;

            IRasterDataset2 pRasterDs;

            // load raster datasets from the dir
            IEnumDataset pEunmDatasets = pFileWs.get_Datasets(esriDatasetType.esriDTRasterDataset);

            pEunmDatasets.Reset();

            pRasterDs = pEunmDatasets.Next() as IRasterDataset2;
            while (!(pRasterDs == null))
            {
                //!!!pRasterDs.CompleteName;
                pSDEDs.Mosaic(pRasterDs.CreateFullRaster(), 0.5);
                //!!!注意IRasterDataset2::CreateFullRaster()方法可以简单实现从RasterDataset到Raster的转换
                pRasterDs = pEunmDatasets.Next() as IRasterDataset2;
            }

            //cleanup

            pEunmDatasets = null;
            pRasterDs     = null;
            pWsFact       = null;
            pSDEDs        = null;
            pFileWs       = null;
        }
コード例 #4
0
 private void chkRelateFeatureClass_CheckedChanged(object sender, EventArgs e)
 {
     this.cboRelateFC.Visible = this.chkRelateFeatureClass.Checked;
     this.cboRelateFC.Enabled = true;
     ObjectClassHelper.m_pObjectClassHelper.IsRelatedFeature = this.chkRelateFeatureClass.Checked;
     if (this.chkRelateFeatureClass.Checked && (this.cboRelateFC.Properties.Items.Count == 0))
     {
         IEnumDataset subsets = (ObjectClassHelper.m_pObjectClassHelper.Workspace as IDataset).Subsets;
         subsets.Reset();
         for (IDataset dataset2 = subsets.Next(); dataset2 != null; dataset2 = subsets.Next())
         {
             if (dataset2.Type == esriDatasetType.esriDTFeatureClass)
             {
                 this.cboRelateFC.Properties.Items.Add(new DatasetWrap(dataset2));
             }
             else if (dataset2.Type == esriDatasetType.esriDTFeatureDataset)
             {
                 IEnumDataset dataset3 = dataset2.Subsets;
                 dataset3.Reset();
                 for (IDataset dataset4 = dataset3.Next(); dataset4 != null; dataset4 = dataset3.Next())
                 {
                     this.cboRelateFC.Properties.Items.Add(new DatasetWrap(dataset4));
                 }
             }
         }
         if (this.cboRelateFC.Properties.Items.Count > 0)
         {
             this.cboRelateFC.SelectedIndex = 0;
         }
     }
 }
コード例 #5
0
        private void method_0(IList ilist_0, IWorkspace iworkspace_0)
        {
            IEnumDataset dataset = iworkspace_0.get_Datasets(esriDatasetType.esriDTAny);

            dataset.Reset();
            for (IDataset dataset2 = dataset.Next(); dataset2 != null; dataset2 = dataset.Next())
            {
                if (dataset2.Type == esriDatasetType.esriDTFeatureClass)
                {
                    if ((dataset2 as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple)
                    {
                        ilist_0.Add(new ObjectWrap(dataset2));
                    }
                }
                else if (dataset2.Type == esriDatasetType.esriDTFeatureDataset)
                {
                    IEnumDataset subsets = dataset2.Subsets;
                    subsets.Reset();
                    for (IDataset dataset4 = subsets.Next(); dataset4 != null; dataset4 = subsets.Next())
                    {
                        if ((dataset4.Type == esriDatasetType.esriDTFeatureClass) &&
                            ((dataset4 as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple))
                        {
                            ilist_0.Add(new ObjectWrap(dataset4));
                        }
                    }
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// 打开数据库中FeatureClasss
        /// </summary>
        /// <param name="FileGdbName"></param>
        /// <param name="featureDataset"></param>
        /// <param name="featureclassname"></param>
        /// <returns></returns>
        public static IFeatureClass OpenFeatureClass(string FileGdbName, string featureDataset, string featureclassname)
        {
            IWorkspaceFactory pworkspF         = new FileGDBWorkspaceFactoryClass();
            IWorkspace        workspace        = pworkspF.OpenFromFile(FileGdbName, 0);
            IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;

            IFeatureClass   featureClass    = null;
            IFeatureDataset pFeatureDataset = featureWorkspace.OpenFeatureDataset(featureDataset);

            if (pFeatureDataset == null)
            {
                return(null);
            }
            IEnumDataset pEnumDataset = pFeatureDataset.Subsets;

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

            while (dataset != null)
            {
                if (dataset.Name == featureclassname)
                {
                    featureClass = dataset as IFeatureClass;
                    break;
                }
                dataset = pEnumDataset.Next();
            }


            return(featureClass);
        }
コード例 #7
0
 private void NewNetworkDatasetFeatureClassSetPropertyPage_Load(object sender, EventArgs e)
 {
     try
     {
         if (NewNetworkDatasetHelper.NewNetworkDataset.FeatureDataset.Subsets != null)
         {
             IEnumDataset subsets = NewNetworkDatasetHelper.NewNetworkDataset.FeatureDataset.Subsets;
             if (subsets != null)
             {
                 subsets.Reset();
                 for (IDataset dataset2 = subsets.Next(); dataset2 != null; dataset2 = subsets.Next())
                 {
                     if (((dataset2 is IFeatureClass) &&
                          ((dataset2 as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple)) &&
                         (((dataset2 as IFeatureClass).ShapeType == esriGeometryType.esriGeometryPolyline) ||
                          ((dataset2 as IFeatureClass).ShapeType == esriGeometryType.esriGeometryPoint)))
                     {
                         NewNetworkDatasetHelper.FeatureClassWrap item =
                             new NewNetworkDatasetHelper.FeatureClassWrap(dataset2 as IFeatureClass);
                         NewNetworkDatasetHelper.NewNetworkDataset.FeatureClassWraps.Add(item);
                         this.chkListUseFeatureClass.Items.Add(item, item.IsUse);
                     }
                 }
             }
         }
     }
     catch
     {
     }
 }
コード例 #8
0
ファイル: FormSelectDatasets.cs プロジェクト: koson/CodeLab
        private void AddFeatureDatasetToTree(TreeNode parentNode, IFeatureDataset featDataset)
        {
            TreeNode featDSNode = parentNode.Nodes.Add(featDataset.Name);

            featDSNode.Tag                = featDataset;
            featDSNode.ImageIndex         = 9;
            featDSNode.SelectedImageIndex = 9;
            featDSNode.StateImageIndex    = 0;

            IEnumDataset datasets = featDataset.Subsets;

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

            while (dataset != null)
            {
                if (dataset is IFeatureClass)
                {
                    AddFeatureClassToTree(featDSNode, dataset as IFeatureClass);
                }
                else if (dataset is IFeatureDataset)
                {
                    AddFeatureDatasetToTree(featDSNode, dataset as IFeatureDataset);
                }
                dataset = datasets.Next();
            }
        }
コード例 #9
0
ファイル: FrmTmpDataCheck.cs プロジェクト: siszoey/geosufan
 private void cmbLayer_SelectedIndexChanged(object sender, EventArgs e)
 {
     this.lblTips.Text = "";
     Application.DoEvents();
     if (this.cmbLayer.Text == "所有图层")
     {
         _CurFeatureClass = null;
     }
     else
     {
         string       strCurName = this.cmbLayer.Text;
         IEnumDataset pEnumDs    = _CurFeatureDataset.Subsets;
         pEnumDs.Reset();
         IDataset pDs = pEnumDs.Next();
         while (pDs != null)
         {
             IFeatureClass pFeatureClass = pDs as IFeatureClass;
             if (pFeatureClass.AliasName == strCurName)
             {
                 _CurFeatureClass = pFeatureClass;
                 break;
             }
             pDs = pEnumDs.Next();
         }
     }
     InitContentGrid();
 }
コード例 #10
0
ファイル: data_operate.cs プロジェクト: Teyae/AE_DESKTOP
        public List <IFeatureClass> getAllFeatClsFromGDB(IWorkspace workspace)
        {
            IFeatureWorkspace pFeatureWorkspace = workspace as IFeatureWorkspace;
            IEnumDataset      pEnumDataset      = workspace.get_Datasets(esriDatasetType.esriDTAny);

            //获取pworkspace目录下根目录的dataset
            pEnumDataset.Reset();
            List <IFeatureClass> featClsList = new List <IFeatureClass>();
            //获取dataset
            IDataset pDataset;

            while ((pDataset = pEnumDataset.Next()) != null)
            {
                if (pDataset is IFeatureDataset)
                {
                    IEnumDataset enuemData = pDataset.Subsets;
                    IDataset     pDataset2;
                    while ((pDataset2 = enuemData.Next()) != null)
                    {
                        IFeatureClass featCls = pDataset2 as IFeatureClass;
                        featClsList.Add(featCls);
                    }
                }
                else if (pDataset is IFeatureClass)
                {
                    IFeatureClass pFC = pDataset as IFeatureClass;
                    featClsList.Add(pFC);
                }
            }
            return(featClsList);
        }
コード例 #11
0
 /// <summary>
 /// 点重复出错检查
 /// </summary>
 /// <param name="featureDataset"></param>
 public void DupointError(IFeatureDataset featureDataset, out Exception ex)
 {
     ex = null;
     try
     {
         if (featureDataset == null)
         {
             return;
         }
         IEnumDataset GetFeatureClass = featureDataset.Subsets;//得到集合里的类集合
         GetFeatureClass.Reset();
         IDataset TempSet = GetFeatureClass.Next();
         while (TempSet != null)
         {
             if (TempSet is IFeatureClass)
             {
                 IFeatureClass FeatureClass = TempSet as IFeatureClass;
                 RePoint(FeatureClass);//重复点检查
             }
         }
     }
     catch (Exception EX)
     {
         ex = EX;
     }
 }
コード例 #12
0
        //读取mdb数据
        public List <ILayer> ReadLayerFromAccess(List <string> filePathList)
        {
            List <ILayer> layerList = new List <ILayer>();

            if (filePathList.Count == 0)
            {
                return(null);
            }
            else
            {
                foreach (string path in filePathList)
                {
                    IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();
                    IWorkspace        pWorkspace        = pWorkspaceFactory.OpenFromFile(path, 0);
                    IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;

                    IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass) as IEnumDataset;
                    pEnumDataset.Reset();
                    IDataset pDataset = pEnumDataset.Next();

                    while (pDataset is IFeatureClass)
                    {
                        IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                        pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);
                        pFeatureLayer.Name         = pDataset.Name;
                        ILayer pLayer = pFeatureLayer as ILayer;
                        layerList.Add(pFeatureLayer as ILayer);
                        pDataset = pEnumDataset.Next();
                    }
                }
                return(layerList);
            }
        }
コード例 #13
0
        //3/10/2009	删除工作空间内的所有要素类
        public static void DeleteAllFeatCls(IWorkspace pworkspace)
        {
            IEnumDataset    pEnumFeatDataset = default(IEnumDataset);
            IDataset        pDataset         = default(IDataset);
            IFeatureDataset pFeatDataset     = default(IFeatureDataset);

            pEnumFeatDataset = pworkspace.get_Datasets(esriDatasetType.esriDTAny);
            pEnumFeatDataset.Reset();
            pDataset = pEnumFeatDataset.Next();
            while ((pDataset != null))
            {
                if (pDataset.CanDelete())
                {
                    if (pDataset.Type == esriDatasetType.esriDTFeatureDataset)
                    {
                        pFeatDataset = (IFeatureDataset)pDataset;
                        pFeatDataset.Delete();
                    }
                    else
                    {
                        pDataset.Delete();
                    }
                    //pDataset.Delete()
                    pDataset = pEnumFeatDataset.Next();
                }
            }
        }
コード例 #14
0
        //通过IWokspace和图层名称获取图层
        public static List <IFeatureClass> GetFeatureClass(IWorkspace pWorkspace, string DatasetName)
        {
            List <IFeatureClass> newlist = new List <IFeatureClass>();

            if (pWorkspace == null || DatasetName == "")
            {
                return(newlist);
            }
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);

            pEnumDataset.Reset();
            IFeatureDataset pFeaDataset = pEnumDataset.Next() as IFeatureDataset;

            while (pFeaDataset != null)
            {
                if (pFeaDataset.Name == DatasetName)
                {
                    IFeatureClassContainer pFeatureClassContainer = pFeaDataset as IFeatureClassContainer;
                    IEnumFeatureClass      pEnumFeatureClass      = pFeatureClassContainer.Classes;
                    IFeatureClass          pFeatureClass          = pEnumFeatureClass.Next();
                    while (pFeatureClass != null)
                    {
                        newlist.Add(pFeatureClass);
                        pFeatureClass = pEnumFeatureClass.Next();
                    }
                }
                pFeaDataset = pEnumDataset.Next() as IFeatureDataset;
            }
            return(newlist);
        }
コード例 #15
0
ファイル: FormSelectDatasets.cs プロジェクト: koson/CodeLab
        private void ListDatasets()
        {
            tvDatasets.Nodes.Clear();

            if (m_workspace == null)
            {
                return;
            }

            TreeNode rootNode = tvDatasets.Nodes.Add(System.IO.Path.GetFileNameWithoutExtension(m_workspace.PathName));

            rootNode.ImageIndex         = 27;
            rootNode.SelectedImageIndex = 27;
            rootNode.StateImageIndex    = 0;

            IEnumDataset datasets = m_workspace.Datasets[esriDatasetType.esriDTAny];

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

            while (dataset != null)
            {
                if (dataset is IFeatureClass)
                {
                    AddFeatureClassToTree(rootNode, dataset as IFeatureClass);
                }
                else if (dataset is IFeatureDataset)
                {
                    AddFeatureDatasetToTree(rootNode, dataset as IFeatureDataset);
                }
                dataset = datasets.Next();
            }

            tvDatasets.ExpandAll();
        }
コード例 #16
0
        /// <summary>
        /// 获取数据集下的要素类
        /// </summary>
        /// <param name="workspace">工作空间</param>
        /// <param name="featureDatasetName">数据集名称</param>
        /// <param name="featureClassName">要素类名称</param>
        /// <returns></returns>
        public static IFeatureClass GetFeatureClass(IWorkspace workspace, string featureDatasetName, string featureClassName)
        {
            IDataset     dataset     = (IDataset)workspace;
            IEnumDataset enumDataset = dataset.Subsets;

            enumDataset.Reset();
            //get the datasets from enumerator
            IDataset datasetNext = enumDataset.Next();

            //loop through the datasets

            while (datasetNext != null)
            {
                if (datasetNext.Name == featureDatasetName)
                {
                    IEnumDataset enumDataset2 = datasetNext.Subsets;
                    enumDataset2.Reset();
                    IDataset dataset3 = enumDataset2.Next();
                    while (dataset3 != null)
                    {
                        if (dataset3.Name == featureClassName)
                        {
                            return((IFeatureClass)dataset3);
                        }
                        dataset3 = enumDataset2.Next();
                    }
                }

                datasetNext = enumDataset.Next();
            }
            return(null);
        }
コード例 #17
0
        private void testToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //打开目标数据库
            IWorkspaceFactory pAccessWorkspaceFactory;

            pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass();
            IWorkspace        fWorkspace    = pAccessWorkspaceFactory.OpenFromFile("E://2018年工作//数据验收平台测试//test.gdb", 0);
            IFeatureWorkspace fW            = fWorkspace as IFeatureWorkspace;
            IEnumDataset      penumDatasets = fWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);

            penumDatasets.Reset();
            IDataset pesriDataset = penumDatasets.Next();

            while (pesriDataset == null)
            {
                IFeatureClass pFeatureClass = fW.OpenFeatureClass("Ⅰ级保护林地范围");
            }
            //启动编辑
            IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)fWorkspace;

            workspaceEdit.StartEditing(true);
            workspaceEdit.StartEditOperation();
            //调用创建拓朴的方法
            ITopology topology = Create_Topology(fW, "datset", "Ⅰ级保护林地范围", "Polygon_Topo");

            //停止编辑
            workspaceEdit.StopEditOperation();
            workspaceEdit.StopEditing(true);
            if (topology != null)
            {
                MessageBox.Show("创建拓朴成功!");
            }
        }
コード例 #18
0
        /// <summary>
        /// 判断工作空间中是否含有某个要素类
        /// </summary>
        /// <param name="pW"></param>
        /// <param name="pFeatureClassName"></param>
        /// <returns></returns>
        private bool isExitFeatureClass(IWorkspace pW, string pFeatureClassName)
        {
            IEnumDataset o = pW.get_Datasets(esriDatasetType.esriDTAny);

            o.Reset();
            for (IDataset dataset2 = o.Next(); dataset2 != null; dataset2 = o.Next())
            {
                if (dataset2.Name == pFeatureClassName)
                {
                    return(true);
                }
                IEnumDataset subsets = dataset2.Subsets;
                for (IDataset dataset4 = subsets.Next(); dataset4 != null; dataset4 = subsets.Next())
                {
                    IFeatureClass class2 = dataset4 as IFeatureClass;
                    if (((class2 != null) && (class2.FeatureType != esriFeatureType.esriFTAnnotation)) && (class2.AliasName == pFeatureClassName))
                    {
                        return(true);
                    }
                }
                if (subsets != null)
                {
                    Marshal.ReleaseComObject(subsets);
                }
            }
            if (o != null)
            {
                Marshal.ReleaseComObject(o);
            }
            return(false);
        }
コード例 #19
0
        //通过IWorkspace获取图层
        public static IFeatureClass GetFeatureClass(IWorkspace pWorkspace, string LayerName, string DatasetName)
        {
            if (pWorkspace == null)
            {
                return(null);
            }
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass);

            pEnumDataset.Reset();
            IDataset pDataset = pEnumDataset.Next();

            while (pDataset != null)
            {
                if (pDataset.Name == LayerName)
                {
                    return(pDataset as IFeatureClass);
                }
                pDataset = pEnumDataset.Next();
            }
            pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
            pDataset     = pEnumDataset.Next();
            //  IFeatureDataset pFeaDataset = pEnumDataset.Next() as IFeatureDataset;
            while (pDataset != null)
            {
                if (DatasetName == "")
                {
                    IFeatureClassContainer pFeatureClassContainer = pDataset as IFeatureClassContainer;
                    IEnumFeatureClass      pEnumFeatureClass      = pFeatureClassContainer.Classes;
                    IFeatureClass          pFeatureClass          = pEnumFeatureClass.Next();
                    while (pFeatureClass != null)
                    {
                        if (pFeatureClass.AliasName.Contains(LayerName))
                        {
                            return(pFeatureClass);
                        }
                        pFeatureClass = pEnumFeatureClass.Next();
                    }
                }
                else
                {
                    if (pDataset.Name == DatasetName)
                    {
                        IFeatureClassContainer pFeatureClassContainer = pDataset as IFeatureClassContainer;
                        IEnumFeatureClass      pEnumFeatureClass      = pFeatureClassContainer.Classes;
                        IFeatureClass          pFeatureClass          = pEnumFeatureClass.Next();
                        while (pFeatureClass != null)
                        {
                            if (pFeatureClass.AliasName.Contains(LayerName))
                            {
                                return(pFeatureClass);
                            }
                            pFeatureClass = pEnumFeatureClass.Next();
                        }
                    }
                }
                pDataset = pEnumDataset.Next() as IFeatureDataset;
            }
            return(null);
        }
コード例 #20
0
        private void frmCreateTopologySet_Load(object sender, EventArgs e)
        {
            this.comboBox_0.Visible = false;
            this.listViewPri.Controls.Add(this.comboBox_0);
            this.comboBox_0.SelectedValueChanged += new EventHandler(this.comboBox_0_SelectedValueChanged);
            this.comboBox_0.LostFocus            += new EventHandler(this.comboBox_0_LostFocus);
            this.int_1 = 1;
            ISpatialReference spatialReference = (this.m_pFeatDataset as IGeoDataset).SpatialReference;
            double            xMin             = -10000.0;
            double            xMax             = 11474.83645;
            double            yMin             = -10000.0;
            double            yMax             = 11474.83645;

            ((ISpatialReference2GEN)spatialReference).GetDomain(ref xMin, ref xMax, ref yMin, ref yMax);
            double num5 = xMax - xMin;
            double num6 = yMax - yMin;

            num5 = (num5 > num6) ? num5 : num6;
            this.txtLimiteValue.Text = ((num5 / 2147483645.0) * 2.0).ToString("0.#############");
            int num8 = this.m_pFeatDataset.Name.LastIndexOf(".");

            this.txtTopologyName.Text = "topo_" + this.m_pFeatDataset.Name.Substring(num8 + 1);
            IEnumDataset subsets = this.m_pFeatDataset.Subsets;

            subsets.Reset();
            IDataset unk = subsets.Next();

            this.iarray_0.RemoveAll();
            while (unk != null)
            {
                if ((unk.Type == esriDatasetType.esriDTFeatureClass) &&
                    ((unk as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple))
                {
                    string browseName;
                    if (unk is ITopologyClass)
                    {
                        if (!(unk as ITopologyClass).IsInTopology)
                        {
                            browseName = unk.BrowseName;
                            this.chkListBoxFeatureClass.Items.Add(browseName);
                            this.iarray_0.Add(unk);
                        }
                    }
                    else
                    {
                        browseName = unk.BrowseName;
                        this.chkListBoxFeatureClass.Items.Add(browseName);
                        this.iarray_0.Add(unk);
                    }
                }
                unk = subsets.Next();
            }
            this.listRule.Columns.Add("要素类", 120, HorizontalAlignment.Left);
            this.listRule.Columns.Add("规则", 120, HorizontalAlignment.Left);
            this.listRule.Columns.Add("要素类", 120, HorizontalAlignment.Left);
            this.listViewPri.Columns.Add("要素类", 180, HorizontalAlignment.Left);
            this.listViewPri.Columns.Add("优先级", 180, HorizontalAlignment.Left);
            this.method_0();
        }
コード例 #21
0
        /// <summary>
        /// 加载数据集
        /// </summary>
        /// <param name="workspace">数据集所在工作空间</param>
        /// <param name="mapControl">要加载的地图控件</param>
        public void AddAllDataset(IWorkspace workspace, AxMapControl mapControl)
        {
            IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny);

            enumDataset.Reset();
            IDataset dataset;

            while ((dataset = enumDataset.Next()) != null)
            {
                if (dataset is IFeatureDataset)     //要素数据集
                {
                    IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
                    IFeatureDataset   featureDataset   = featureWorkspace.OpenFeatureDataset(dataset.Name);
                    IEnumDataset      enumDatasetSub   = featureDataset.Subsets;
                    enumDatasetSub.Reset();
                    IDataset datasetSub;
                    while ((datasetSub = enumDatasetSub.Next()) != null)
                    {
                        if (datasetSub is FeatureClass)
                        {
                            IFeatureLayer featureLayer = new FeatureLayerClass();
                            featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(datasetSub.Name);
                            if (featureLayer.FeatureClass != null)
                            {
                                featureLayer.Name = featureLayer.FeatureClass.AliasName;
                                mapControl.AddLayer(featureLayer);
                            }
                        }
                    }
                }
                else if (dataset is IFeatureClass)  //要素类
                {
                    IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
                    IFeatureClass     featureClass     = featureWorkspace.OpenFeatureClass(dataset.Name);
                    IFeatureLayer     featureLayer     = new FeatureLayerClass();
                    featureLayer.FeatureClass = featureClass;
                    featureLayer.Name         = featureClass.AliasName;
                    mapControl.AddLayer(featureLayer);
                }
                else if (dataset is IRasterDataset) //栅格数据集
                {
                    IRasterWorkspaceEx rasterWorkspace = (IRasterWorkspaceEx)workspace;
                    IRasterDataset     rasterDataset   = rasterWorkspace.OpenRasterDataset(dataset.Name);
                    IRasterPyramid3    rasPyramid      = rasterDataset as IRasterPyramid3;
                    if (rasPyramid != null)
                    {
                        if (!rasPyramid.Present)
                        {
                            rasPyramid.Create();
                        }
                    }
                    IRasterLayer rasterLayer = new RasterLayerClass();
                    rasterLayer.CreateFromDataset(rasterDataset);
                    ILayer layer = rasterLayer as ILayer;
                    mapControl.AddLayer(layer, 0);
                }
            }
            mapControl.ActiveView.Refresh();
        }
コード例 #22
0
        public DataTable GetFeaturesStatDt()
        {
            DataTable              result            = GenerateDataTable();
            IFeatureDataset        pDataset          = null;
            IFeatureClassContainer pFeatClsContainer = null;
            IFeatureClass          pFeatureCls       = null;

            try
            {
                //List<StandardLayer> layers = LayerReader.GetLayersByStandard(m_StandardID);
                //获取标准的图层列表
                if (m_Workspace == null)
                {
                    return(result);
                }
                IEnumDataset enumDataset = m_Workspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
                enumDataset.Reset();
                IFeatureDataset subDataset = enumDataset.Next() as IFeatureDataset;

                while (subDataset != null)
                {
                    pFeatClsContainer = subDataset as IFeatureClassContainer;
                    int     iCount = 0;
                    DataRow dr     = null;
                    for (int i = 0; i < pFeatClsContainer.ClassCount; i++)
                    {
                        pFeatureCls = pFeatClsContainer.get_Class(i);
                        string featClsName = (pFeatureCls as IDataset).Name;

                        iCount = pFeatureCls.FeatureCount(null);
                        dr     = result.NewRow();
                        dr[0]  = featClsName;
                        dr[1]  = pFeatureCls.AliasName;
                        dr[2]  = iCount;
                        result.Rows.Add(dr);
                        Marshal.ReleaseComObject(pFeatureCls);
                    }
                    subDataset = enumDataset.Next() as IFeatureDataset;
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("获取要素个数失败!原因:" + ex.Message, "警告");
                return(result);
            }
            finally
            {
                if (pFeatureCls != null)
                {
                    Marshal.ReleaseComObject(pFeatureCls);
                }
                if (pDataset != null)
                {
                    Marshal.ReleaseComObject(pDataset);
                }
            }
            return(result);
        }
コード例 #23
0
        public static Dictionary <string, IFeatureClass> ReadCoverage(IWorkspace pWorkspace)
        {
            Dictionary <string, IFeatureClass> dictionary = new Dictionary <string, IFeatureClass>();

            try
            {
                IEnumDataset enumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
                try
                {
                    enumDataset.Reset();
                    IDataset dataset;
                    while ((dataset = enumDataset.Next()) != null)
                    {
                        string       sPrefix = dataset.Name + "_";
                        IEnumDataset subsets = dataset.Subsets;
                        try
                        {
                            subsets.Reset();
                            IDataset dataset2;
                            while ((dataset2 = subsets.Next()) != null)
                            {
                                IFeatureClass featureClass = dataset2 as IFeatureClass;
                                if (featureClass != null)
                                {
                                    string covOrCadFCName = ControlAPI.GetCovOrCadFCName(sPrefix, dataset2.Name);
                                    if (!(covOrCadFCName == ""))
                                    {
                                        dictionary.Add(covOrCadFCName, featureClass);
                                    }
                                }
                            }
                        }
                        finally
                        {
                            if (subsets != null)
                            {
                                Marshal.ReleaseComObject(subsets);
                            }
                        }
                    }
                }
                finally
                {
                    if (enumDataset != null)
                    {
                        Marshal.ReleaseComObject(enumDataset);
                    }
                }
            }
            finally
            {
                if (pWorkspace != null)
                {
                    Marshal.ReleaseComObject(pWorkspace);
                }
            }
            return(dictionary);
        }
コード例 #24
0
ファイル: FrmCountySheet.cs プロジェクト: siszoey/geosufan
        /// <summary>
        /// ÅжÏÊÇ·ñ´æÔÚ×ÅÏàÓ¦±ÈÀû³ßµÄͼ¸±
        /// </summary>
        /// <param name="MapPath">ͼ¸±Â·¾¶</param>
        /// <param name="StrScale">±ÈÀý³ß</param>
        /// <returns></returns>
        private string GetMapFrameName(string MapPath, string StrScale, out Exception eError)
        {
            eError = null;
            IWorkspaceFactory pWorkSpaceFactory = new AccessWorkspaceFactoryClass();
            IWorkspace        pWorkSpace        = null;
            IEnumDataset      pEnumDataSet      = null;
            IDataset          pDataSet          = null;
            IFeatureDataset   pFeatureDataSet   = null;
            IEnumDataset      pEnumFC           = null;
            IDataset          pFC          = null;
            string            LayerName    = "";
            string            MapFrameName = "";

            if (MapPath != "")
            {
                pWorkSpace   = pWorkSpaceFactory.OpenFromFile(MapPath, 0);
                pEnumDataSet = pWorkSpace.get_Datasets(esriDatasetType.esriDTFeatureClass);
                pEnumDataSet.Reset();
                pDataSet = pEnumDataSet.Next();
                while (pDataSet != null)
                {
                    if (pDataSet is IFeatureClass)
                    {
                        LayerName = pDataSet.Name;
                        if (LayerName.Contains(StrScale))
                        {
                            MapFrameName = LayerName;
                        }
                    }
                    else if (pDataSet is IFeatureDataset)
                    {
                        pFeatureDataSet = pDataSet as IFeatureDataset;
                        pEnumFC         = pFeatureDataSet.Subsets;
                        pEnumFC.Reset();
                        pFC = pEnumFC.Next();
                        while (pFC != null)
                        {
                            LayerName = pFC.Name;
                            if (LayerName.Contains(StrScale))
                            {
                                MapFrameName = LayerName;
                            }
                        }
                    }
                    else
                    {
                        MapFrameName = "";
                    }
                    pDataSet = pEnumDataSet.Next();
                }
                if (MapFrameName == "")
                {
                    eError = new Exception("δÕÒµ½±ÈÀý³ßΪ'" + StrScale + "'µÄ·¶Î§Êý¾Ý£¬Çë¼ì²é£¡");
                    return("");
                }
            }
            return(MapFrameName);
        }
コード例 #25
0
        private void btn_read_Click(object sender, EventArgs e)
        {
            // Считываю слои из базы и заполняю CheckBoxList
            clb1.Items.Clear();
            IFeatureClass     myFeatureClass   = null;
            IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory();
            IWorkspace        workspace        = workspaceFactory.OpenFromFile(txtb1.Text, 0);
            IFeatureWorkspace iworkspace       = (IFeatureWorkspace)workspace;
            IEnumDataset      enumDataset      = workspace.get_Datasets(esriDatasetType.esriDTAny);

            enumDataset.Reset();
            List <string> datasets = new List <string>();
            IDataset      dataset  = null;

            while ((dataset = enumDataset.Next()) != null)
            {
                if (dataset.Type == esriDatasetType.esriDTFeatureClass)
                {
                    clb1.Items.Add(dataset.Name);
                }
                if (dataset.Type == esriDatasetType.esriDTFeatureDataset)
                {
                    datasets.Add(dataset.Name);
                }
                //Проходим по датасетам если они есть

                foreach (string el in datasets)
                {
                    string          datasetsroot = txtb1.Text + @"\" + el;
                    IFeatureDataset mydataset    = iworkspace.OpenFeatureDataset(el);
                    IEnumDataset    enumDataset1 = mydataset.Subsets;
                    IDataset        dataset1     = null;
                    while ((dataset1 = enumDataset1.Next()) != null)
                    {
                        clb1.Items.Add(dataset1.Name);
                    }
                }
            }
            // Считываю все поля из всех слоев
            clb2.Items.Clear();
            List <string> bn = new List <string>();

            foreach (object item in clb1.Items)
            {
                myFeatureClass = iworkspace.OpenFeatureClass(item.ToString());
                for (int j = 0; j < myFeatureClass.Fields.FieldCount; j++)
                {
                    bn.Add(myFeatureClass.Fields.get_Field(j).Name);
                }
            }
            string[] bnn = bn.Distinct().ToArray();

            foreach (string f in bnn)
            {
                clb2.Items.Add(f);
            }
        }
コード例 #26
0
        private void LoadDataset()
        {
            IWorkspaceFactory pAccessWorkspaceFactory;
            string            pFullPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\\data\\教室数据\\classroom.mdb";

            pAccessWorkspaceFactory = new AccessWorkspaceFactory(); //using ESRI.ArcGIS.DataSourcesGDB;

            //获取工作空间
            IWorkspace   pWorkspace   = pAccessWorkspaceFactory.OpenFromFile(pFullPath, 0);
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);

            pEnumDataset.Reset();

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

            //使用IQueryDef接口的对象来定义和查询属性信息。通过IWorkspace接口的CreateQueryDef()方法创建该对象。
            IQueryDef queryDef = ((IFeatureWorkspace)pDataset.Workspace).CreateQueryDef();

            //设置所需查询的表格名称为dataset的名称
            queryDef.Tables = pDataset.Name;
            string que = null;

            //返回所有值
            queryDef.WhereClause = que;
            //执行查询并返回ICursor接口的对象来访问整个结果的集合
            ICursor cursor = queryDef.Evaluate();

            IRow row = cursor.NextRow();

            dt.Columns.Add(new DataColumn("学部", typeof(string)));    //在表中添加int类型的列
            dt.Columns.Add(new DataColumn("教室", typeof(string)));    //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("教学楼", typeof(string)));   //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("人数", typeof(string)));    //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("语音多媒体", typeof(string))); //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("周次", typeof(string)));    //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("日期", typeof(string)));    //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("1-2", typeof(string)));   //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("3-4", typeof(string)));   //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("3-5", typeof(string)));   //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("6-7", typeof(string)));   //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("8-9", typeof(string)));   //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("8-10", typeof(string)));  //在表中添加string类型的Name列
            dt.Columns.Add(new DataColumn("11-13", typeof(string))); //在表中添加string类型的Name列
            while (row != null)
            {
                DataRow dr1 = dt.NewRow();
                for (int i = 1; i < 15; i++)
                {
                    dr1[i - 1] = row.get_Value(i).ToString();
                }
                dt.Rows.Add(dr1);
                row = cursor.NextRow();
            }
            dataGridView_classquery1.DataSource = dt;
            dataGridView_classquery2.DataSource = dt;
        }
コード例 #27
0
        private void 现势性检查ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IWorkspaceFactory pFileGDBWorkspaceFactory;

            pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactoryClass();
            IWorkspace   pWorkspace   = pFileGDBWorkspaceFactory.OpenFromFile(Path, 0);
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);

            pEnumDataset.Reset();
            IDataset  pDataset        = pEnumDataset.Next();
            DataTable SpatialRefTable = new DataTable();

            SpatialRefTable.Columns.Add(new DataColumn("影像名称", typeof(string)));
            SpatialRefTable.Columns.Add(new DataColumn("影像拍摄时间", typeof(string)));
            SpatialRefTable.Columns.Add(new DataColumn("时间现势性检查", typeof(string)));

            //判断数据集是否有数据
            while (pDataset != null)
            {
                if (pDataset is IRasterDataset) //栅格数据集
                {
                    IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace;
                    IRasterDataset     pRasterDataset   = pRasterWorkspace.OpenRasterDataset(pDataset.Name);
                    //影像金字塔判断与创建
                    ISpatialReference pSpatialRef = (pRasterDataset as IGeoDataset).SpatialReference;
                    string            spatialref  = pSpatialRef.Name.ToString();
                    string            rastername  = pDataset.Name.ToString();
                    string[]          strArray    = rastername.Split('_');

                    DataRow dr = SpatialRefTable.NewRow();
                    dr["影像名称"]   = pDataset.Name.ToString();
                    dr["影像拍摄时间"] = strArray[1].Substring(0, 8);
                    IRasterLayer pRasterLayer = new RasterLayerClass();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    if (int.Parse(strArray[1].Substring(0, 8)) < 20170000 && int.Parse(strArray[1].Substring(0, 8)) > 20120000)
                    {
                        dr["时间现势性检查"] = "√";
                    }
                    else
                    {
                        dr["时间现势性检查"] = "×";
                    }
                    SpatialRefTable.Rows.Add(dr);
                }
                pDataset = pEnumDataset.Next();
            }
            // ExportExcel(SpatialRefTable);
            //弹出显示框
            TimeCheck tc = new TimeCheck();

            tc.Text = "影像质量检查";
            tc.dataGridView1.DataSource       = SpatialRefTable;
            tc.dataGridView1.Columns[1].Width = 200;
            tc.dataGridView1.Columns[2].Width = 300;
            tc.Show();
        }
コード例 #28
0
        private void BulidGeometryNetwork_SelectFeatureClass_Load(object sender, EventArgs e)
        {
            string[] strArray = BulidGeometryNetworkHelper.BulidGNHelper.FeatureDataset.Name.Split(new char[] { '.' });
            string   str      = strArray[strArray.Length - 1];

            BulidGeometryNetworkHelper.BulidGNHelper.Name = str + "_Net";
            if (BulidGeometryNetworkHelper.BulidGNHelper.IsEmpty)
            {
                this.panelEmpty.Visible    = true;
                this.panelNotEmpty.Visible = false;
                this.txtGNName1.Text       = str + "_Net";
            }
            else
            {
                this.panelEmpty.Visible    = false;
                this.panelNotEmpty.Visible = true;
                if (BulidGeometryNetworkHelper.BulidGNHelper.FeatureDataset.Subsets != null)
                {
                    this.txtGNName.Text = str + "_Net";
                    IEnumDataset subsets = BulidGeometryNetworkHelper.BulidGNHelper.FeatureDataset.Subsets;
                    if (subsets != null)
                    {
                        subsets.Reset();
                        for (IDataset dataset2 = subsets.Next(); dataset2 != null; dataset2 = subsets.Next())
                        {
                            if (((dataset2 is IFeatureClass) &&
                                 ((dataset2 as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple)) &&
                                (((dataset2 as IFeatureClass).ShapeType == esriGeometryType.esriGeometryPolyline) ||
                                 ((dataset2 as IFeatureClass).ShapeType == esriGeometryType.esriGeometryPoint)))
                            {
                                BulidGeometryNetworkHelper.FeatureClassWrap wrap;
                                int index = (dataset2 as IFeatureClass).Fields.FindField("Enabled");
                                if (index != -1)
                                {
                                    IField field = (dataset2 as IFeatureClass).Fields.get_Field(index);
                                    if ((field.Type == esriFieldType.esriFieldTypeSmallInteger) ||
                                        (field.Type == esriFieldType.esriFieldTypeInteger))
                                    {
                                        wrap = new BulidGeometryNetworkHelper.FeatureClassWrap(dataset2 as IFeatureClass);
                                        BulidGeometryNetworkHelper.BulidGNHelper.FeatureClassWraps.Add(wrap);
                                        this.chkListUseFeatureClass.Items.Add(wrap, wrap.IsUse);
                                    }
                                }
                                else
                                {
                                    wrap = new BulidGeometryNetworkHelper.FeatureClassWrap(dataset2 as IFeatureClass);
                                    BulidGeometryNetworkHelper.BulidGNHelper.FeatureClassWraps.Add(wrap);
                                    this.chkListUseFeatureClass.Items.Add(wrap, wrap.IsUse);
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #29
0
        private IFeatureClass SearchMatchedFeatClsForBase(IWorkspace workspace, string subFeatureName, XmlDocument xmlDoc)
        {
            try
            {
                IFeatureWorkspace featWorkspace = workspace as IFeatureWorkspace;
                IFeatureClass     featureClass  = null;
                string            fileName      = "";

                XmlNode     xmlNode  = xmlDoc.SelectSingleNode("/Root/BASEDATA");
                XmlNodeList nodeList = xmlNode.ChildNodes;

                foreach (XmlNode node in nodeList)
                {
                    string text = node.Attributes["TEXT"].Value.ToString();
                    if (text == subFeatureName)
                    {
                        fileName = node.Attributes["NAME"].Value.ToString();
                        break;
                    }
                }
                if (fileName == "")
                {
                    MessageBox.Show("数据库中没有找到对应待更新图层名,请从新配置源图层文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(null);
                }

                XmlNode root        = xmlDoc.DocumentElement;
                string  user        = root.Attributes["USER"].Value.ToString();
                string  sdefileName = user + "." + fileName;

                XmlNode         xmlDataset     = xmlDoc.SelectSingleNode("/Root/BASEDATA/FeatureDataset[@TEXT='基础库']");
                string          datasetName    = xmlDataset.Attributes["NAME"].Value.ToString();
                IFeatureDataset featureDataset = featWorkspace.OpenFeatureDataset(datasetName);
                IEnumDataset    enumDataset    = featureDataset.Subsets;
                enumDataset.Reset();
                IDataset dataset = enumDataset.Next();
                while (dataset != null)
                {
                    if (dataset.Type == esriDatasetType.esriDTFeatureClass)
                    {
                        if (dataset.Name == sdefileName)
                        {
                            featureClass = dataset as IFeatureClass;
                            return(featureClass);
                        }
                    }
                    dataset = enumDataset.Next();
                }
                return(null);
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #30
0
        /// <summary>
        /// Open a Feature Class from DatasetName, FeatureClass name
        /// Assumes the Workspace has been proeviously set
        /// </summary>
        public IFeatureClass GetFeatureClassByName(string featureDatasetName, string featureClassName)
        {
            IFeatureClass foundFeatureClass = null;

            if (!initialized)
            {
                return(null);
            }

            try
            {
                if (Workspace == null)
                {
                    return(null);
                }

                if (featureDatasetName == "None") // Don't need to look in Datasets, it is at top-level
                {
                    foundFeatureClass = Workspace.OpenFeatureClass(featureClassName);
                }
                else
                {
                    IFeatureDataset inputFeatureDataset = Workspace.OpenFeatureDataset(featureDatasetName);

                    if (inputFeatureDataset == null)
                    {
                        return(null);
                    }

                    IEnumDataset eds = inputFeatureDataset.Subsets;
                    eds.Reset();
                    IDataset ds;
                    while ((ds = eds.Next()) != null)
                    {
                        if (ds.Name == featureClassName)
                        {
                            IFeatureClass inputFeatureClass = ds as IFeatureClass;
                            if (inputFeatureClass != null)
                            {
                                foundFeatureClass = inputFeatureClass;
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(foundFeatureClass);
        }