コード例 #1
0
ファイル: Form1.cs プロジェクト: HazemMarawan/ArcGIS
        public void LoadDB()
        {
            try
            {
                openFileDialog1            = new OpenFileDialog();
                openFileDialog1.Title      = "Browse mdb Files";
                openFileDialog1.DefaultExt = "mdb";
                openFileDialog1.Filter     = "mdb Diles (*.mdb)|*.mdb";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    DBPath = openFileDialog1.FileName;;
                }

                IWorkspaceFactory AccessWorkSpace = new AccessWorkspaceFactoryClass();
                IWorkspace        MyWorkSpace     = AccessWorkSpace.OpenFromFile(DBPath, 0);
                IFeatureWorkspace featWorkspace   = MyWorkSpace as IFeatureWorkspace;

                IEnumDataset AllLayerFromDB = MyWorkSpace.get_Datasets(esriDatasetType.esriDTFeatureClass);
                IDataset     SingleLayer    = AllLayerFromDB.Next();
                while (SingleLayer != null)
                {
                    string LayerText = SingleLayer.Name;
                    comboBox12.Items.Add(LayerText);
                    SingleLayer = AllLayerFromDB.Next();
                }
                comboBox12.Text = comboBox12.Items[0].ToString();
            }
            catch
            {
            }
        }
コード例 #2
0
ファイル: frmTYDataUpload.cs プロジェクト: siszoey/geosufan
        //获得mdb/gdb中要素类
        public List <string> Getfeatureclass(IWorkspace pWorkspaceMDB)
        {
            List <string> list        = new List <string>();
            IEnumDataset  enumDataset = pWorkspaceMDB.get_Datasets(esriDatasetType.esriDTFeatureClass) as IEnumDataset;
            IDataset      dataset     = enumDataset.Next();

            while (dataset != null)
            {
                if (dataset.Type == esriDatasetType.esriDTFeatureClass)
                {
                    //IFeatureClass pFeatureClass = dataset as IFeatureClass;
                    //IDataset pDataset = pFeatureClass as IDataset;;
                    list.Add(dataset.Name);
                    dataset = enumDataset.Next();
                }
            }
            enumDataset = pWorkspaceMDB.get_Datasets(esriDatasetType.esriDTFeatureDataset) as IEnumDataset;
            dataset     = enumDataset.Next();
            while (dataset != null)
            {
                if (dataset.Type == esriDatasetType.esriDTFeatureDataset)
                {
                    IEnumDataset pEnumDataset = dataset.Subsets;
                    IDataset     dataset2     = pEnumDataset.Next();
                    while (dataset2 != null)
                    {
                        list.Add(dataset2.Name);
                        dataset2 = pEnumDataset.Next();
                    }
                }
                dataset = enumDataset.Next();
            }
            return(list);
        }
コード例 #3
0
        public static IRasterBand GetRasterBand(IWorkspace pSDEWorkspace, string strRasterDataset, string strBandName)
        {
            IEnumDataset          pEnumdataset          = pSDEWorkspace.get_Datasets(esriDatasetType.esriDTRasterDataset);
            IRasterBandCollection pRasterBandCollection = null;
            IEnumRasterBand       pEnumRasterBand       = null;
            IRasterBand           pRasterBand           = null;
            IDataset pDataset = pEnumdataset.Next();

            while (pDataset != null)
            {
                if (pDataset.Name == strRasterDataset)
                {
                    pRasterBandCollection = (IRasterBandCollection)pDataset;
                    pEnumRasterBand       = pRasterBandCollection.Bands;
                    pRasterBand           = pEnumRasterBand.Next();
                    while (pRasterBand != null)
                    {
                        if (pRasterBand.Bandname == strBandName)
                        {
                            return(pRasterBand);
                        }
                        pRasterBand = pEnumRasterBand.Next();
                    }
                }
                pDataset = pEnumdataset.Next();
            }
            pRasterBandCollection = null;
            pEnumRasterBand       = null;
            pRasterBand           = null;
            pEnumdataset          = null;
            pDataset = null;
            return(null);
        }
コード例 #4
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));
                        }
                    }
                }
            }
        }
