【转】ArcGIS Engine中加载数据
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 else39 { 40 MessageBox.Show("No FeatureLayer!"); 41 }42 }43 else44 { 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 thrownew 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();
部分内容参考:http://www.cnblogs.com/vakinglee/archive/2006/09/22/511606.html
原文链接:http://www.cnblogs.com/wolf-pl/archive/2008/04/03/1135920.html
博客地址: http://www.cnblogs.com/dwf07223,本文以学习、研究和分享为主,欢迎转载,转载请务必保留此出处。若本博文中有不妥或者错误处请不吝赐教。 |