地图的组成及相关对象_第1页
地图的组成及相关对象_第2页
地图的组成及相关对象_第3页
地图的组成及相关对象_第4页
地图的组成及相关对象_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

地图的组成及相关对象第一页,共四十八页,2022年,8月28日第五章地图的组成及相关对象5.1Map对象5.2图层对象第二页,共四十八页,2022年,8月28日5.1Map对象

5.1.1Map对象简介5.1.2Map对象的双重身份5.1.3Map对象主要实现的接口

第三页,共四十八页,2022年,8月28日5.1.1Map对象简介Map对象是ArcGISEngine的主要对象,在Map对象上能显示的图形有两类:(1)地理数据地理数据包括矢量类型的要素数据、栅格数据、Tin等表面数据地理数据保存在Geodatabase或数据文件(如Shapefile)中地理数据用于GIS分析制图的源数据第四页,共四十八页,2022年,8月28日5.1.1Map对象简介(2)元素(Element)元素是另一种可以显示在Map上的对象,它分为两类:一类是图形元素(GraphicsElement),一类是框架元素(FrameElement)。图形元素可以显示出来,而框架元素充当了“容器”的角色。在ArcMap中可以使用Draw工具在Map上直接绘制一个矩形、圆形、文本等对象,在布局视图上也可以给地图添加指北针、图例、比例尺等图形对象,这些都是图形元素。第五页,共四十八页,2022年,8月28日5.1.2Map对象的双重身份Map对象有双重身份,一方面是数据的管理容器,可以加载地理数据和图形元素,扮演了数据管理器的角色;另一方面它又可以让用户看到这些数据,即扮演了数据显示器的角色。当加载数据到Map对象的时候,Map对象是数据的管理者;当改变视图范围、刷新地图的时候,它是数据的显示者。第六页,共四十八页,2022年,8月28日5.1.3Map对象主要实现的接口

IMapIGraphicContainerIActiveView、IMapBookmarks……第七页,共四十八页,2022年,8月28日IMap接口IMap接口是开始多数GIS任务的起点IMap接口主要用于管理Map对象中的Layer对象、图层的要素选择集、MapSourround对象、标注引擎和空间参考等对象Map对象是一个存放Layer对象的容器,IMap接口定义了大量的属性和方法用于访问和操作它其中的图层对象第八页,共四十八页,2022年,8月28日IMap接口的属性第九页,共四十八页,2022年,8月28日IMap接口的方法第十页,共四十八页,2022年,8月28日IMap接口的主要属性和方法简介AddLayer方法将一个图层对象加入Map对象中AddLayers方法一次加入一个或多个图层,多个图层对象必须放在一个EnumLayer对象中才能被引用EnumLayer对象是个图层枚举对象,可以保存多个图层的指针第十一页,共四十八页,2022年,8月28日IMap接口的主要属性和方法简介ClearLayers方法清除Map中的所有的图层DeleteLayer方法删除Map中的某一个图层LayerCount属性Map中的图层对象的个数get_Layer(Index)属性根据地图中图层的索引值得到具体的图层对象第十二页,共四十八页,2022年,8月28日IMap接口的主要属性和方法简介SelectByShape方法选择Map中的和指定的shape相交的所有FeatureLayer图层的要素并高亮显示,无论是哪个图层,它把选择的要素都添加到Map的选择集里,类似ArcMap里的工具用法:

object.SelectByShape(Shape,env,justOne)

其中:

Shape:表示一个IGeometry

对象

env:表示一个ISelectionEnvironment

对象,是设置选择环境的

justOne:表示是否在选择到一个实体就停止搜索