コード例 #5
0
        //加载列表
        private void LoadDataGridView()
        {
            if (comboBoxSource.Text.Trim() != "" && comboBoxCatalog.Text != "")
            {
                dataGridView.Rows.Clear();
                //IWorkspaceFactory Pwf = new FileGDBWorkspaceFactoryClass();
                //IWorkspace pWorkspace = (IWorkspace)(Pwf.OpenFromFile(GetSourcePath(comboBoxSource.Text), 0));
                IWorkspace pWorkspace = GetWorkspace(comboBoxSource.Text);
                if (pWorkspace == null)
                {
                    MessageBox.Show("数据源空间不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                IEnumDataset enumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTRasterCatalog) as IEnumDataset;
                IDataset     dataset     = enumDataset.Next();
                while (dataset != null)
                {
                    if (dataset.Name.Trim() == comboBoxCatalog.Text.Trim())
                    {
                        ITable pTable = dataset as ITable;
                        //IRasterCatalog irastercatalog = (IRasterCatalog)dataset;

                        ICursor pCursor = pTable.Search(null, false);
                        IRow    pRow    = pCursor.NextRow();
                        while (pRow != null)
                        {
                            dataGridView.Rows.Add(new object[] { true, pRow.get_Value(pRow.Fields.FindField("Name")) });
                            pRow = pCursor.NextRow();
                        }
                        return;
                    }
                    dataset = enumDataset.Next();
                }
            }
        }
コード例 #6
0
ファイル: DefaultDataImport.cs プロジェクト: zj8487/HyDM
        protected void RenameClassObjects(IWorkspace wsTarget)
        {
            int          standardID = SysDbHelper.GetStandardIDBySchemaID(this.m_SchemaID);
            IEnumDataset enDataset  = wsTarget.get_Datasets(esriDatasetType.esriDTAny);
            IDataset     dsCurrent  = enDataset.Next();

            while (dsCurrent != null)
            {
                switch (dsCurrent.Type)
                {
                case esriDatasetType.esriDTTable:
                case esriDatasetType.esriDTFeatureClass:
                    RenameClassObject(dsCurrent, standardID);
                    break;

                case esriDatasetType.esriDTFeatureDataset:

                    //RenameClassObject(dsCurrent, standardID);  // FeatureDataset需要改吗

                    IEnumDataset enSubDataset = dsCurrent.Subsets;
                    IDataset     subDataset   = enSubDataset.Next();
                    while (subDataset != null)
                    {
                        RenameClassObject(subDataset, standardID);
                        subDataset = enSubDataset.Next();
                    }
                    break;
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(dsCurrent);

                dsCurrent = enDataset.Next();
            }
        }
コード例 #7
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;
         }
     }
 }
コード例 #8
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();
                }
            }
        }
コード例 #9
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();
        }
コード例 #10
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();
            }
        }
コード例 #11
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("创建拓朴成功!");
            }
        }
コード例 #12
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);
        }
コード例 #13
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);
        }
コード例 #14
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();//刷新
        }
コード例 #15
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);
        }
コード例 #16
0
        /// <summary>
        /// 以迭代形式返回工作空间下的所有要素类,包括数据集中的要素类
        /// </summary>
        /// <param name="workspace">工作空间</param>
        /// <returns>要素类枚举数(要素类集合)</returns>
        private static IEnumerable GetDataset(this IWorkspace workspace)
        {
            //工作空间下的要素类
            IEnumDataset  enumDataset  = workspace.Datasets[esriDatasetType.esriDTFeatureClass];
            IFeatureClass featureClass = enumDataset.Next() as IFeatureClass;

            while (featureClass != null)
            {
                yield return(featureClass);

                featureClass = enumDataset.Next() as IFeatureClass;
            }

            //工作空间下的要素集
            IEnumDataset dsEnumDataset = workspace.Datasets[esriDatasetType.esriDTFeatureDataset];
            IDataset     dataset       = dsEnumDataset.Next();

            while (dataset != null)//遍历要数集
            {
                IFeatureDataset        featureDataset        = (IFeatureDataset)dataset;
                IFeatureClassContainer featureclassContainer = (IFeatureClassContainer)featureDataset;
                IEnumFeatureClass      enumFeatureClass      = featureclassContainer.Classes;
                IFeatureClass          dsFeatureClass        = enumFeatureClass.Next();
                while (dsFeatureClass != null)//在每一个数据集中遍历数据层IFeatureClass
                {
                    yield return(dsFeatureClass);

                    dsFeatureClass = enumFeatureClass.Next();
                }
                dataset = dsEnumDataset.Next();
            }
        }
