第三章_地图控件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主要内容
一、Map对象 二、Layer对象
一、 Map对象
地图的组成
打开ArcMap程序后,用户首先看到的是数据视图 (data view) 。 ArcMap 的主要功能查看数据和地理分析都是在这个视图中完成的。数据视图其实是 一个Map对象。
一、 Map对象
地图的组成
在ArcMap中,可以显示在Map上的图像分为两大类,即地理数据和图形 element(元素),他们的共同特征是这两者都有Geometry属性,拥有明确的几何形状。 1、地理数据包括矢量类型的要素数据、栅格数据、TIN数据等,这些数据保存在 地理数据库或数据文件中,他们是用于GIS分析制图的源数据; 2、元素是另一种可以显示在Map上的对象。在使用ArcMap的过程中,用户可以 使用"Draw”工具栏的图形工具在Map上直接绘制一个矩形或者线等对象,在 PageLayout视图中也给地图上插入指北针、图例、比例尺等图形对象,这些都是图形 元素,它们被用于地图制版过程中。
一、 Map对象
IGraphicsContainer接口
使用这个接口的方法往Map中添加元素,实际上是往其中的一个图形图层上添 加元素对象的过程,如下面代码所示。 IGraphicsContainer pGraphicsContainer; pGraphicsContainer=pMap as IGraphicsContainer 通过AddElement方法用于将一个元素放入Map对象中,下而是一个添加元素的 例子
一、 Map对象
地图的组成
Map组件的主要接的有:IMap, IGraphicContainer, IActiveView等,如图所示。
一、 Map对象
IMap接口--图层管理
Map接口是开始多数GIS任务的起点,主要用于管理Map对象中的Layer对象、要 素选择集、标注引擎和空间参考等对象。 Map对象可以显示地理数据,而这些地理数据都是通过某个图层引入到地图对象 中的,因此可以认为Map对象是一个存放Layer对象的容器,Map接口定义了大量的方 法来操作它其中的图层对象。下而简要介绍几个主要的方法: AddLayer方法可以将一个图层对象加入Map对象中去 AddLayers可以一次加入一个或多个图层,当然多个图层对象必须放在一个 EnumLayer对象中才能被引入,后者是一个图层枚举对象,可以保存多个图层的指 针。 CIearLayers可以清除Map中所有的图层; LayerCount则指明这个地图对象中包含了多少个图层对象。 Getlayer(index)属性可以根据地图中图层的索引值得到具体的图层对象,如: Layer player; player=pMap.get_Layer(2);
二、 Map对象
IGraphicsContainer接口
IGraphicsContainer.DeleteElement方法用于删除Map对象中的一个给定的元 素。 如果在Map中改变了一个元素的形状或者符号对象,用户希望能够即时更新后在 地图上表现出来,这个更新的方法也非常简单,使用UpdateElement即可。
二、 Map对象
IGraphicsContainer接口
IGraphicsContainer.LocateElements方法是使用一个点来选择元素,它击要传 入一个点对象和一个容差值,Map对象会将所有处于点容差周围的元素选择到。下 面的例子中,代码在MapControl的MouseDown事件中: Point pPt; pPt=new PointClass(); //获得鼠标点击处的点对象 pPt.PutCoords(e.mapX, e.mapY); IEnumElement pEnumEle; //选择元素,其中1为容忍值 pEnumEle=pGraphicsContainer.LocateElements(pPt, 1); Element pElement; //获得单个元素 pElement=pEnumEle.Next();
另外一个可以使用的是LocateElementsByEnvelope方法,它和SelectByShape方 法类同,是使用鼠标拖曳一个矩形区域,从而选择到这个区域内的所以元素。
二、 Layer对象
ILayer接口
ILayer是所有图层类都实现了的一般接口,它定义了所有图层的公共方法和属性, 如Name属性可以返回图层名称,MaximumScale和 MinimumScale可以用于获取和设 置图层可以显示的最大和最小比例。 ILayer.ShowTips属性用于指小当鼠标放在图层某个要素上的时候,是否会出现 Tip(提示),而TipText确定图层提小显小的区域。下面是展示一个显示图层Tip的代码:
//定义个line类刑的Element ILineElement pLineEle; pLineEle=new LineElementClass(); //设段这个Element的符、J对象 pLineEle.Symbol=pSymbol; Element pEle; pEle=pLineEle as Element; //设置元素的集合体对象属性 pEle.Geometry=pGeo; // 将元素添加到Map对象 pGraphicsContainer.AddElement(pEle, 0); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,nu1l, null)
一、 Map对象
IActiveView接口
IActiveView接口定义了Map对象的数据显示功能。这个接口管理着ArcMap 主要的程序窗口和所有绘制图形的方法。使用这个接口的方法可以改变视图的范围, 可以得到ScreenDisplay对象的指针,可以显小或隐藏标尺和滚动条,也可以刷新 视图。 在ArcObjects中,有两个对象实现了这个接口, Map和PageLayout。这两 个对象分别代表了ArcMap中两种不同的视图:数据(Data)视图和布局(Layout)视图, 在任何一个时刻仅仅只有一个视图能够处于活动状态。
一、 Map对象
IGraphicsContainer接口
Map对象可以显示图形元素(Graphics Element),它使用IGraphicsContainer 接口来管理这些元素对象(包括图形元素和框架元素)。IGraphicsContainer返回的是 Map对象中处于活动状态的图形图层(graphics layer)的指针。
一、 Map对象
IActiveView接口
在使用MapControl控件编程的方式下获得ActiveView: IMap pMap; pMap=axMapControll.Map; IActiveView pActiveView; pActiveView=pMap as IActiveView; 或pActiveView=axMapControll .ActiveView; 在PageLayoutControl控件中获得正在使用的地图对象的方法如下: IActiveView pActiveView; pActiveView=axPageLayoutControll.PageLayout as IActiveView; 或pActiveView=axPageLayoutControll.ActiveView; pMap=pActiveView.FocusMap;
一、 Map对象
IActiveView接口
一、 Map对象
IActiveView接口
Extent属性返回Map对象当前视图的范围,它是一个Envelope对象,即所谓 的包络线对象。FuIlExtent属性则可以返回视图的全图范围,因此要显小整幅地图 的代码为: //将当前地图的范围设置为全幅范围 pActiveView. Extwk.baidu.comnt=pActiveView.FuIlExtent; pActiveView.Refresh(); ScreenDisplay属性指向一个ScreenDisplay对象。每一个视图对象都有一个 ScreenDisplay对象用于控制视图的图形绘制工作,使用这个属性会得到一个与当 前正在使用的视图相关的ScreenDisplay对象。例如要在数据视图上绘制一条线 必须先得到一个当前地图对象的IActiveView接口,通过IActiveView.ScreenDisplay获 得地图的ScreenDisplay对象的指针。ScreenDisplay对象将在后而的章节中详细叙述。
一、 Map对象
IMap接口--选择对象
一、 Map对象
IMap接口--选择对象
IMap.FeatureSelection属性可以返回map中被选择的要素,SelectionCount 属性可以得到Map对象的要素选择集中的要素的数目,CIearSelection方法用于清 除Map对象中的选择集。
一、 Map对象
IMap接口--选择对象
在ArcMap使用“Select Features”工具在地图上拖曳后,被选择的要素 将会高亮显示,即使这些要素放在不同图层上的。这个工具没有什么限制, 不管是点、线还是多边形,都可以同时选择到。这些被高亮显示的要素称为 “FeatureSelection”(要素选择集),程序有多种方式可以用于选择要素,如 SelectByShape方法就是其中之。 SelectByShape方法实现了ArcMap软件“select Features”功能,选择 Map所有处于拖曳范围内的要素,无论是哪个图层,把选择的要素添加到 Map的Selectionset里面。
二、 Layer对象
要素图层(FeatureLayer)-- IFeatureLayer接口
要素数据是GIS中最常使用的数据类型之一,它可以用于表示离散矢量对象的信息, 而承载要素数据的要素图层(FeatureLayer)是本节研究的重点。本节会介绍要素图层 的几个重要接口定义的方法和属性。 IFeatureLayer接口用于管理要素图层的数据源,即要素类(Featureclass)。 IFeatureLayer.DataSourceType属性返回要素图层的数据源的类型,FeatureLayer 的数据源有: Personal Geodatabase SDE Shapefile Coverage Edge CAD
一、 Map对象
IMap接口--图层管理
如图5-2所示,图中是MapControl控件的属性对话框中的图层列表,其中可以 看到3号图层(states)放在列表框的最下面:
在添加地图的过程中,第一个加入Map对象的图层是0号,第二个图层就是1号, 0号图层放在图层对话框中最上面,但是在地图中实际放在最下面。如果在一个Map中 放入两个面类型的图层,会发现第一次加入的图层会被后一次加入的图层所掩盖。这 种层概念是数据组织的一种有效形式。
二、 Layer对象
要素图层(FeatureLayer)-- IFeatureLayer接口
要素数据是GIS中最常使用的数据类型之一,它可以用于表示离散矢量对象的信息, 而承载要素数据的要素图层(FeatureLayer)是本节研究的重点。本节会介绍要素图层 的几个重要接口定义的方法和属性。 IFeatureLayer接口用于管理要素图层的数据源,即要素类(Featureclass)。 IFeatureLayer.DataSourceType属性返回要素图层的数据源的类型,FeatureLayer 的数据源有: Personal Geodatabase SDE Shapefile Coverage Edge CAD
一、 Map对象
地图的组成
在ArcMap中, Map对象具有双重身份,一方面是数据的管理容器,可以加载地理 数据和可视化元素,扮演了一个数据管理器的角色;另一方面, 又可以让用户看到这 些数据,即扮演了一个数据显示器的角色。当程序员把地理数据加载到Map对象的时 候,它是数据的管理者;在刷新地图、改变显示范围的时候,它就是一个数据的显示者。
一、Map对象 二、Layer对象
一、 Map对象
地图的组成
打开ArcMap程序后,用户首先看到的是数据视图 (data view) 。 ArcMap 的主要功能查看数据和地理分析都是在这个视图中完成的。数据视图其实是 一个Map对象。
一、 Map对象
地图的组成
在ArcMap中,可以显示在Map上的图像分为两大类,即地理数据和图形 element(元素),他们的共同特征是这两者都有Geometry属性,拥有明确的几何形状。 1、地理数据包括矢量类型的要素数据、栅格数据、TIN数据等,这些数据保存在 地理数据库或数据文件中,他们是用于GIS分析制图的源数据; 2、元素是另一种可以显示在Map上的对象。在使用ArcMap的过程中,用户可以 使用"Draw”工具栏的图形工具在Map上直接绘制一个矩形或者线等对象,在 PageLayout视图中也给地图上插入指北针、图例、比例尺等图形对象,这些都是图形 元素,它们被用于地图制版过程中。
一、 Map对象
IGraphicsContainer接口
使用这个接口的方法往Map中添加元素,实际上是往其中的一个图形图层上添 加元素对象的过程,如下面代码所示。 IGraphicsContainer pGraphicsContainer; pGraphicsContainer=pMap as IGraphicsContainer 通过AddElement方法用于将一个元素放入Map对象中,下而是一个添加元素的 例子
一、 Map对象
地图的组成
Map组件的主要接的有:IMap, IGraphicContainer, IActiveView等,如图所示。
一、 Map对象
IMap接口--图层管理
Map接口是开始多数GIS任务的起点,主要用于管理Map对象中的Layer对象、要 素选择集、标注引擎和空间参考等对象。 Map对象可以显示地理数据,而这些地理数据都是通过某个图层引入到地图对象 中的,因此可以认为Map对象是一个存放Layer对象的容器,Map接口定义了大量的方 法来操作它其中的图层对象。下而简要介绍几个主要的方法: AddLayer方法可以将一个图层对象加入Map对象中去 AddLayers可以一次加入一个或多个图层,当然多个图层对象必须放在一个 EnumLayer对象中才能被引入,后者是一个图层枚举对象,可以保存多个图层的指 针。 CIearLayers可以清除Map中所有的图层; LayerCount则指明这个地图对象中包含了多少个图层对象。 Getlayer(index)属性可以根据地图中图层的索引值得到具体的图层对象,如: Layer player; player=pMap.get_Layer(2);
二、 Map对象
IGraphicsContainer接口
IGraphicsContainer.DeleteElement方法用于删除Map对象中的一个给定的元 素。 如果在Map中改变了一个元素的形状或者符号对象,用户希望能够即时更新后在 地图上表现出来,这个更新的方法也非常简单,使用UpdateElement即可。
二、 Map对象
IGraphicsContainer接口
IGraphicsContainer.LocateElements方法是使用一个点来选择元素,它击要传 入一个点对象和一个容差值,Map对象会将所有处于点容差周围的元素选择到。下 面的例子中,代码在MapControl的MouseDown事件中: Point pPt; pPt=new PointClass(); //获得鼠标点击处的点对象 pPt.PutCoords(e.mapX, e.mapY); IEnumElement pEnumEle; //选择元素,其中1为容忍值 pEnumEle=pGraphicsContainer.LocateElements(pPt, 1); Element pElement; //获得单个元素 pElement=pEnumEle.Next();
另外一个可以使用的是LocateElementsByEnvelope方法,它和SelectByShape方 法类同,是使用鼠标拖曳一个矩形区域,从而选择到这个区域内的所以元素。
二、 Layer对象
ILayer接口
ILayer是所有图层类都实现了的一般接口,它定义了所有图层的公共方法和属性, 如Name属性可以返回图层名称,MaximumScale和 MinimumScale可以用于获取和设 置图层可以显示的最大和最小比例。 ILayer.ShowTips属性用于指小当鼠标放在图层某个要素上的时候,是否会出现 Tip(提示),而TipText确定图层提小显小的区域。下面是展示一个显示图层Tip的代码:
//定义个line类刑的Element ILineElement pLineEle; pLineEle=new LineElementClass(); //设段这个Element的符、J对象 pLineEle.Symbol=pSymbol; Element pEle; pEle=pLineEle as Element; //设置元素的集合体对象属性 pEle.Geometry=pGeo; // 将元素添加到Map对象 pGraphicsContainer.AddElement(pEle, 0); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,nu1l, null)
一、 Map对象
IActiveView接口
IActiveView接口定义了Map对象的数据显示功能。这个接口管理着ArcMap 主要的程序窗口和所有绘制图形的方法。使用这个接口的方法可以改变视图的范围, 可以得到ScreenDisplay对象的指针,可以显小或隐藏标尺和滚动条,也可以刷新 视图。 在ArcObjects中,有两个对象实现了这个接口, Map和PageLayout。这两 个对象分别代表了ArcMap中两种不同的视图:数据(Data)视图和布局(Layout)视图, 在任何一个时刻仅仅只有一个视图能够处于活动状态。
一、 Map对象
IGraphicsContainer接口
Map对象可以显示图形元素(Graphics Element),它使用IGraphicsContainer 接口来管理这些元素对象(包括图形元素和框架元素)。IGraphicsContainer返回的是 Map对象中处于活动状态的图形图层(graphics layer)的指针。
一、 Map对象
IActiveView接口
在使用MapControl控件编程的方式下获得ActiveView: IMap pMap; pMap=axMapControll.Map; IActiveView pActiveView; pActiveView=pMap as IActiveView; 或pActiveView=axMapControll .ActiveView; 在PageLayoutControl控件中获得正在使用的地图对象的方法如下: IActiveView pActiveView; pActiveView=axPageLayoutControll.PageLayout as IActiveView; 或pActiveView=axPageLayoutControll.ActiveView; pMap=pActiveView.FocusMap;
一、 Map对象
IActiveView接口
一、 Map对象
IActiveView接口
Extent属性返回Map对象当前视图的范围,它是一个Envelope对象,即所谓 的包络线对象。FuIlExtent属性则可以返回视图的全图范围,因此要显小整幅地图 的代码为: //将当前地图的范围设置为全幅范围 pActiveView. Extwk.baidu.comnt=pActiveView.FuIlExtent; pActiveView.Refresh(); ScreenDisplay属性指向一个ScreenDisplay对象。每一个视图对象都有一个 ScreenDisplay对象用于控制视图的图形绘制工作,使用这个属性会得到一个与当 前正在使用的视图相关的ScreenDisplay对象。例如要在数据视图上绘制一条线 必须先得到一个当前地图对象的IActiveView接口,通过IActiveView.ScreenDisplay获 得地图的ScreenDisplay对象的指针。ScreenDisplay对象将在后而的章节中详细叙述。
一、 Map对象
IMap接口--选择对象
一、 Map对象
IMap接口--选择对象
IMap.FeatureSelection属性可以返回map中被选择的要素,SelectionCount 属性可以得到Map对象的要素选择集中的要素的数目,CIearSelection方法用于清 除Map对象中的选择集。
一、 Map对象
IMap接口--选择对象
在ArcMap使用“Select Features”工具在地图上拖曳后,被选择的要素 将会高亮显示,即使这些要素放在不同图层上的。这个工具没有什么限制, 不管是点、线还是多边形,都可以同时选择到。这些被高亮显示的要素称为 “FeatureSelection”(要素选择集),程序有多种方式可以用于选择要素,如 SelectByShape方法就是其中之。 SelectByShape方法实现了ArcMap软件“select Features”功能,选择 Map所有处于拖曳范围内的要素,无论是哪个图层,把选择的要素添加到 Map的Selectionset里面。
二、 Layer对象
要素图层(FeatureLayer)-- IFeatureLayer接口
要素数据是GIS中最常使用的数据类型之一,它可以用于表示离散矢量对象的信息, 而承载要素数据的要素图层(FeatureLayer)是本节研究的重点。本节会介绍要素图层 的几个重要接口定义的方法和属性。 IFeatureLayer接口用于管理要素图层的数据源,即要素类(Featureclass)。 IFeatureLayer.DataSourceType属性返回要素图层的数据源的类型,FeatureLayer 的数据源有: Personal Geodatabase SDE Shapefile Coverage Edge CAD
一、 Map对象
IMap接口--图层管理
如图5-2所示,图中是MapControl控件的属性对话框中的图层列表,其中可以 看到3号图层(states)放在列表框的最下面:
在添加地图的过程中,第一个加入Map对象的图层是0号,第二个图层就是1号, 0号图层放在图层对话框中最上面,但是在地图中实际放在最下面。如果在一个Map中 放入两个面类型的图层,会发现第一次加入的图层会被后一次加入的图层所掩盖。这 种层概念是数据组织的一种有效形式。
二、 Layer对象
要素图层(FeatureLayer)-- IFeatureLayer接口
要素数据是GIS中最常使用的数据类型之一,它可以用于表示离散矢量对象的信息, 而承载要素数据的要素图层(FeatureLayer)是本节研究的重点。本节会介绍要素图层 的几个重要接口定义的方法和属性。 IFeatureLayer接口用于管理要素图层的数据源,即要素类(Featureclass)。 IFeatureLayer.DataSourceType属性返回要素图层的数据源的类型,FeatureLayer 的数据源有: Personal Geodatabase SDE Shapefile Coverage Edge CAD
一、 Map对象
地图的组成
在ArcMap中, Map对象具有双重身份,一方面是数据的管理容器,可以加载地理 数据和可视化元素,扮演了一个数据管理器的角色;另一方面, 又可以让用户看到这 些数据,即扮演了一个数据显示器的角色。当程序员把地理数据加载到Map对象的时 候,它是数据的管理者;在刷新地图、改变显示范围的时候,它就是一个数据的显示者。