ArcGIS Engine中加载数据
http://blog.csdn.net/gisstar/article/details/4206822
分类: AE开发积累2009-05-21 16:491118人阅读评论(0)收藏举报
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();
ArcGIS Engine中加载数据