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. 几篇关于MySQL数据同步到Elasticsearch的文章---第二篇:canal 实现Mysql到Elasticsearch实时增量同步

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484377&idx=1&sn=199bc88 ...

  2. 虚拟线程 - VirtualThread源码透视

    前提 JDK19于2022-09-20发布GA版本,该版本提供了虚拟线程的预览功能.下载JDK19之后翻看了一下有关虚拟线程的一些源码,跟早些时候的Loom项目构建版本基本并没有很大出入,也跟第三方J ...

  3. 网络安全(一)主动进攻之DNS基础和ettercap实现DNS流量劫持

    alittlemc,个人原创,个人理解和观点.若有错误.不理解请与我联系,谢谢! 介绍了DNS的解析过程. DNS劫持的思路和实践. DNS 域名 以为live.bilibili.com为例子,从后到 ...

  4. Docker | Compose创建mysql容器

    本文通过Docker Compose来创建mysql容器 在linux服务器上创建文件,用于管理容器 mkdir docker-mysql cd docker-mysql vim docker-com ...

  5. Golang可能会踩的58个坑之初级篇

    前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 ...

  6. 一篇文章带你掌握MyBatis简化框架——MyBatisPlus

    一篇文章带你掌握MyBatis简化框架--MyBatisPlus 我们在前面的文章中已经学习了目前开发所需的主流框架 类似于我们所学习的SpringBoot框架用于简化Spring开发,我们的国人大大 ...

  7. 01-MySQL8主从详解

    主从原理 master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中:slave服务器会在一定时间间隔内对master二进制日志进行探测其是 ...

  8. 34.HyperLinkedModelSerializer详解

    HyperLinkedModelSerializer继承ModelSerializer,只是自动多出了一个url字段,其他都是一样的 不同之处在于使用超链接来表示关联关系而不是主键 默认情况下Hype ...

  9. Optimize(优化实验)

    十大优化法则 1.更快(本课程重点!) 2.更省(存储空间.运行空间) 3.更美(UI 交互) 4.更正确(本课程重点!各种条件下) 5.更可靠 6.可移植 7.更强大(功能) 8.更方便(使用) 9 ...

  10. ysoserial commonscollections3 分析

    cc3利用链如下: TrAXFilter(Templates templates) TemplatesImpl->newTransformer() TemplatesImpl->getTr ...