将Access数据文件中的数据集添加到地图中
/// <summary>
/// 添加Access 个人数据库数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void addPGMenuToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Personal Geodatabase(*.mdb)|*.mdb";
dlg.Title = "选择数据";
if (dlg.ShowDialog() == DialogResult.OK)
{
string strPath = dlg.FileName;
IWorkspaceName pWorkspaceName = new WorkspaceNameClass();
pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory";
pWorkspaceName.PathName = strPath;
IName pName = pWorkspaceName as IName;
IWorkspace pWorkspace = pName.Open() as IWorkspace;
IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
AddEnumDatasetToMap(pEnumDataset, m_MapControl.Map);
}
}
循环添加所有数据
/// <summary>
/// 将Dataset添加到地图中
/// </summary>
/// <param name="pEnumDataset"></param>
private void AddEnumDatasetToMap(IEnumDataset pEnumDataset, IMap pMap)
{
if (pEnumDataset == null)
return;
pEnumDataset.Reset();
IDataset pDataset = pEnumDataset.Next();
while (pDataset != null)
{
if (pDataset.Type == esriDatasetType.esriDTFeatureDataset)
{
IEnumDataset pSubEnumDataset = pDataset.Subsets;
AddEnumDatasetToMap(pSubEnumDataset, pMap);
}
else if (pDataset.Type == esriDatasetType.esriDTFeatureClass)
{
IFeatureClass pFeatureClass = pDataset as IFeatureClass;
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name = pFeatureClass.AliasName;
pMap.AddLayer(pFeatureLayer as ILayer);
}
pDataset = pEnumDataset.Next();
}
}