第十三页,共四十八页,2022年,8月28日通过SelectByShape方法选择要素代码示例IMappMap;IActiveViewpActiveView;pMap=axMapControl1.Map;pActiveView=pMapasIActiveView;//得到一个Envelop对象IEnvelopepEnv;pEnv=axMapControl1.TrackRectangle();//新建选择集环境对象ISelectionEnvironmentpSelectionEnv;pSelectionEnv=newSelectionEnvironmentClass();//选择要素,将它们放入到选择集pMap.SelectByShape(pEnv,pSelectionEnv,false);pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection,null,null);第十四页,共四十八页,2022年,8月28日IMap接口的主要属性和方法简介SelectFeature方法可以将在Map上获得的一个要素放到这个要素的图层的选择集中,高亮显示FeatureSelection属性可以返回Map中被选择的要素SelectionCount属性可以得到Map中的要素选择集中要素的个数ClearSelection方法用于清除Map中的选择集第十五页,共四十八页,2022年,8月28日通过FeatureSelection属性返回被选择要素的属性信息IEnumFeaturepEnumFeat;IEnumFeatureSetuppEnumFeatureSetup;//获得选择集对象pEnumFeat=(IEnumFeature)pMap.FeatureSelection;pEnumFeatureSetup=pEnumFeatasIEnumFeatureSetup;pEnumFeatureSetup.AllFields=true;IFeaturepFeat;//得到选择集中的一个要素对象pFeat=pEnumFeat.Next();while(pFeat!=null){//在列表框中显示被选择要素的某个字段的值listBox1.Items.Add(pFeat.get_Value(2));pFeat=pEnumFeat.Next();}第十六页,共四十八页,2022年,8月28日IGraphicsContainer接口Map对象可以显示图形元素(Element),Map对象通过

IGraphicsContainer接口来管理这些元素对象(包括图形元素和框架元素)。

IGraphicsContainer返回的是Map对象中处于活动状态的图形图层(graphicslayer)的引用指针,它可以是一个基本的图形图层对象(basicgraphicslayer),也可以是CompositeGraphicsLayer中的一个图层或者是一个FDOGraphicsLayer注记图层。第十七页,共四十八页,2022年,8月28日IGraphicsContainer接口的方法第十八页,共四十八页,2022年,8月28日IGraphicsContainer接口的主要方法简介AddElemen方法用于将一个图形元素放入Map对象的图形图层中AddElements方法一次加入一个或多个图形元素到Map对象的图形图层中DeleteElement方法用于删除图形图层中的一个给定的图形元素DeleteAllElements用于删除图形图层中的所有的图形元素第十九页,共四十八页,2022年,8月28日通过AddElemen方法往Map中添加元素的代码示例DimpMapAsIMapDimpActiveViewAsIActiveViewpMap=axMapControl1.Map;pActiveView=pMapasIActiveView;IPointpt;pt=axMapControl1.ToMapPoint(e.x,e.y);IMarkerElementpMarkerElement;pMarkerElement=newMarkerElementClass();IElementpElement;pElement=pMarkerElementasIElement;pElement.Geometry=pt;pGraphicsContainer=pMapasIGraphicsContainer;pGraphicsContainer.AddElement((IElement)pMarkerElement,0);pActiveView.Refresh();第二十页,共四十八页,2022年,8月28日IGraphicsContainer接口的主要方法简介LocateElements方法使用一个点来选择图形元素。这个方法需要传入一个点对象和一个容差值,Map对象会将所有处于点容差周围的元素选择到LocateElementsByEnvelope方法使用鼠标拖曳一个矩形区域,选择到这个区域内的所有的元素第二十一页,共四十八页,2022年,8月28日IActiveView接口IActiveView接口定义了Map对象的数据显示功能使用IActiveView接口可以实现以下的功能:改变视图的范围刷新视图显示或隐藏标尺和滚动条得到ScreenDisplay对象的指针第二十二页,共四十八页,2022年,8月28日IActiveView接口的属性第二十三页,共四十八页,2022年,8月28日IActiveView接口的方法第二十四页,共四十八页,2022年,8月28日IActiveView接口的主要属性和方法简介Extent属性返回Map对象当前视图的范围,它是一个Envelope对象,即所谓的包络线对象FullExtent属性返回视图的全图范围第二十五页,共四十八页,2022年,8月28日IActiveView接口的主要属性和方法简介ScreenDisplay属性指向一个ScreenDisplay对象每一个视图对象都有一个ScreenDisplay对象用于控制视图的图形绘制工作,使用这个属性会得到一个与当前正在使用的视图相关的ScreenDisplay对象地图的数据显示是由一个视图来控制的,而视图的ScreenDisplay对象则负责绘制图形,ScreenDisplay对象拥有产生任意数量的缓存(Cache)的本领第二十六页,共四十八页,2022年,8月28日IActiveView接口的主要属性和方法简介PartialRefresh方法可以让视图对象使用不同的方式来局部刷新以重绘地图用法如下:

