ArcGIS Engine中加载数据

来源:互联网 发布:淘宝联盟没有订单 编辑:程序博客网 时间:2024/05/06 12:39

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