コード例 #17
0
        private IFeatureClass LoadMetaData()
        {
            string            path = Config.GetConfigValue("2DMdbPipe");
            IWorkspaceFactory pWsF = new AccessWorkspaceFactory();
            IFeatureWorkspace pFWs = pWsF.OpenFromFile(path, 0) as IFeatureWorkspace;

            if (pFWs == null)
            {
                return(null);
            }
            IFeatureDataset pFDs = pFWs.OpenFeatureDataset("Assi_10");

            if (pFDs == null)
            {
                return(null);
            }
            IEnumDataset  pEnumDs = pFDs.Subsets;
            IDataset      fDs;
            IFeatureClass fc = null;

            while ((fDs = pEnumDs.Next()) != null)
            {
                if (fDs.Name == "Metadata")
                {
                    fc = fDs as IFeatureClass;
                }
            }
            return(fc);
        }
コード例 #18
0
 private void comboBoxSource_SelectedIndexChanged(object sender, EventArgs e)
 {
     comboBoxCatalog.Items.Clear();
     comboBoxCatalog.Text = "";
     dataGridView.Rows.Clear();
     if (comboBoxSource.Text.Trim() != "")
     {
         //IWorkspaceFactory Pwf = new FileGDBWorkspaceFactoryClass();
         // IWorkspace pWorkspace = (IWorkspace)(Pwf.OpenFromFile(GetSourcePath(comboBoxSource.Text), 0));
         IWorkspace pWorkspace = GetWorkspace(comboBoxSource.Text);
         if (pWorkspace == null)
         {
             MessageBox.Show("数据源空间不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         IEnumDataset enumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTRasterCatalog) as IEnumDataset;
         IDataset     dataset     = enumDataset.Next();
         while (dataset != null)
         {
             comboBoxCatalog.Items.Add(dataset.Name);
             dataset = enumDataset.Next();
         }
         if (comboBoxCatalog.Items.Count > 0)
         {
             comboBoxCatalog.SelectedIndex = 0;
         }
     }
 }
コード例 #19
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);
            }
        }
コード例 #20
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;
     }
 }
コード例 #21
0
ファイル: Form1.cs プロジェクト: scMarth/fgdb-crawler
        // Explore the File GeoDatabase specified in fgdbPath, print information about its contents to the CSV file 'outfile'
        private static void exploreFGDB(string fgdbPath, string outfile)
        {
            IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(typeof(FileGDBWorkspaceFactoryClass));

            IFeatureWorkspace ifw;

            try
            {
                ifw = (IFeatureWorkspace)workspaceFactory.OpenFromFile(fgdbPath, 0);
            }catch (COMException)
            {
                return;
            }

            if (ifw == null)
            {
                return;
            }

            IWorkspace fw = workspaceFactory.OpenFromFile(fgdbPath, 0);

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

            processIEnumDataset(outfile, ifw, datasets, 0, "", fgdbPath);
        }
コード例 #22
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);
        }
コード例 #23
0
        public static IFeatureClass GetFeatureClassByID(IWorkspace workspace, int classID)
        {
            IEnumDataset enumDs = workspace.get_Datasets(esriDatasetType.esriDTAny);
            IDataset     ds     = enumDs.Next();

            while (ds != null)
            {
                if (ds is IFeatureClass)
                {
                    if ((ds as IFeatureClass).FeatureClassID == classID)
                    {
                        return(ds as IFeatureClass);
                    }
                }
                else if (ds is IFeatureDataset)
                {
                    IEnumDataset enumDs2 = (ds as IFeatureDataset).Subsets;
                    IDataset     ds2     = enumDs2.Next();
                    while (ds2 != null)
                    {
                        if (ds2 is IFeatureClass)
                        {
                            if ((ds2 as IFeatureClass).FeatureClassID == classID)
                            {
                                return(ds2 as IFeatureClass);
                            }
                        }
                        ds2 = enumDs2.Next();
                    }
                }
                ds = enumDs.Next();
            }

            return(null);
        }
コード例 #24
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
     {
     }
 }
