ArcObjects SDK开发 008 从mxd地图文件说起
1、Mxd文件介绍
ArcGIS的地图文件为.mxd扩展名。Mxd文件的是有版本的,和ArcGIS的版本对应。可以在ArcMap中的File-Save A Copy,保存一个地图拷贝的时候选择Mxd文件的版本,支持的版本如下图所示。

因为我是用ArcMap 10.8截的图,所以这还需要再加一个ArcMap 10.8 Document。一个地图文件包含一个布局对象,一个多或者地图对象以及其他一些附属信息。地图文件不直接存储例如.shp、.tif等实际数据,只是存储一些图层信息以及图层对这些数据的引用。
高版本的ArcMap可以打开同版本和低版本的地图文件。
2、使用ArcMap打开mxd文件
下图是ArcMap自带的一个典型的mxd文件打开的效果。如下图所示。

当前模式为布局模式,即激活的是PageLayout,一共包含了三个地图,其中激活的地图为第一个Conterminous United States。
切换到数据模式,ArcMap显示的是当前激活的地图,如下图所示。

从ArcMap展示上,我们可以看出,一个地图文件,包含了一个布局对象,即PageLayout。包含了多个地图对象,即Map。每个Map都可以作为一个元素在PageLayout上显示,并可以设置自己的显示比例尺,不必统一。针对每个地图,可以添加其关联的比例尺,图例、指北针、网格等智能元素。也可以在布局视图上添加点、线、面以及文字等元素。
ArcMap中,布局和数据视图,同一时刻只能激活一个。而且当数据视图被激活的时候,显示的地图为布局视图中的活动地图。
每个Map都包含了多个图层, 可以为这些图层设置渲染、标注等信息,但并不存储数据本身。我们可以在Map上添加点、线、面以及文字等非数据元素。
3、使用ArcObject SDK打开mxd文件
在ArcObjects SDK中,我们一般使用IMapDocument接口打开mxd文件。在帮助中,查看到的IMapDocument的结构如下图所示。

有几个比较重要的属性。
ActiveView,当布局视图激活的时候,该属性返回的是IPageLayout,当数据视图激活的时候,返回的是布局视图下活动的地图,即IMap。
MapCount表示当前地图文件有几个地图,通过Map[Index]可以获取指定的地图对象。
PageLayout即地图文件包含的布局对象,返回类型为IPageLayout。
IMap和IPageLayout的实现类都继承了IActiveView,即实际开发的时候,IMap和IPageLayout接口类型的变量都可以转换成IActiveView接口。
IMapDocument、IActiveView、IMap和IPageLayout接口之间的关系可与用下图表示。

ArcObjects SDK开发 008 从mxd地图文件说起的更多相关文章
- 打开地图文件和shape文件代码加载Mxd文档
代码加载Mxd文档 用代码添加Mxd文档,用到AxMapControl.LoadMxFile(sFilePath),我们只要将Mxd文档的路径传给这个方法即可 /// <summary> ...
- 《HTML 5网页开发实例具体解释》文件夹
第一篇 从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的总体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1 你是不是真的 ...
- Expo大作战(三十三)--expo sdk api之MapView(地图),MailComposer(磁力传感计),Lottie(动画)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- Android SDK开发与使用的那些事儿
前言 最近由于工作需要,将应用里的部分功能独立了出来,封装成 SDK 提供给合作伙伴使用.由于经验不足,网上也没多少写这方面内容的文章,遇到了不少的坑,决定记录下来. SDK 其实,刚说到要写SDK也 ...
- Android studio 百度地图开发(3)地图导航
Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
- Android studio 百度地图开发(2)地图定位
Android studio 百度地图开发(2)地图定位 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
- Android SDK 开发指南
Android SDK 开发指南 视频详解 以下视频是对融云 Android SDK 开发使用的详细讲解,您可以在阅读文档时配合学习. 更多视频教程如下: CSDN 融云 Android SDK ...
- 微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引
Senparc.Weixin.MP SDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享. ...
- 高拍仪拍照SDK开发(良田影像S300L|S500L)
高拍仪拍照SDK开发下载地址:点击下载 本SDK适用于:良田影像S300L|S500L 高拍仪如图: SDN开发包安装之后找到安装目录,如图: 大家找到各自需要的版本即可,需要注意的是如果需要上传图片 ...
- TortoiseSVN安装以及淘宝 TAE SDK 开发环境的搭建
一.TortoiseSVN 的下载和安装 1.进入TortoiseSVN 官网下载地址http://tortoisesvn.net/downloads.html,根据自己的操作系统位数下载相应最新版本 ...
随机推荐
- 面试突击84:Spring 有几种事务隔离级别?
Spring 中的事务隔离级别和数据库中的事务隔离级别稍有不同,以 MySQL 为例,MySQL 的 InnoDB 引擎中的事务隔离级别有 4 种,而 Spring 中却包含了 5 种事务隔离级别. ...
- 02 uniapp/微信小程序 项目day02
一.分类 1.1 页面布局 首先创建cate的分支 定义基本结构,因为是两个需要滚动的区域,所以这里要用到组件 scroll 这个组件如果是y scroll那就要固定高度,x scroll那就要固定宽 ...
- .Net 不受 EAR 的约束
NPUlrk :https://github.com/NPUlrk 同学在 dotnet/runtime 仓库提出了一共问题: https://github.com/dotnet/runtime/d ...
- Kubernetes实践技巧:资源预留
ubernetes 的节点可以按照节点的资源容量进行调度,默认情况下 Pod 能够使用节点全部可用容量.这样就会造成一个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护 ...
- Traefik 2.0 实现灰度发布
文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247484478&idx=1&sn=238390dc ...
- 在CentO7系统上配置Springboot项目jar包开机自启动
官方文档地址:https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment-ins ...
- 解决inode满
登陆服务器运行df -i 然后运行 for i in /*; do echo $i; find $i |wc -l|sort -nr; done 看看每个文件夹下面的数量 最后发现是/var/spoo ...
- td-agent的v2,v3,v4版本区别
官方地址:https://docs.fluentd.org/quickstart/td-agent-v2-vs-v3-vs-v4
- Docker镜像仓库Harbor之Swagger REST API整合配置
转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...
- MyBatis之ResultMap的association和collection标签详解
一.前言 MyBatis 创建时的一个思想是:数据库不可能永远是你所想或所需的那个样子. 我们希望每个数据库都具备良好的第三范式或 BCNF 范式,可惜它们并不都是那样. 如果能有一种数据库映射模式, ...