• ArcEngine开发 打开地图读取图层


    地图文档(IMapDocument)对象是ArcEngine开发最基本对象,可以说是所有操作的第一步。使用IMapDocument可以检查和打开地图文档,读取图层信息和文档信息,为源GIS并为您详细分析实现方法并提供核心的示例代码。

    实现方法

    使用IMapDocument接口判断地图文档是否有效(get_IsMapDocument),打开(Open)并返回Map对象,遍历图层(ILayer)并绑定到自定义的控件上;最后将打开的地图显示到axMapControl控件上;使用Close方法关闭地图文档。

    img

    通过IDocumentInfo接口也可以获取作者、标题、关键字、主题、备注等信息。

    img

    核心代码

    // 打开地图读取图层
    public void OpenDocMap(TreeView treeView)
    {
        OpenFileDialog dialog = new OpenFileDialog();
        dialog.InitialDirectory = Application.StartupPath + "\\地图MXD";
        dialog.Filter = "*.mxd|*.mxd";
        if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            string szPath = dialog.FileName;
    
            //定义MapDocumentClass
            IMapDocument mapDocument = new MapDocumentClass();
            if (mapDocument.get_IsMapDocument(szPath))
            {
                //打开地图
                mapDocument.Open(szPath, null);
                IMap map;
    
                //清除图层树
                treeView.Nodes.Clear();
    
                //遍历地图图层
                for (int i = 0; i <= mapDocument.MapCount - 1; i++)
                {
                    map = mapDocument.get_Map(i);
                    TreeNode rootNode = treeView.Nodes.Add(map.Name);
    
                    IEnumLayer enumLayer = map.get_Layers(null, true);
                    enumLayer.Reset();
                    ILayer layer = enumLayer.Next();
                    while (layer != null)
                    {
                        rootNode.Nodes.Add(layer.Name);
                        layer = enumLayer.Next();
                    }
                }
    
    
                //读取地图文档信息
                IDocumentInfo docInfo = mapDocument as IDocumentInfo;
                TreeNode node = treeView.Nodes.Add("文档信息:");
                node.Nodes.Add("作者:" + docInfo.Author);
                node.Nodes.Add("标题:" + docInfo.DocumentTitle);
                node.Nodes.Add("关键字:" + docInfo.Keywords);
                node.Nodes.Add("主题:" + docInfo.Subject);
                node.Nodes.Add("备注:" + docInfo.Comments);
    
                treeView.ExpandAll();
    
                //在Map控件中显示地图
                axMapControl_Main.Map = mapDocument.get_Map(0);
                axMapControl_Main.DocumentFilename = szPath;
            }
    
            //关闭地图文档
            mapDocument.Close();
        }            
    }
    

    技术支持

    如果有任何疑问或问题,可联系微信:wygis2022 , 企鹅:1811335143

  • 相关阅读:
    设计数据库步骤
    sql练习题
    多表连接查询
    数据约束
    管理并行SQL执行的进程
    关于Oracle数据库后台进程
    配置数据库驻留连接池
    为共享服务器配置Oracle数据库
    关于数据库驻留连接池
    关于专用和共享服务器进程
  • 原文地址:https://www.cnblogs.com/wygeo/p/16449874.html
Copyright © 2020-2023  润新知