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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值