ArcEngine开发 - 打开地图读取图层
地图文档(IMapDocument)对象是ArcEngine开发最基本对象,可以说是所有操作的第一步。使用IMapDocument可以检查和打开地图文档,读取图层信息和文档信息,为源GIS并为您详细分析实现方法并提供核心的示例代码。
实现方法
使用IMapDocument接口判断地图文档是否有效(get_IsMapDocument),打开(Open)并返回Map对象,遍历图层(ILayer)并绑定到自定义的控件上;最后将打开的地图显示到axMapControl控件上;使用Close方法关闭地图文档。

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

核心代码
// 打开地图读取图层
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
ArcEngine开发 - 打开地图读取图层的更多相关文章
- 利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson
一直想开发一个软件取代ArcGIS Server,该软件使用ArcEngine开发,以Windows Service形式发布,部署在服务端上,解决wmts地图服务发布和空间查询的问题,经过不断的研究. ...
- arcengine 开发经典帖 【强烈推荐仔细研读】
转自原文 arcengine 开发经典帖 使用ArcGIS Engine 开发自定义GIS应用: 第一部分:使用ArcGIS Engine 发布自定义GIS应用软件-全面了解ArcGIS Engine ...
- ArcGIS Engine开发之地图基本操作(4)
ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...
- 使用ESMap的地图平台开发三维地图
本文简单的介绍使用ESmap的SDK开发(DIY自己地图的)一个地图的过程.若有不足,欢迎指正. 一.创建地图 只需四步,从无到有,在浏览器中创建一个自己的三维地图,炫酷到爆! 第一步:引入ESM ...
- iOS开发系列--地图与定位
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...
- Arcengine 开发,FeatureClass新增feature时“The Geometry has no z-value”或"The Geometry has null z-value"的解决方案
Arcengine 开发,当图层含有Z值时,新增的feature没有Z值就会 出现“The Geometry has no z-value”的错误.意思很明显,新增的geometry没有Z值. 此时按 ...
- Qt+QGis二次开发:创建临时图层并添加要素
开发环境:Win10 + VS2010 + Qt 4.8.6 + QGis 2.14.4 其实本文实现的功能类似于QGis中“添加文本数据图层”的一个简化版,本文不会涉及到对话框的使用,不通过与用户互 ...
- ArcEngine开发遇到的问题(转)
ArcEngine开发遇到的问题 https://blog.csdn.net/u013751758/article/category/6971559 转载 2018年02月11日 17:28:11 1 ...
- 转-iOS开发系列--地图与定位
来自: http://www.cnblogs.com/kenshincui/p/4125570.html#autoid-3-4-0 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功 ...
随机推荐
- 驱动开发:内核枚举DpcTimer定时器
在笔者上一篇文章<驱动开发:内核枚举IoTimer定时器>中我们通过IoInitializeTimer这个API函数为跳板,向下扫描特征码获取到了IopTimerQueueHead也就是I ...
- AlphaTensor论文阅读分析
AlphaTensor论文阅读分析 目前只是大概了解了AlphaTensor的思路和效果,完善ing deepmind博客在 https://www.deepmind.com/blog/discove ...
- Linux基础_1_简介
Linux是什么 一款优秀的操作系统软件,特性是一切皆文件:一切设备皆文件!一切设备的设置皆修改配置文件!一切服务的搭建皆修改配置文件!(庞大的树形结构文件系统) 根据FHS标准,Linux目录有以下 ...
- 齐博x1如何取消某个标签的缓存时间
标签默认会有缓存, 如果你要强制取消缓存时间的话, 可以加上下面的参数 time="-1"如下图所示 标签默认缓存时间是10分钟, 你也可以改成其它时间 比如 time=" ...
- go-zero docker-compose 搭建课件服务(一):编写服务api和proto
0.转载 go-zero docker-compose 搭建课件服务(一):编写服务api和proto 0.1源码地址 https://github.com/liuyuede123/go-zero-c ...
- Spark基本知识
Spark基本知识 Spark 是一种基于内存的快速.通用.可扩展的大数据分析计算引擎. spark与hadoop的区别 Hadoop Hadoop 是由 java 语言编写的,在分布式服务器集群上存 ...
- 自动化利器 Ansible - 从了解到应用
本文说明 本系列使用 ansible 2.9.27 版本来说明和汇总相关信息. # cat /etc/system-release Red Hat Enterprise Linux Server re ...
- 2022春每日一题:Day 18
题目:[JSOI2007]字符加密 很常见的做法,破环为链,然后以2n为总长再后缀排序,然后对于SA[i] < n 的,说明第i小后缀的编号是小于n的,也就是说,以i开头的编号是合法的,那么输出 ...
- Go语言核心36讲24
你好,我是郝林,今天我们继续来聊聊panic函数.recover函数以及defer语句的内容. 我在前一篇文章提到过这样一个说法,panic之中可以包含一个值,用于简要解释引发此panic的原因. 如 ...
- centos7 ftp服务搭建记录
1. 装包与卸载 yum -y install vsftpd yum -y autoremove vsftpd&&rm -rf /etc/vsftpd /etc/pam.d/vsftp ...