zoukankan      html  css  js  c++  java
  • 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                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/wolf-pl/archive/2008/04/03/1135920.html
  • 相关阅读:
    用Darwin和live555实现的直播框架
    用Darwin和live555实现的直播框架
    VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    VS2010编译和运行项目错误
    C#如何使用VS2010与SQL2008建立链接及初步调用(转)
    linQ to sql 查询生成的sql语句
    查看Linq to Sql生成的sql语句(转)
    linq to sql 项目移植后,数据库实体类需要重新创建?
    什么是Asp.net Core?和 .net core有什么区别?(转)
    ASP.NET Core 2.0 使用支付宝PC网站支付实现代码(转)
  • 原文地址:https://www.cnblogs.com/yuxuetaoxp/p/1804931.html
Copyright © 2011-2022 走看看