• 【转】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

  • 相关阅读:
    BigDecimal 和NumberFormat及 获取总页数的应用
    格式化小数点和百分号 DecimalFormatter
    Vue 项目开发
    js 对象补充
    Vue 实例成员
    Vue 指令
    Vue 介绍
    Vue
    request-html
    Python 中的经典类新式类
  • 原文地址:https://www.cnblogs.com/dwf07223/p/3048207.html
Copyright © 2020-2023  润新知