yushff

code the world。

导航

ArcGIS Engine中数据的加载 (转)

Posted on 2016-08-13 23:56  yushff  阅读(420)  评论(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(); 转载: http://www.cnblogs.com/atravellers/archive/2010/01/13/1646601.html