コード例 #25
0
        public static IFeatureClass[] GetFeatureClassByDataset(IWorkspace m_workspace, string datasetName)
        {
            List <IFeatureClass> feaList = new List <IFeatureClass>();

            IEnumDataset enumDs = m_workspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
            IDataset     ds     = enumDs.Next();

            while (ds != null)
            {
                if (ds is IFeatureDataset && ds.Name.ToUpper().Trim() == datasetName.ToUpper())
                {
                    IEnumDataset enumFs = (ds as IFeatureDataset).Subsets;
                    IDataset     ds2    = enumFs.Next();
                    while (ds2 != null)
                    {
                        if (ds2 is IFeatureClass)
                        {
                            feaList.Add(ds2 as IFeatureClass);
                        }

                        ds2 = enumFs.Next();
                    }
                }

                ds = enumDs.Next();
            }

            return(feaList.ToArray());
        }
コード例 #26
0
 private IFeatureClass GetUpdateRegionFC()
 {
     try
     {
         string            path = Config.GetConfigValue("2DMdbPipe");
         IWorkspaceFactory pWsF = new AccessWorkspaceFactory();
         IFeatureWorkspace pFWs = pWsF.OpenFromFile(path, 0) as IFeatureWorkspace;
         this.m_Workspace = pFWs as IWorkspace;
         if (pFWs == null)
         {
             return(null);
         }
         IFeatureDataset pFDs = pFWs.OpenFeatureDataset("Assi_10");
         if (pFDs == null)
         {
             return(null);
         }
         IEnumDataset  pEnumDs = pFDs.Subsets;
         IDataset      fDs;
         IFeatureClass fc = null;
         while ((fDs = pEnumDs.Next()) != null)
         {
             if (fDs.Name == "UpdataRegionPLY500")
             {
                 fc = fDs as IFeatureClass;
             }
         }
         return(fc);
     }
     catch (System.Exception ex)
     {
         return(null);
     }
 }
コード例 #27
0
        public static IDataset GetDatasetByName(IWorkspace m_workspace, string name)
        {
            IEnumDataset enum_ds = m_workspace.get_Datasets(esriDatasetType.esriDTAny);
            IDataset     ds      = enum_ds.Next();

            while (ds != null)
            {
                if (ds.Name.ToUpper() == name.ToUpper())
                {
                    return(ds);
                }
                else if (ds is IFeatureDataset)
                {
                    IFeatureDataset fea_ds      = ds as IFeatureDataset;
                    IEnumDataset    enum_sub_ds = fea_ds.Subsets;
                    IDataset        sub_ds      = enum_sub_ds.Next();
                    while (sub_ds != null)
                    {
                        if (sub_ds.Name.ToUpper() == name.ToUpper())
                        {
                            return(sub_ds);
                        }
                        sub_ds = enum_sub_ds.Next();
                    }
                }
                ds = enum_ds.Next();
            }
            return(null);
        }
コード例 #28
0
        //topology code
        public ITopology create_topology(IWorkspace myWSp, string[] FCIndex, string TopologyName)
        {
            IEnumDataset myEDS = myWSp.get_Datasets(esriDatasetType.esriDTFeatureDataset);
            IDataset     myDS  = myEDS.Next();

            if (myDS != null)
            {
                DS_Name = myDS.Name;
                IFeatureDataset myFDS = myDS as IFeatureDataset;

                //IWorkspace myWSp = DS as IWorkspace;

                IFeatureClassContainer myFCContainer = myFDS as IFeatureClassContainer;
                //要素类容器
                ITopologyContainer myTopologyContainer = myFDS as ITopologyContainer;
                ITopology          myTopology          = myTopologyContainer.CreateTopology(TopologyName, myTopologyContainer.DefaultClusterTolerance, -1, "");
                int count = 0;
                while (count < FCIndex.Length)
                {
                    myTopology.AddClass(myFCContainer.get_Class(int.Parse(FCIndex[count])), 5, 1, 1, false);
                    count++;
                }
                return(myTopology);
            }
            else
            {
                MessageBox.Show("Error,your Dataset is not a standar DataSet which can be uesed to created topology!");
                return(null);
            }
        }
