C#AE加载MDB数据

12 篇文章 0 订阅
4 篇文章 0 订阅
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失败!", "提示");
            }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值