收藏 分销(赏)

AE-加载Shapefile、栅格、CAD、PersonGDB、SDE数据.doc

上传人:仙人****88 文档编号:12006607 上传时间:2025-08-26 格式:DOC 页数:6 大小:155.50KB 下载积分:10 金币
下载 相关 举报
AE-加载Shapefile、栅格、CAD、PersonGDB、SDE数据.doc_第1页
第1页 / 共6页
AE-加载Shapefile、栅格、CAD、PersonGDB、SDE数据.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
AE 加载Shapefile、栅格、CAD、PersonGDB、SDE数据 ArcEngine加载图层的五个步骤 1.创建一个类工厂 2.使用类工厂创建一个要使用的工作区 3.使用工作区打开并得到图层的dataset 4.把dataset装入到新建的图层实例 5.把图层加载到MapControl控件 1. 加载Shapefile数据             IWorkspaceFactory pWorkspaceFactory;              IFeatureWorkspace pFeatureWorkspace;              IFeatureLayer pFeatureLayer;                //获取当前路径和文件名              OpenFileDialog dlg = new OpenFileDialog();              dlg.Filter = "Shape(*.shp)|*.shp|All Files(*.*)|*.*";              dlg.Title = "Open Shapefile data";              dlg.ShowDialog();             string strFullPath = dlg.FileName;             if (strFullPath == "") return;             int Index = strFullPath.LastIndexOf("//");             string filePath = strFullPath.Substring(0, Index);             string fileName = strFullPath.Substring(Index + 1);             //打开工作空间并添加shp文件             pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();             pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);             pFeatureLayer = new FeatureLayerClass();                      pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName);             pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;             axMapControl1.Map.AddLayer(pFeatureLayer);             axMapControl1.ActiveView.Refresh(); 2.加载栅格数据             IWorkspaceFactory pWorkspaceFactory;             IRasterWorkspace pRasterWorkspace;              OpenFileDialog dlg = new OpenFileDialog();              dlg.Filter = "Layer File(*.lyr)|*.jpg;*.bmp;*.tiff";              dlg.Title = "Open Raster Data File";              dlg.ShowDialog();              //获取当前路径和文件名              string strFullPath = dlg.FileName;             if (strFullPath == "") return;             int Index = strFullPath.LastIndexOf("//");             string fileName = strFullPath.Substring(Index + 1);             string filePath = strFullPath.Substring(0, Index);             pWorkspaceFactory = new RasterWorkspaceFactoryClass();             pRasterWorkspace = (IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);             IRasterDataset pRasterDataset = (IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);             IRasterLayer pRasterLayer = new RasterLayerClass();             pRasterLayer.CreateFromDataset(pRasterDataset);             axMapControl1.Map.AddLayer(pRasterLayer);             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();
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服