麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

ArcGIS Engine 10 开发手册(4-4)获取数据库中的要素类

在 ArcGIS Engine 中,要得到某一个类,首要要获取工作空间,然后进入工作空间再得到相应的东西,也就是以下两个步骤:

  1. 获取工作空间;
  2. 获取相应的要素类。

我们定义一个函数用来获取个人数据库的路径

public string WsPath () {
  string WsFileName = "";
  OpenFileDialog OpenFile = new OpenFileDialog ();
  OpenFile.Filter = "个人数据库(MDB)|*.mdb";
  DialogResult DialogR = OpenFile.ShowDialog ();
  if (DialogR == DialogResult.Cancel)
  {

  } else
  {
    WsFileName = OpenFile.FileName;
  }
  return WsFileName;
}

要获取要素类,首先获取工作空间,然后对工作空间中的要素类进行遍历,代码如下:

private void button2_Click (object sender, EventArgs e)
{
  string WsName = WsPath ();
  if (WsName != "")
  {
    IWorkspaceFactory pWsFt = new AccessWorkspaceFactoryClass ();
    IWorkspace pWs = pWsFt.OpenFromFile (WsName, 0);
    IEnumDataset pEDataset = pWs.get_Datasets (esriDatasetType.esriDTAny);
    IDataset pDataset = pEDataset.Next ();
    while (pDataset != null)
    {
      if (pDataset.Type == esriDatasetType.esriDTFeatureClass)
      {
        FeatureClassBox.Items.Add (pDataset.Name);
      }
      //如果是数据集
      else if (pDataset.Type == esriDatasetType.esriDTFeatureDataset)
      {
        IEnumDataset pESubDataset = pDataset.Subsets;
        IDataset pSubDataset = pESubDataset.Next ();
        while (pSubDataset != null)
        {
          FeatureClassBox.Items.Add (pSubDataset.Name);
          pSubDataset = pESubDataset.Next ();
        }
      }
      pDataset = pEDataset.Next ();
    }
  }

  FeatureClassBox.Text = FeatureClassBox.Items[0].ToString ();
}

效果如下:

ArcGIS Engine 10 开发手册全集

ArcGIS Engine 10 开发手册全集: ArcGIS Engine 10 开发手册

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

已有 3 条评论

  1. 麻辣GIS-aaa
    1#
    aaa  · 2020-07-06 17:08

    当subdataSet中有拓扑图层的时候,在IDataset pSubDataset = pESubDataset.Next ();会异常,啥情况

  2. 麻辣GIS-wy
    2#
    wy  · 2023-05-27 19:14

    当gdb中要素类的坐标系是自定义的投影坐标系,openfeatureclass无法枚举到要素类或者数据集是什么原因?如何解决?

留言板(小编看到第一时间回复)