コード例 #29
0
		// Adds barriers from object dataset
		private void AddBarriersFromDataset(IDataset objDS)
		{
			if (objDS.Type == esriDatasetType.esriDTFeatureClass)
			{
				// It is Feature Class
				AddBarriersFromFeatureClass(objDS as IFeatureClass);

			}
			else if (objDS.Type == esriDatasetType.esriDTFeatureDataset)
			{
				// It is Feature DatasetClass

				IFeatureDataset objFeatureDS = null;
				objFeatureDS = objDS as IFeatureDataset;

				// Enum Dataset subsets
				IEnumDataset objEnumDS = null;
				objEnumDS = objFeatureDS.Subsets;

				IDataset objSubDS = null;
				objSubDS = objEnumDS.Next();
				while ( objSubDS != null)
				{
					// Add Barriers from subset Feature Class 
					if (objSubDS.Type == esriDatasetType.esriDTFeatureClass)
							AddBarriersFromFeatureClass(objSubDS as IFeatureClass);

					objSubDS = objEnumDS.Next();
				}
			}
		}
コード例 #30
0
        public void Init(IServerObjectHelper pSOH)
        {
            serverObjectHelper  = pSOH;
            mapService          = (MapServer)serverObjectHelper.ServerObject;
            mapServerDataAccess = (IMapServerDataAccess)serverObjectHelper.ServerObject;

            // Check if this service contains a Utility Network layer
            unLayerInfo = soeUtil.GetUNLayerInfo(mapService);
            if (unLayerInfo != null)
            {
                // Get the Utility Network dataset
                IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, unLayerInfo.SubLayers.Element[0]);

                // Get UN dataset
                IFeatureDataset fd        = fc.FeatureDataset;
                IDataset        ds        = (IDataset)fd;
                IEnumDataset    enumSubDS = ds.Subsets;
                IDataset        subDS     = enumSubDS.Next();
                while (subDS != null)
                {
                    if (subDS.Type == esriDatasetType.esriDTUtilityNetwork)
                    {
                        unDataset = subDS;
                        break;
                    }
                    subDS = enumSubDS.Next();
                }

                logger.LogMessage(ServerLogger.msgType.infoStandard, soe_name + ".init()", 200, "UN dataset found: " + unDataset.Name);
            }
        }
コード例 #31
0
        private static System.Collections.ArrayList AddUniques(IEnumDataset fromTheseDatasets, System.Collections.ArrayList AppendTo = null)
        {
            if (AppendTo == null) { AppendTo = new System.Collections.ArrayList(); }

            IDataset aDs = fromTheseDatasets.Next();

            while (aDs != null)
            {
                // If this is a FeatureDataset, we need to
                // Check to see if the dataset is a FeatureClass or a table. This is all we care about
                if ((aDs.Type == esriDatasetType.esriDTFeatureClass) || (aDs.Type == esriDatasetType.esriDTTable))
                {
                    // Cast the DS as an ITable
                    ITable thisTable = aDs as ITable;

                    // Find the Data Source field
                    int fldID = -1;
                    if (thisTable.FindField("DataSourceID") != -1) { fldID = thisTable.FindField("DataSourceID"); }
                    if (thisTable.FindField("DescriptionSourceID") != -1) { fldID = thisTable.FindField("DescriptionSourceID"); }
                    if (thisTable.FindField("DefinitionSourceID") != -1) { fldID = thisTable.FindField("DefinitionSourceID"); }
                    if (fldID == -1) { aDs = fromTheseDatasets.Next(); continue; }
                    IField dsField = thisTable.Fields.get_Field(fldID);

                    // Use the IDataStatistics interface to find unique values
                    IDataStatistics dataStats = new DataStatisticsClass();
                    dataStats.Cursor = thisTable.Search(null, false);
                    dataStats.Field = dsField.Name;
                    System.Collections.IEnumerator uniqueValues = dataStats.UniqueValues;

                    // Setup for iteration
                    uniqueValues.Reset();

                    // Add the unique values to the collection
                    try
                    {
                        uniqueValues.MoveNext();
                        while (uniqueValues.Current != null)
                        {
                            // Only add the value if it isn't already there...
                            if (!AppendTo.Contains(uniqueValues.Current.ToString())) { AppendTo.Add(uniqueValues.Current.ToString()); }
                            uniqueValues.MoveNext();
                        }
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                }
                // Iterate to the next dataset
                aDs = fromTheseDatasets.Next();
            }

            return AppendTo;
        }