ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ArcEngine加载地图的多种方式

2021-12-31 12:58:41  阅读:154  来源: 互联网

标签:定义 地图 new 图层 ArcEngine mxd string 加载


ArcEngine加载地图的多种方式

以下加载地图的方法需要写在静态类中,可直接调用

1. 加载shp

        /// <summary>
        /// 添加shp方法
        /// </summary>
        /// <param name="strFileName">shp的文件路径</param>
        /// <returns>返回结果类型为图层类型</returns>
        public static ILayer AddShape(string strFileName)
        {
            //获取路径
            string WorkSpacePath = System.IO.Path.GetDirectoryName(strFileName);
            //获取文件名
            string strShpFileName = System.IO.Path.GetFileName(strFileName);
            //定义接口变量,并对其实例化
            IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
            // 定义工作空间变量,利用工作空间工厂打开shp文件
            IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(WorkSpacePath, 0);
            //定义接口变量进行实例化
            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
            //实例化打开的文件夹
            IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(strShpFileName);
            //定义数据集对象
            IDataset pDataset = pFeatureClass as IDataset;
            //定义特征图层对象
            IFeatureLayer pFeatureLayer = new FeatureLayerClass();
            //定义特征图层的特征数据类
            pFeatureLayer.FeatureClass = pFeatureClass;
            //定义特征图层的名称
            pFeatureLayer.Name = pDataset.Name;
            //定义图层
            ILayer pLayer = pFeatureLayer as ILayer;
            //返回图层
            return pLayer;                                                           
        }

2. 加载栅格

        /// <summary>
        /// 加载栅格文件
        /// </summary>
        /// <param name="strFileName">文件的位置</param>
        /// <returns>返回的图层类型</returns>
        public static ILayer AddRaster(string strFileName)
        {
            //获取地址
            string WorkSpacePath = System.IO.Path.GetDirectoryName(strFileName);                    
            string strRasterFileName = System.IO.Path.GetFileName(strFileName);                     //获取文件名
            IWorkspaceFactory pWorkspaceFactory = new RasterWorkspaceFactoryClass();                //利用工作空间工厂定义接口变量,并实例化该接口
            IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(WorkSpacePath, 0);               //声明并实例化工作空间变量
            IRasterWorkspace pRasterWorkspace = pWorkspace as IRasterWorkspace;                     //声明并实例化栅格工作空间变量
            IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(strRasterFileName);  //定义栅格数据集并利用所选栅格数据文件进行实例化
            //影像金字塔的判断与创建
            IRasterPyramid pRasPyramid = pRasterDataset as IRasterPyramid;
            if (pRasPyramid != null)
            {
                if (!(pRasPyramid.Present)) //没有金字塔
                {
                    pRasPyramid.Create();   //创建金字塔
                }
            }
            IRaster pRaster = pRasterDataset.CreateDefaultRaster();     //定义栅格数据
            IRasterLayer pRasterLayer = new RasterLayerClass();         //定义栅格数据层
            pRasterLayer.CreateFromRaster(pRaster);                     //在栅格数据层中加载数据层数据
            ILayer player = pRasterLayer as ILayer;                     //定义图层
            return player;                                              //返回图层
        }

3. 加载mxd

加载mxd 的方法需要建立一个MapDocument的字段,用于地图属性的访问。对于此对象的引用对大多数地图脚本操作都十分重要。

        // 建立MapDocument类字段,用于访问地图文档的属性和方法
        MapDocument mapDocument = null;

        /// <summary>
        /// 打开mxd文档方法
        /// </summary>
        /// <param name="axMapControl"></param>
        public void OpenFile(AxMapControl axMapControl)
        {
            //打开文件字符流
            OpenFileDialog pDialog = new OpenFileDialog();
            //设置打开文件管理器的标题
            pDialog.Title = "打开mxd文档";
            if (pDialog.ShowDialog() == DialogResult.OK)
            {
                mapDocument = new MapDocumentClass();
                // 获取文件路径
                string pFileName = pDialog.FileName;
                // 检查mxd是否合法
                if (axMapControl.CheckMxFile(pFileName))
                {
                    // 打开地图文档
                    mapDocument.Open(pFileName, "");
                    // 加载地图文档时候将鼠标更改为正在加载状态
                    axMapControl.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerHourglass;
                    // 在MapControl控件加载mxd地图数据
                    axMapControl.LoadMxFile(pFileName);
                    // 加载完成后鼠标更改为默认指针样式
                    axMapControl.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerDefault;
                }
                else
                {
                    MessageBox.Show("加载错误");
                }
            }
        }

本文的代码是参考 https://blog.csdn.net/weiwanshu/article/details/49784019 这篇博客,其中加入了自己的见解,推荐一下这篇博文,非常不错!

标签:定义,地图,new,图层,ArcEngine,mxd,string,加载
来源: https://blog.csdn.net/qq_28816581/article/details/122246068

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有