首页 > 代码库 > Arc Engine下数据的加载处理
Arc 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);1516 //打开工作空间并添加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);1415 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;1314 //打开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);1314 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 }2324 IWorkspace pWorkspace = arcSDEWorkspaceOpen("计算机名", "5151", "数据库用户", "密码", "", "sde.DEFAULT");2526 IFeatureWorkspace pFeattureWS = (IFeatureWorkspace)pWorkspace;27 IFeatureClass pFeatureClass = pFeattureWS.OpenFeatureClass("图层名");28 IFeatureLayer pFeatureLayer = new FeatureLayerClass();29 pFeatureLayer.FeatureClass = pFeatureClass;3031 axMapControl1.AddLayer(pFeatureLayer);32 axMapControl1.Refresh();
6、文件地理数据库加载
IFeatureWorkspace pFeatureWorkspace; IFeatureLayer pFeatureLayer; IFeatureDataset pFeatureDataset; string filePath = @"D:\My Documents\ArcGIS\新建文件地理数据库.gdb"; string filename = "haha"; //打开personGeodatabase,并添加图层 IWorkspaceFactory pAccessWorkspaceFactory = new FileGDBWorkspaceFactoryClass(); //打开工作空间并遍历数据集 IWorkspace pWorkspace = pAccessWorkspaceFactory.OpenFromFile(filePath, 0); IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny); pEnumDataset.Reset(); IDataset pDataset = pEnumDataset.Next(); //如果数据集是IFeatureDataset,则遍历它下面的子类 if (pDataset is IFeatureDataset) { pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(filePath, 0); pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name); IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets; pEnumDataset1.Reset(); IDataset pDataset1 = pEnumDataset1.Next(); //如果子类是FeatureClass,则添加到axMapControl1中 if (pDataset1 is IFeatureClass) { pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(filename); pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName; IRgbColor pRgbColor = new RgbColorClass(); pRgbColor.Red = 255; pRgbColor.Green = 255; pRgbColor.Blue = 0; pRgbColor.Transparency = 1; ILineSymbol pLineSymbol = new SimpleLineSymbolClass(); IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); pFillSymbol.Color = pRgbColor; pRgbColor.Transparency = 1; pLineSymbol.Color = pRgbColor; pLineSymbol.Width = 0; pFillSymbol.Outline = pLineSymbol; ISimpleRenderer pSimpleRender = new SimpleRendererClass(); pSimpleRender.Symbol = pFillSymbol as ISymbol; IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer; pGeoFeatureLayer.Renderer = pSimpleRender as IFeatureRenderer; pFeatureLayer = pGeoFeatureLayer as IFeatureLayer; axMapControl1.Map.AddLayer(pFeatureLayer); axMapControl1.ActiveView.Refresh(); }
}
Arc Engine下数据的加载处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。