第三章_地图控件.ppt_第1页
第三章_地图控件.ppt_第2页
第三章_地图控件.ppt_第3页
第三章_地图控件.ppt_第4页
第三章_地图控件.ppt_第5页
已阅读5页,还剩18页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主要内容 一 Map对象二 Layer对象 一 Map对象 地图的组成打开ArcMap程序后 用户首先看到的是数据视图 dataview ArcMap的主要功能查看数据和地理分析都是在这个视图中完成的 数据视图其实是一个Map对象 一 Map对象 地图的组成在ArcMap中 可以显示在Map上的图像分为两大类 即地理数据和图形element 元素 他们的共同特征是这两者都有Geometry属性 拥有明确的几何形状 1 地理数据包括矢量类型的要素数据 栅格数据 TIN数据等 这些数据保存在地理数据库或数据文件中 他们是用于GIS分析制图的源数据 2 元素是另一种可以显示在Map上的对象 在使用ArcMap的过程中 用户可以使用 Draw 工具栏的图形工具在Map上直接绘制一个矩形或者线等对象 在PageLayout视图中也给地图上插入指北针 图例 比例尺等图形对象 这些都是图形元素 它们被用于地图制版过程中 一 Map对象 地图的组成在ArcMap中 Map对象具有双重身份 一方面是数据的管理容器 可以加载地理数据和可视化元素 扮演了一个数据管理器的角色 另一方面 又可以让用户看到这些数据 即扮演了一个数据显示器的角色 当程序员把地理数据加载到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 属性可以根据地图中图层的索引值得到具体的图层对象 如 Layerplayer player pMap get Layer 2 一 Map对象 IMap接口 图层管理如图5 2所示 图中是MapControl控件的属性对话框中的图层列表 其中可以看到3号图层 states 放在列表框的最下面 在添加地图的过程中 第一个加入Map对象的图层是0号 第二个图层就是1号 0号图层放在图层对话框中最上面 但是在地图中实际放在最下面 如果在一个Map中放入两个面类型的图层 会发现第一次加入的图层会被后一次加入的图层所掩盖 这种层概念是数据组织的一种有效形式 一 Map对象 IMap接口 选择对象在ArcMap使用 SelectFeatures 工具在地图上拖曳后 被选择的要素将会高亮显示 即使这些要素放在不同图层上的 这个工具没有什么限制 不管是点 线还是多边形 都可以同时选择到 这些被高亮显示的要素称为 FeatureSelection 要素选择集 程序有多种方式可以用于选择要素 如SelectByShape方法就是其中之 SelectByShape方法实现了ArcMap软件 selectFeatures 功能 选择Map所有处于拖曳范围内的要素 无论是哪个图层 把选择的要素添加到Map的Selectionset里面 一 Map对象 IMap接口 选择对象 一 Map对象 IMap接口 选择对象IMap FeatureSelection属性可以返回map中被选择的要素 SelectionCount属性可以得到Map对象的要素选择集中的要素的数目 CIearSelection方法用于清除Map对象中的选择集 一 Map对象 IActiveView接口IActiveView接口定义了Map对象的数据显示功能 这个接口管理着ArcMap主要的程序窗口和所有绘制图形的方法 使用这个接口的方法可以改变视图的范围 可以得到ScreenDisplay对象的指针 可以显小或隐藏标尺和滚动条 也可以刷新视图 在ArcObjects中 有两个对象实现了这个接口 Map和PageLayout 这两个对象分别代表了ArcMap中两种不同的视图 数据 Data 视图和布局 Layout 视图 在任何一个时刻仅仅只有一个视图能够处于活动状态 一 Map对象 IActiveView接口在使用MapControl控件编程的方式下获得ActiveView IMappMap pMap axMapControll Map IActiveViewpActiveView pActiveView pMapasIActiveView 或pActiveView axMapControll ActiveView 在PageLayoutControl控件中获得正在使用的地图对象的方法如下 IActiveViewpActiveView pActiveView axPageLayoutControll PageLayoutasIActiveView 或pActiveView axPageLayoutControll ActiveView pMap pActiveView FocusMap 一 Map对象 IActiveView接口 一 Map对象 IActiveView接口Extent属性返回Map对象当前视图的范围 它是一个Envelope对象 即所谓的包络线对象 FuIlExtent属性则可以返回视图的全图范围 因此要显小整幅地图的代码为 将当前地图的范围设置为全幅范围pActiveView Extent pActiveView FuIlExtent pActiveView Refresh ScreenDisplay属性指向一个ScreenDisplay对象 每一个视图对象都有一个ScreenDisplay对象用于控制视图的图形绘制工作 使用这个属性会得到一个与当前正在使用的视图相关的ScreenDisplay对象 例如要在数据视图上绘制一条线必须先得到一个当前地图对象的IActiveView接口 通过IActiveView ScreenDisplay获得地图的ScreenDisplay对象的指针 ScreenDisplay对象将在后而的章节中详细叙述 一 Map对象 IGraphicsContainer接口Map对象可以显示图形元素 GraphicsElement 它使用IGraphicsContainer接口来管理这些元素对象 包括图形元素和框架元素 IGraphicsContainer返回的是Map对象中处于活动状态的图形图层 graphicslayer 的指针 一 Map对象 IGraphicsContainer接口使用这个接口的方法往Map中添加元素 实际上是往其中的一个图形图层上添加元素对象的过程 如下面代码所示 IGraphicsContainerpGraphicsContainer pGraphicsContainer pMapasIGraphicsContainer通过AddElement方法用于将一个元素放入Map对象中 下而是一个添加元素的例子 定义个line类刑的ElementILineElementpLineEle pLineEle newLineElementClass 设段这个Element的符 J对象pLineEle Symbol pSymbol ElementpEle pEle pLineEleasElement 设置元素的集合体对象属性pEle Geometry pGeo 将元素添加到Map对象pGraphicsContainer AddElement pEle 0 pActiveView PartialRefresh esriViewDrawPhase esriViewGraphics nu1l null 二 Map对象 IGraphicsContainer接口IGraphicsContainer DeleteElement方法用于删除Map对象中的一个给定的元素 如果在Map中改变了一个元素的形状或者符号对象 用户希望能够即时更新后在地图上表现出来 这个更新的方法也非常简单 使用UpdateElement即可 二 Map对象 IGraphicsContainer接口IGraphicsContainer LocateElements方法是使用一个点来选择元素 它击要传入一个点对象和一个容差值 Map对象会将所有处于点容差周围的元素选择到 下面的例子中 代码在MapControl的MouseDown事件中 PointpPt pPt newPointClass 获得鼠标点击处的点对象pPt PutCoords e mapX e mapY IEnumElementpEnumEle 选择元素 其中1为容忍值pEnumEle pGraphicsContainer LocateElements pPt 1 ElementpElement 获得单个元素pElement pEnumEle Next 另外一个可以使用的是LocateElementsByEnvelope方法 它和SelectByShape方法类同 是使用鼠标拖曳一个矩形区域 从而选择到这个区域内的所以元素 二 Layer对象 ILayer接口ILayer是所有图层类都实现了的一般接口 它定义了所有图层的公共方法和属性 如Name属性可以返回图层名称 MaximumScale和MinimumScale可以用于获取和设置图层可以显示的最大和最小比例 ILayer ShowTips属性用于指小当鼠标放在图层某个要素上的时候 是否会出现Tip 提示 而TipText确定图层提小显小的区域 下面是展示一个显示图层Tip的代码 二 Layer对象 要素图层 FeatureLayer IFeatureLayer接口要素数据是GIS中最常使用的数据类型之一 它可以用于表示离散矢量对象的信息 而承载要素数据的要素图层 FeatureLayer 是本节研究的重点 本节会介绍要素图层的几个重要接口定义的方法和属性 IFeatureLayer接口用于管理要素图层的数据源 即要素类 Featureclass IFeatureLayer DataSourceType属性返回要素图层的数据源的类型 FeatureLayer的数据源有 PersonalGeodatabaseSDEShapefileCoverageEdgeCAD 二 Layer对象 要素图层 FeatureLayer IFeatureLayer接口要素数据是GIS中最常使用的数据类型之一 它可以用于表示离散矢量对象的信息 而承载要素数据的要素图层 FeatureLayer 是本节研究的重点 本节会介绍要素图层的几个重要接口定义的方法和属性 IFeatureLayer接口用于管理要素图层的数据源 即要素类 Featureclass IFeatureLayer DataSourceType属性返回要素图层的数据源的类型 FeatureLayer的数据源有 PersonalGeodatabaseSDEShapefileCoverageEdgeCAD 二 Layer对象 要素图层 FeatureLayer IFeatureLayer接口新建一个要素图层对象必须引入GeoDatabase库 然后使用下面的代码 IFeatureLayerpFeatLyr pFeatLyr newFeatureLayerClass IFeatureLayer FeatureClass属性返回要素图层使用的要素类 关于要素类的内容 会在GeoDatabase一章中详细介绍 如果需要对要素图层进行查询 可以使用IFeatureLayer Search方法 它将返回一个ICursor类型的对象 如在一幅世界地图中寻找人日多于5000万的国家或者是国土而积大于100万平方公里的国家 都可以使用Search方法实现 二 Layer对象 要素图层 FeatureLayer IFeatureLayer接口下面给出一个查找要素的方法 需要要传入过滤参数和图层 privatevoidsearchFeatures stringsqlfilter IFeatureLayerpFeatureLayer IFeatureLayerpFeatLyr pFeatureLayer 定义个过滤器对象IQueryFilterpFilter newQueryFiIterClass 添加过滤参数sqlfilter area 100000 pFilter WhereClause sqlfilter IFeatureCursorpFeatCursor pFeatLyr Search pFilter true IFeaturepFeat pFeatCursor NextFeature while pFeat null pFea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论