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

posted @ 2022-07-06 10:42  为源地理  阅读(84)  评论(0编辑  收藏  举报