加载个人数据库 不知道PATH 是System.IO.Path还是 ESRI.ArcGIS.Geomitry 百度上说确定好路径 但不知道怎么加 代码如下
IWorkspaceFactory pAccessWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
IFeatureDataset pFeatureDataset;
// 获取当前路径和文件名
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = " Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.* " ;
dlg.Title = " Open PersonGeodatabase file " ;
dlg.ShowDialog();
string strFullPath = dlg.FileName;
if (strFullPath == "" ) return ;
// 打开personGeodatabase,并添加图层
pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass();
// 打开工作空间并遍历数据集
IWorkspace pWorkspace = pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0 );
IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
pEnumDataset.Reset();
IDataset pDataset = pEnumDataset.Next();
// 如果数据集是IFeatureDataset,则遍历它下面的子类
if (pDataset is IFeatureDataset)
{
pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0);
pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
pEnumDataset1.Reset();
IDataset pDataset1 = pEnumDataset1.Next();
//如果子类是FeatureClass,则添加到axMapControl1中
if (pDataset1 is IFeatureClass)
{
pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
axMapControl1.Map.AddLayer(pFeatureLayer);
axMapControl1.ActiveView.Refresh();
}
else
{
MessageBox.Show("No FeatureLayer!");
}
}
else
{
pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass("图层名");
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
axMapControl1.Map.AddLayer(pFeatureLayer);
axMapControl1.ActiveView.Refresh();
}
}
}
}
IWorkspaceFactory pAccessWorkspaceFactory;
IFeatureWorkspace pFeatureWorkspace;
IFeatureLayer pFeatureLayer;
IFeatureDataset pFeatureDataset;
// 获取当前路径和文件名
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = " Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.* " ;
dlg.Title = " Open PersonGeodatabase file " ;
dlg.ShowDialog();
string strFullPath = dlg.FileName;
if (strFullPath == "" ) return ;
// 打开personGeodatabase,并添加图层
pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass();
// 打开工作空间并遍历数据集
IWorkspace pWorkspace = pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0 );
IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
pEnumDataset.Reset();
IDataset pDataset = pEnumDataset.Next();
// 如果数据集是IFeatureDataset,则遍历它下面的子类
if (pDataset is IFeatureDataset)
{
pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0);
pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
pEnumDataset1.Reset();
IDataset pDataset1 = pEnumDataset1.Next();
//如果子类是FeatureClass,则添加到axMapControl1中
if (pDataset1 is IFeatureClass)
{
pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
axMapControl1.Map.AddLayer(pFeatureLayer);
axMapControl1.ActiveView.Refresh();
}
else
{
MessageBox.Show("No FeatureLayer!");
}
}
else
{
pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass("图层名");
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
axMapControl1.Map.AddLayer(pFeatureLayer);
axMapControl1.ActiveView.Refresh();
}
}
}
}