ArcEngine打开GDB,SHP的方法

1.打开gdb,shp,mdb的方法

  1. 1.打开gdb方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public List<IDataset> addGdbDataset(){
List<IDataset> dataset = new List<IDataset>();
IWorkspaceFactory pFactory = new FileGDBWorkspaceFactory();
string filePath = "G:\\Tasks\\调查成果.gdb";
IWorkspace pWorkspace = pFactory.OpenFromFile(filePath, 0);
IFeatureWorkspace pFeatWorkspace=pWorkspace as IFeatureWorkspace;
IEnumDataset pEnumDatasets=workspace.get_Datasets(esriDatasetType.esriDTAny) as IEnumDataset;
IDataset pDataset=pEnumDatasets.Next();
while(pDataset!=null)
{
                    if (pDataset.Type == esriDatasetType.esriDTFeatureClass)
                    {
                        //string aliasName = pFeatureWorkspace.OpenFeatureClass(pDataset.Name).AliasName;
                        listFeaClass.Add(pDataset.Name);
                        listDataSet.Add(pDataset);
                    }
                    else if (pDataset.Type == esriDatasetType.esriDTFeatureDataset)
                    {
                        if (pDataset.Name == "自然资源状况分区")
                        {
                            IEnumDataset pESubDataset = pDataset.Subsets;
                            IDataset pSubDataset = pESubDataset.Next();
                            while (pSubDataset != null)
                            {
                                listFeaClass.Add(pSubDataset.Name);
                                listDataSet.Add(pSubDataset);
                                pSubDataset = pESubDataset.Next();
                            }
                        }
                    }
 
                    pDataset = pEnumDatasets.Next();
                }
 return listDataSet;}

  1.2打开shp文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public IFeatureLayer GetShpType()
        {
            OpenFileDialog opfd1 = new OpenFileDialog();
            opfd1.Filter = "shapefile(*.shp)|*.shp|allfile(*.*)|*.*";
            opfd1.Multiselect = false;
            opfd1.InitialDirectory = @"G:\Tasks\06NewTask\shp";
            DialogResult diaLres = opfd1.ShowDialog();
            if (diaLres != DialogResult.OK)
                return null;
            string path1 = opfd1.FileName;
            //openfiledialog 常规使用
 
            string pFolder = Path.GetDirectoryName(path1);
            string pFileName = Path.GetFileName(path1);
            //System.IO.Path
 
            IWorkspaceFactory pworkspaceFactory = new ShapefileWorkspaceFactory();
            //创建工作空间工厂
 
            IWorkspace pWorkspace = pworkspaceFactory.OpenFromFile(pFolder, 0);
            //打开shpfile工作空间
 
            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
            IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass(pFileName);
            //打开要素类
 
            IFeatureLayer pFLayer = new FeatureLayerClass();
            //创建要素图层
 
            pFLayer.FeatureClass = pFC;
            pFLayer.Name = pFC.AliasName;
            ILayer pLayer = pFLayer as ILayer;
            return pFLayer;
            //以上三行:关联图层和要素类
           
        }

  

posted @   拎着红杯子的黄鸭子  Views(1613)  Comments(0Edit  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示