yycGIS

我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容。 我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系。

Less is more, more is different!

导航

ArcGIS中的 Map 对象

Map 对象是ArcGIS Engine 的主要对象,本章将给大家介绍地图组成结构,
如何创建地图,如何对组成地图的对象进行操作,在介绍这些内容时尽量结合
ArcMap 学习效果会更好。
在Map 对象上能显示的图形有两类一类是地理数据,一类是元素。地理数
据包括矢量类型的要素数据,栅格数据,Tin 等表面数据等,这些数据都保存在
Geodatabase 或数据文件如shapefile 中,它们是用于GIS 分析制图的源数据;

而元素是另一种可以显示在Map 上的对象,它分为两部分一类是图形元素,
一类是框架元素,图形元素可以显示出来,而框架元素充当了“容器”的角色。
在ArcMap 中可以使用“Draw”工具在Map 上直接绘制一个矩形,圆形,文本
等对象,在布局视图上也可以给地图添加指北针,图例,比例尺等图形对象,这
些都是图形元素。

在ArcMap 中Map 对象是由MXDocument 对象的MapFrame 对象管理,
MapFrame 是一个框架元素。
Map 对象有双重身份,一方面是数据的管理容器,可以加载地理数据和图
形元素,扮演了数据管理器的角色,另一方面它又可以让用户看到这些数据即扮
演了数据显示器的角色,当加载数据到Map 对象的时候,Map 对象是数据的管
理者;当改变视图范围,刷新地图的时候它是数据的显示者。
Map 对象主要实现的接口由IMap, IGraphicContainer, IActiveView,
IMapBookmark 等接口。
IMap 接口主要用于管理Map 对象中的Layer 对象,要素选择集对象,
MapSourround 对象,空间参考等对象。
Map 对象可以显示图形元素(Graphics Element),Map 对象通过
IGraphicsContainer 接口来管理这些元素对象,包括图形元素和框架元素。
IGraphicsContainer 返回的是Map对象中处于活动状态的Graphics layer 引用指针,
它可以是一个Basicgraphicslayer,也可以是CompositeGraphicsLayer 中的一个图层,
或者是一个FDOGraphicsLayer 注记图层。

以下代码片段演示如何添加一个Element 到Map 上:

 1 /// <summary>
 2 /// 添加临时元素到地图窗口上
 3 /// </summary>
 4 /// <param name="pMapCtrl">地图控件</param>
 5 /// <param name="pEle">单个元素</param>
 6 /// <param name="pEleColl">元素集合</param>
 7 public static void AddTempElement(AxMapControl pMapCtrl, IElement pEle,
 8 IElementCollection pEleColl)
 9 {
10 try
11 {
12 IMap pMap = pMapCtrl.Map;
13 IGraphicsContainer pGCs = pMap as IGraphicsContainer;
14 if (pEle != null)
15 pGCs.AddElement(pEle, 0);
16 if (pEleColl != null)
17 if (pEleColl.Count > 0)
18 pGCs.AddElements(pEleColl, 0);
19 IActiveView pAV = (IActiveView)pMap;
20 //需要刷新才能即时显示
21 pAV.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, pAV.Extent);
22 }
23 catch (Exception Err)
24 {
25 MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK,
26 MessageBoxIcon.Information);
27 }
28 }

IActiveView 接口定义了Map 对象的数据显示功能。使用该接口可以改变视
图的范围,刷新视图。
IActiveView 的PartialRefresh(esriViewGeography, pLayer, null)用于刷新指定图层:
IActiveView的PartialRefresh(esriViewGeography, null, null) 用于刷新刷新所有图层:
IActiveView的PartialRefresh(esriViewGeoSelection, null, null) 用于刷新所选择的对
象:
IActiveView 的PartialRefresh(esriViewGraphics, null, null) 用于刷新图形元素:
IActiveView 的PartialRefresh(esriViewGraphics, pElement, null) 用于刷新指定图形
元素
IActiveView 的PartialRefresh(esriViewGraphics, null, null) 用于刷新所有图形元素

IActiveView的PartialRefresh(esriViewGraphicSelection, null, null)用于刷新所选择的
图元。
IMapBookmark 接口用于管理所有的空间书签对象。

posted on 2013-05-09 10:15  yycGIS  阅读(813)  评论(0编辑  收藏  举报