ArcEngine 数据加载的几种类型

1.加载Shapefile数据
 1             IWorkspaceFactory pWorkspaceFactory;
 2             IFeatureWorkspace pFeatureWorkspace;
 3             IFeatureLayer pFeatureLayer;
 4
 5              // 获取当前路径和文件名
 6             OpenFileDialog dlg  =   new  OpenFileDialog();
 7             dlg.Filter  =   " Shape(*.shp)|*.shp|All Files(*.*)|*.* " ;
 8             dlg.Title  =   " Open Shapefile data " ;
 9             dlg.ShowDialog();
10              string  strFullPath  =  dlg.FileName;
11              if  (strFullPath  ==   "" return ;
12              int  Index  =  strFullPath.LastIndexOf( " // " );
13              string  filePath  =  strFullPath.Substring( 0 , Index);
14              string  fileName  =  strFullPath.Substring(Index  +   1 );
15
16              // 打开工作空间并添加shp文件
17             pWorkspaceFactory  =   new  ShapefileWorkspaceFactoryClass();
18             pFeatureWorkspace  =  (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,  0 );
19             pFeatureLayer  =   new  FeatureLayerClass();
20         
21             pFeatureLayer.FeatureClass  =  pFeatureWorkspace.OpenFeatureClass(fileName);
22             pFeatureLayer.Name  =  pFeatureLayer.FeatureClass.AliasName;
23             axMapControl1.Map.AddLayer(pFeatureLayer);
24             axMapControl1.ActiveView.Refresh();

2.加载栅格数据
 1             IWorkspaceFactory pWorkspaceFactory;
 2             IRasterWorkspace pRasterWorkspace;
 3
 4             OpenFileDialog dlg  =   new  OpenFileDialog();
 5             dlg.Filter  =   " Layer File(*.lyr)|*.jpg;*.bmp;*.tiff " ;
 6             dlg.Title  =   " Open Raster Data File " ;
 7             dlg.ShowDialog();
 8              // 获取当前路径和文件名
 9              string  strFullPath  =  dlg.FileName;
10              if  (strFullPath  ==   "" return ;
11              int  Index  =  strFullPath.LastIndexOf( " // " );
12              string  fileName  =  strFullPath.Substring(Index  +   1 );
13              string  filePath  =  strFullPath.Substring( 0 , Index);
14
15             pWorkspaceFactory  =   new  RasterWorkspaceFactoryClass();
16             pRasterWorkspace  =  (IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath,  0 );
17             IRasterDataset pRasterDataset  =  (IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);
18             IRasterLayer pRasterLayer  =   new  RasterLayerClass();
19             pRasterLayer.CreateFromDataset(pRasterDataset);
20             axMapControl1.Map.AddLayer(pRasterLayer);
21             axMapControl1.ActiveView.Refresh();

3.加载CAD数据
 1             IWorkspaceFactory pWorkspaceFactory;
 2             IFeatureWorkspace pFeatureWorkspace;
 3             IFeatureLayer pFeatureLayer;
 4             IFeatureDataset pFeatureDataset;
 5              // 获取当前路径和文件名
 6             OpenFileDialog dlg  =   new  OpenFileDialog();
 7             dlg.Filter  =   " CAD(*.dwg)|*.dwg|All Files(*.*)|*.* " ;
 8             dlg.Title  =   " Open CAD Data file " ;
 9             dlg.ShowDialog();
10              string  strFullPath  =  dlg.FileName;
11              if  (strFullPath  ==   "" return ;
12              int  Index  =  strFullPath.LastIndexOf( " // " );
13              string  filePath  =  strFullPath.Substring( 0 , Index);
14              string  fileName  =  strFullPath.Substring(Index  +   1 );
15              // 打开CAD数据集
16             pWorkspaceFactory  =   new  CadWorkspaceFactoryClass();
17             pFeatureWorkspace  =  (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,  0 );
18              // 打开一个要素集
19             pFeatureDataset  =  pFeatureWorkspace.OpenFeatureDataset(fileName);
20              // IFeaturClassContainer可以管理IFeatureDataset中的每个要素类   
21             IFeatureClassContainer pFeatClassContainer  =  (IFeatureClassContainer)pFeatureDataset;
22              // 对CAD文件中的要素进行遍历处理 
23              for  ( int  i  =   0 ; i  <  pFeatClassContainer.ClassCount  -   1 ; i ++ )
24              {
25                IFeatureClass pFeatClass = pFeatClassContainer.get_Class(i);
26                if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)
27                    //如果是注记,则添加注记层
28                    pFeatureLayer = new CadAnnotationLayerClass();
29                else//如果是点、线、面,则添加要素层
30                {
31                    pFeatureLayer = new FeatureLayerClass();
32                    pFeatureLayer.Name = pFeatClass.AliasName;
33                    pFeatureLayer.FeatureClass = pFeatClass;
34                    axMapControl1.Map.AddLayer(pFeatureLayer);
35                    axMapControl1.ActiveView.Refresh();
36                }

37            }
4.加载PersonGeodatabase数据
 1             IWorkspaceFactory pAccessWorkspaceFactory;
 2             IFeatureWorkspace pFeatureWorkspace;
 3             IFeatureLayer pFeatureLayer;
 4             IFeatureDataset pFeatureDataset;
 5
 6              // 获取当前路径和文件名
 7             OpenFileDialog dlg  =   new  OpenFileDialog();
 8             dlg.Filter  =   " Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.* " ;
 9             dlg.Title  =   " Open PersonGeodatabase file " ;
10             dlg.ShowDialog();
11              string  strFullPath  =  dlg.FileName;
12              if  (strFullPath  ==   "" return ;
13
14              // 打开personGeodatabase,并添加图层
15             pAccessWorkspaceFactory  =   new  AccessWorkspaceFactoryClass();
16              // 打开工作空间并遍历数据集
17             IWorkspace pWorkspace  =  pAccessWorkspaceFactory.OpenFromFile(strFullPath,  0 );
18             IEnumDataset pEnumDataset  =  pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
19             pEnumDataset.Reset();
20             IDataset pDataset  =  pEnumDataset.Next();
21              // 如果数据集是IFeatureDataset,则遍历它下面的子类
22              if  (pDataset  is  IFeatureDataset)
23              {
24                pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0);
25                pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
26                IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
27                pEnumDataset1.Reset();
28                IDataset pDataset1 = pEnumDataset1.Next();
29                //如果子类是FeatureClass,则添加到axMapControl1中
30                if (pDataset1 is IFeatureClass)
31                {
32                    pFeatureLayer = new FeatureLayerClass();
33                    pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
34                    pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
35                    axMapControl1.Map.AddLayer(pFeatureLayer);
36                    axMapControl1.ActiveView.Refresh();
37                }

38                else
39                {
40                    MessageBox.Show("No FeatureLayer!");
41                }

42            }

43              else
44              {
45                pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
46                pFeatureLayer = new FeatureLayerClass();
47                pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass("图层名");
48                pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
49                axMapControl1.Map.AddLayer(pFeatureLayer);
50                axMapControl1.ActiveView.Refresh();
51            }
5.加载SDE数据库数据
 1          public  ESRI.ArcGIS.Geodatabase.IWorkspace arcSDEWorkspaceOpen(String server, String instance, String user, String password, String database, String version)
 2          {
 3            try
 4            {
 5                // Create and populate the property set
 6                ESRI.ArcGIS.esriSystem.IPropertySet propertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass();
 7                propertySet.SetProperty("SERVER", server);
 8                propertySet.SetProperty("INSTANCE", instance);
 9                propertySet.SetProperty("DATABASE", database);
10                propertySet.SetProperty("USER", user);
11                propertySet.SetProperty("PASSWORD", password);
12                propertySet.SetProperty("VERSION", version);
13
14                ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2 workspaceFactory;
15                workspaceFactory = (ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)new SdeWorkspaceFactoryClass();
16                return workspaceFactory.Open(propertySet, 0);
17            }

18            catch (Exception e)
19            {
20                throw new Exception(String.Format("arcSDEWorkspaceOpen: {0}", e.Message), e);
21            }

22        }

23
24             IWorkspace pWorkspace  =  arcSDEWorkspaceOpen( " 计算机名 " " 5151 " "数据库 用户 " " 密码 " "" " sde.DEFAULT " );
25
26             IFeatureWorkspace pFeattureWS  =  (IFeatureWorkspace)pWorkspace;
27             IFeatureClass pFeatureClass  =  pFeattureWS.OpenFeatureClass( "图层名 " );
28             IFeatureLayer pFeatureLayer  =   new  FeatureLayerClass();
29             pFeatureLayer.FeatureClass  =  pFeatureClass;
30
31             axMapControl1.AddLayer(pFeatureLayer);
32             axMapControl1.Refresh();
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值