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失败!", "提示");
}
C#AE加载MDB数据
猜你喜欢
转载自blog.csdn.net/qq_38370387/article/details/89188423
今日推荐
周排行