码迷,mamicode.com
首页 > 其他好文 > 详细

Arc Engine下数据的加载处理

时间:2014-10-24 14:14:03      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   for   sp   文件   数据   

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();

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下数据的加载处理

标签:style   blog   color   io   ar   for   sp   文件   数据   

原文地址:http://www.cnblogs.com/bayberryan/p/4048023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!