1、从ArcMap角度看结构

一个Mxd文件包含一个PageLayout对象和一个多多个Map对象,每个Map会被包成MapFrame,添加到PageLayout中。我们用ArcMap打开一个mxd文件,在布局模式下看PageLayout都包含了什么。

PageLayout包含的内容以及内容之间的关系较为复杂,整体上可以分为两个部分,Page和Elment。Elment又包含3类,MapFrame、MapSurroundFrame和普通的Element。每个MapFrame都会加载一个Map,并可以设置网格(MapGrid),每个MapSurroundFrame都对应一个MapFrame。看起来比较复杂,我们对应一下实际的东西就容易理解了。

MapFrame,翻译过来就是地图容器,Map会放到MapFrame后添加到PageLayout中。地图文档有几个Map,PageLayout中就会有几个MapFrame。MapSurroundFrame是MapSurround的容器,继承IMapSurround的对象有指北针、比例尺以及图例等。这些对象都和Map密切相关。所以每个MapSurroundFrame都会关联一个MapFrame,不然MapSurroundFrame中的MapSurround对象就不知道该如何渲染了。

2、从SDK的角度看

如果从ArcMap上看感觉乱糟糟的,那么从SDK的角度看会清晰很多。

PageLayout包含两个最重要的内容,一是继承实现了IPageLayout接口,定义了Page属性,Page较为简单。第二是继承实现了IGraphicsContainer接口,这样就可以在PageLayout上面加载和显示Element。

在继承IElement接口的类中,有两个特殊的类,MapFarme和MapSurroundFrame。MapFarme是Map的载体,Map通过MapFarme加载显示到了PageLayout上。MapSurroundFrame为和地图相关的图饰对象的载体,例如指北针、比例尺、图例等,这些对象都继承了IMapSurround接口,通过MapSurroundFrame加载显示到PageLayout上。每个MapSurroundFrame都对应一个MapFarme,从而确定加载的指北针、比例尺是针对哪个地图的。

MapFarme有一个比较重要的属性MapGrids,可以管理多种针对MapFrame的各种格网,例如经纬网、公里网等。

3、Page

Page对象可通过IPageLayout的Page属性获得,为IPage接口类型。Page翻译过来就是纸张的意思,其意义也是如此,标识我们要出的图要绘制在多大的纸张上。我们打开ArcMap,在没加载任何地图的情况下,系统会创建一个空地图。切换到布局视图下,最外面的黑色边框即为Page的范围。如下图所示。

处于选中状态的绿色虚线是MapFrame,当前加载的地图没有任何图层。其外面的黑色实线是Page的边界,我们出图的时候,只能出位于Page范围内的元素。Page默认单位是厘米,也可以设置为毫米或者英寸。Page默认是A4纸大小,其大小是可以设置的。Page左下角为0,0点,向右为X轴正方向,向上为Y轴正方向。

Page可设置的属性信息不多,我们可以参考下ArcObject SDK帮助中IPage的定义来看Page可以设置哪些信息。

从帮助上看,大概可以设置Page的边框、背景、大小以及单位等信息。我们平常使用的主要还是设置大小和单位。

