C#AE加载MDB数据

IFeatureLayer pFeatureLayer = new FeatureLayerClass();
            openFileDialog = new OpenFileDialog();
            openFileDialog.Title = "打开MDB文件";
            openFileDialog.Filter = "Personal Geodatabase(*.mdb)|*.mdb";
            openFileDialog.ShowDialog();
            try
            {
                IFeatureWorkspace pFeatureWorkspace;
                // 获取当前路径和文件名 
                openFullPath = openFileDialog.FileName;
                if (openFullPath == "") return;
                // 打开personGeodatabase,并添加图层 
                IWorkspaceFactory pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass();
                //加载独立要素类,若无则不执行while循环
                IWorkspace pWorkspace = pAccessWorkspaceFactory.OpenFromFile(openFullPath, 0);
                pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
                IEnumDataset Temp_AllIndependentFeatureClass = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass);
                IFeatureClass Each_IndependentFeatureClass = Temp_AllIndependentFeatureClass.Next() as IFeatureClass;
                while (Each_IndependentFeatureClass != null)
                {
                    pFeatureLayer = new FeatureLayerClass();
                    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(Each_IndependentFeatureClass.AliasName);
                    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                    axMapControl1.AddLayer(pFeatureLayer as ILayer);
                    axMapControl1.Refresh();
                    Each_IndependentFeatureClass = Temp_AllIndependentFeatureClass.Next() as IFeatureClass;
                }
                axMapControl1.ActiveView.Refresh();
                // 如果数据集是IFeatureDataset,则遍历它下面的子类 
                // 打开工作空间并遍历数据集 
                pWorkspace = pAccessWorkspaceFactory.OpenFromFile(openFullPath, 0);
                IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureDataset);
                pEnumDataset.Reset();
                IDataset pDataset = pEnumDataset.Next();
                if (pDataset is IFeatureDataset)
                {
                    IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
                    IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
                    pEnumDataset1.Reset();
                    IDataset pDataset1 = pEnumDataset1.Next();
                    // 如果子类是FeatureClass,则添加到axMapControl1中 
                    if (pDataset1 is IFeatureClass)
                    {
                        while (pDataset1 != null)
                        {
                            pFeatureLayer = new FeatureLayerClass();
                            pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
                            pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                            axMapControl1.Map.AddLayer(pFeatureLayer);
                            axMapControl1.ActiveView.Refresh();
                            pDataset1 = pEnumDataset1.Next();
                        }
                    }
                    else
                    {
                        MessageBox.Show("No FeatureLayer!");
                    }
                }
            }
            catch
            {
                MessageBox.Show("加载MDB失败!", "提示");
            }

猜你喜欢

转载自blog.csdn.net/qq_38370387/article/details/89188423