zoukankan      html  css  js  c++  java
  • 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 接口用于管理所有的空间书签对象。

  • 相关阅读:
    C++关键字 inline
    MySQL之Join
    leetcode:Isomorphic Strings
    vs中常用的快捷键
    size_t 和 size_type的区别
    使用max函数计算EXCEL个税公式
    什么是数组?
    作业题:输入4个整数,找出其中最大的数。用一个函数来实现. 分别使用结构化方法和函数嵌套的方法。
    c++作业:输入两个整数,用函数求两数之和。函数外部声明有什么作用?
    Java中如果把构造方法也私有化,如何创建对象?Java的单例设计模式——饿汉式和懒汉式区别
  • 原文地址:https://www.cnblogs.com/qiernonstop/p/3068408.html
Copyright © 2011-2022 走看看