ArcObjects SDK 012 PageLayout和Page的更多相关文章

  1. ArcObjects SDK(AE)10.1在vs2012安装的方法

    ArcObjects SDK(以下简称AO)10.1只支持vs2010,如果装了vs2012,再安装AO会提示一串鸡肠(英文),意思是AO10.1只支持vs2010 想在2012下安装,可以通过修改注 ...

  2. WPF vs2015,vs2012 添加ArcObjects SDK

    一:如果是vs2015,找到注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\下面的这两个,并且将名称和数 ...

  3. ArcGIS10.2最新全套下载地址

    http://www.tuicool.com/articles/VfaMfy 免责声明: 该链接来自于哥伦比亚大学或者牛津大学的网站链接, 下载 软件之前确保有正版的软件授权 ,本博客只是转载了网站链 ...

  4. Arc GIS engine10.2与VS2012的安装及匹配步骤

      本文章已收录于:   .embody { padding: 10px 10px 10px; margin: 0 -20px; border-bottom: solid 1px #ededed } ...

  5. VS2012中丢失ArcGIS模板的解决方法

    VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及ArcObjec ...

  6. 在VisualStudio2012环境下安装ArcEngine 10.0

    因为ArcEngine10.0默认对应的开发工具为VS2010,在安装了VS2012的情况下安装ArcEngine10.0(注意:我自己的环境为VS2012和ArcEngine10.0,对于其他版本在 ...

  7. Convert part to feature command

    Search 库主页 Related Links ArcObjects SDK for ArcGIS 10Microsoft Help System Documentation Convert par ...

  8. vs2012 arcgis engine 10 丢失arcgis模板

    1.Visual Studio 2012环境下安装ArcGIS Engine 10 Visual Studio 2012环境下安装ArcObject SDK for the Microsoft .Ne ...

  9. ArcGIS 10.1 for Server 扩展开发(SOE)

    原文连接:http://blog.csdn.net/arcgisserver_book/article/details/7869368 第一章为什么使用SOE 在ArcGIS 10.1中ArcGIS ...

  10. 视频流GPU解码在ffempg的实现(二)-GPU解码器

    1.gpu解码器的基本调用流程 要做视频流解码,必须要了解cuda自身的解码流,因为二者是一样的底层实现,不一样的上层调用 那cuda的解码流程是如何的呢 在https://developer.nvi ...

随机推荐

  1. 如何在Elasticsearch中使用pipeline API来对事件进行处理

    一个processor就像是Logstash里的一个filter pipeline是一组processor

  2. 基于CentOS 8服务器来搭建FastDFS高可用集群环境

    服务器版本 我们在服务器的命令行输入如下命令来查看服务器的内核版本. [root@localhost lib]# cat /etc/redhat-release CentOS Linux releas ...

  3. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(24)-Fiddler如何优雅地在正式和测试环境之间来回切换-中篇

    1.简介 在开发或者测试的过程中,由于项目环境比较多,往往需要来来回回地反复切换,那么如何优雅地切换呢?宏哥今天介绍几种方法供小伙伴或者童鞋们进行参考. 2.实际工作场景 2.1问题场景 (1)已发布 ...

  4. Vue子->父组件传值

    父组件引入: Import Test from'' 父页面使用: <Test ref="test" @m1="m2"><Test/> 子 ...

  5. docker搭建yapi接口文档系统、Idea中上传接口、在线调用

    一.前言 在我们后端开发中,必不可少的是接口的交接,有很多种方式,常见的就是swagger,不过这个侵入性太强了.还有就是接口文档的框架,比如今天小编带大家一起搭建的yapi,在公司还是挺常见的! 今 ...

  6. scrapy操作mysql/批量下载图片

    1.操作mysql items.py meiju.py 3.piplines.py 4.settings.py -------------------------------------------- ...

  7. F118校准(一)-- 安装CA310驱动程序及SDK

    1. 准备工作 下载Ca310_drv.zip文件并解压,备用. http://www.xk-image.com/download/blog/0001_F118校准/Ca310_drv.zip 准备好 ...

  8. 39.BasicAuthentication认证

    BasicAuthentication认证介绍 BasicAuthentication使用HTTP基本的认证机制 通过用户名/密码的方式验证,通常用于测试工作,尽量不要线上使用 用户名和密码必须在HT ...

  9. Unity——射线检测(鼠标点击开关门效果)

    Unity射线检测--实现简单的开关门效果 简要:通过鼠标点击来发射一条射线,来获得射线所碰到的物体名称,再通过改变门的Rotation值来实现开关门的效果. 一.代码实现 1.1 简易的场景搭建 注 ...

  10. 六、dockerfile

    一.什么是镜像 镜像可以看成是由多个镜像层叠加起来的一个文件系统(通过UnionFS与AUFS文件联合系统实现),镜像层也可以简单理解为一个基本的镜像,而每个镜像层之间通过指针的形式进行叠加. 根据上 ...