object.PartialRefresh(phase,Data,envelope)

其中:

phase

:为esriViewDrawPhase常数,表示绘制的状态

Data:object对象,一般设置为Nothing

envelope:一个IEnvelope对象,表示刷新的范围第二十七页,共四十八页,2022年,8月28日esriViewDrawPhase常数ConstantValueDescriptionesriViewNone0Drawsnothing.esriViewBackground1Drawsthebackground.esriViewGeography2Drawsthegeography.esriViewGeoSelection4Drawstheselectedgeography.esriViewGraphics8Drawstheannotation.esriViewGraphicSelection16Drawstheselectedannotation.esriViewForeground32Drawstheforeground.第二十八页,共四十八页,2022年,8月28日通过PartialRefresh方法局部刷新的几种情形RefreshlayerpActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,pLayer,null);Refreshalllayers

pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null);Refreshselection

pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection,null,null);Refreshlabels

pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);第二十九页,共四十八页,2022年,8月28日5.2图层对象

5.2.1图层对象简介5.2.2图层对象的Ilayer接口5.2.3要素图层(FeatureLayer)的使用第三十页,共四十八页,2022年,8月28日5.2.1图层对象简介Map对象可以装载地理数据,这些数据是以图层的形式放入地图对象的相同类型的地理数据可以使用一个图层被放入地图由于地理数据格式的多样性,因而图层类拥有众多的子类,它们使用统一的方法来操作各种类型的数据第三十一页,共四十八页,2022年,8月28日5.2.1图层对象简介Map对象中显示地图需要设置空间参考(SpatialReference)当第一个图层添加到Map中时,Map对象的空间参考属性就自动设置为这个图层的空间参考,后面加入的图层无论是否已经含有空间参考都将使用Map对象已经设置的空间参考第三十二页,共四十八页,2022年,8月28日5.2.1图层对象简介Layer对象本身没有装载数据,而仅仅是获得了数据的引用而已,是用于管理数据源的连接地理数据始终是保存在GeoDatabase或者地理文件中第三十三页,共四十八页,2022年,8月28日5.2.2图层对象的Ilayer接口Ilayer接口简介Ilayer接口的主要属性和方法简介第三十四页,共四十八页,2022年,8月28日Ilayer接口简介Ilayer是所有图层类都实现的一般接口Ilayer接口定义了所有图层的公共属性和方法Ilayer接口的最新版本为Ilayer2第三十五页,共四十八页,2022年,8月28日Ilayer接口的主要属性和方法简介Name属性返回或设置图层的名称MaximumScale方法返回或设置图层可见的最大显示比例MinimumScale方法返回或设置图层可见的最小显示比例第三十六页,共四十八页,2022年,8月28日Ilayer接口的主要属性和方法简介SpatialReference属性用于设置图层的空间参考ShowTips属性用于指示当鼠标放在图层某个要素上的时候,是否会出现Tip(提示)get_TipText方法用于设置Tip(提示)在什么地方显示第三十七页,共四十八页,2022年,8月28日通过ShowTips属性和TipText属性实现

