去掉了图片转载,原文http://blog.csdn.net/guanzg/article/details/3305241
arcgis进行二次开发中,如何获取geodatabase中的要素类是最基本的一个步骤,以下示意代码实现的就是如何获取geodatabase中的要素类
vate void btn_search_Click(object sender, System.EventArgs e)
{
//getfilename() 为获取文件路径
try
{
string path=getfilename().Substring(0,getfilename().Length-2);
IWorkspaceFactory pFactory=new AccessWorkspaceFactoryClass();
IWorkspace pWorkspace=pFactory.OpenFromFile(@path,0);
IFeatureWorkspace pFeatWorkspace=pWorkspace as IFeatureWorkspace;
IEnumDataset iEDS=pWorkspace.get_Datasets(esriDatasetType.esriDTAny) as IEnumDataset;
iEDS.Reset();
IDataset ids=iEDS.Next() as IDataset;
while (ids is IFeatureDataset)
{
IFeatureDataset pFeatureDataset=pFeatWorkspace.OpenFeatureDataset(ids.Name);
IEnumDataset iEDS1=pFeatureDataset.Subsets;
iEDS1.Reset();
IDataset ids1=iEDS1.Next();
while(ids1 is FeatureClass)
{
IFeatureLayer pFeatureLayer=new FeatureLayerClass();
pFeatureLayer.FeatureClass=pFeatWorkspace.OpenFeatureClass(ids1.Name);
//获取面要素
if(pFeatureLayer.FeatureClass.ShapeType==ESRI.ArcObjects.Core.esriGeometryType.esriGeometryPolygon)
{
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
this.list_feature.Items.Add(pFeatureLayer.Name.ToString());
}
//获取线要素
if(pFeatureLayer.FeatureClass.ShapeType==ESRI.ArcObjects.Core.esriGeometryType.esriGeometryPolyline)
{
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
this.list_polyline.Items.Add(pFeatureLayer.Name.ToString());
}
ids1=iEDS1.Next();
}
ids=iEDS.Next();
}
}
catch(Exception err)
{
MessageBox.Show(err.ToString(),"读取空间数据失败",MessageBoxButtons.OK,MessageBoxIcon.Error);
Application.Exit();
}
finally
{
}
}