要素图层的提示(Tip)代码privatevoidaxMapControl1_OnMouseMove(objectsender,IMapControlEvents2_OnMouseMoveEvente){IPointpt;pt=axMapControl1.ToMapPoint(e.x,e.y);ILayerpLyr;IFeatureLayerpFeatLyr;pFeatLyr=(IFeatureLayer)axMapControl1.get_Layer(0);pLyr=pFeatLyrasILayer;pFeatLyr.DisplayField="CITY_NAME";stringpTip;pTip=pLyr.get_TipText(pt.X,pt.Y,1);pLyr.ShowTips=true;axMapControl1.ShowMapTips=true;}第三十八页,共四十八页,2022年,8月28日5.2.3要素图层(FeatureLayer)的使用要素数据是GIS中最常使用的数据类型之一,它可以用于表示离散矢量对象的信息承载要素数据的图层即为要素图层(FeatureLayer)FeatureLayer实现的重要接口有:IFeatureLayer、IGeoFeatureLayer、IGeoDataset、IFeatureSelection、IFeatureLayerDefinition、ILayerFields、IIdentify第三十九页,共四十八页,2022年,8月28日IFeatureLayer接口的主要属性和方法简介IFeatureLayer接口用于管理要素图层的数据源,即要素类(Featureclass),IFeatureLayer接口的最新版本为IFeatureLayer2DataSourceType属性返回要素图层的数据源的类型,要素图层的数据源类型多达12种,详细的类型可以参阅开发帮助FeatureClass属性返回要素图层使用的要素类第四十页,共四十八页,2022年,8月28日IFeatureLayer接口的主要属性和方法简介Search方法可以根据查询条件对要素图层进行查询,返回一个IFeatureCursor对象。用法:Set

variable=object.Search(queryFilter,recycling)其中:queryFilter:是一个过滤器,为一个IQueryFilte类型的对象recycling:是个布尔值,用于说明返回的要素游标是否循环第四十一页,共四十八页,2022年,8月28日通过Search方法查询出满足条件的要素

并进行闪烁显示stringsqlfilter;IFeatureLayerpFeatLyr;//得到要进行查询的图层pFeatLyr=(IFeatureLayer)axMapControl1.get_Layer(2);//定义一个过滤器对象IQueryFilterpFilter;pFilter=newQueryFilterClass();//设置查询条件sqlfilter="POP_CNTRY>200000000";pFilter.WhereClause

=sqlfilter;IFeatureCursorpFeatCorsor;pFeatCorsor=pFeatLyr.Search(pFilter,true);IFeaturepFeat;pFeat=pFeatCorsor.NextFeature();while(pFeat!=null){//使用FlashShape方法使要素闪烁

axMapControl1.FlashShape(pFeat.Shape);//通过DrawShape方法在地图控件上画出要素

axMapControl1.DrawShape(pFeat.Shape);pFeat=pFeatCorsor.NextFeature();}第四十二页,共四十八页,2022年,8月28日IGeoFeatureLayer接口的主要属性和方法简介IGeoFeatureLayer接口负责要素的显示属性,例如要素的着色和标注等功能SearchDisplayFeatures方法使用这个方法只显示符合查询要求的要素,其它的要素都会消失掉如果一个要素图层与其它图层或属性表有任何形式的关联关系,则可以使用这个方法第四十三页,共四十八页,2022年,8月28日IGeoFeatureLayer接口的主要属性和方法简介Renderer属性用于用户设置图层的着色对象,制作专题图。DisplayAnnotation属性可以设置要素图层是否出现标注。当这个属性值为True时,用户可以在这个要素图层上依据要素类的某个字段进行标注。第四十四页,共四十八页,2022年,8月28日IGeoDataset接口的主要属性和方法简介IGeoDataset接口仅有两个属性,它们用于管理地理要素集。一个要素图层的地理数据放在要素类中,而要素类本身是一个数据集对象。Extent属性可以返回当前数据集的范围,是一个IEnvelope类型的对象SpatialReference属性可以让用户获得这个数据集的空间参考第四十五页,共四十八页,2022年,8月28日IFeatureSelection接口的主要属性和方法简介IFeatureSelection接口负责管理一个图层中的要素选择集的方法和属性。Add方法可以把本图层上的一个要素添加到图层的选择集中SelectFeatures方法

温馨提示

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

评论

0/150

提交评论