gis二次开发地图整饰与输出.ppt
《gis二次开发地图整饰与输出.ppt》由会员分享,可在线阅读,更多相关《gis二次开发地图整饰与输出.ppt(51页珍藏版)》请在三一办公上搜索。
1、第九讲 地图整饰与输出,王佳,GIS开发与应用ArcEngine方法,第九讲 地图整饰与输出,9.1 MapControl 地图控件,Map对象(CoClass,组建类)(ESRI.ArcGIS.Carto),9.2 PageLayoutControl 页面布局控件,PageLayout对象(CoClass,组建类)(ESRI.ArcGIS.Carto),9.3 Map与PageLayout对象共同点,9.4 Element对象(ESRI.ArcGIS.Carto),图形元素框架元素,MapFrame对象,MapSurroundFrame对象,9.5 MapSurround对象(ESRI.Ar
2、cGIS.Carto)9.6 地图输出,GIS开发与应用ArcEngine方法,9.1 MapControl地图控件,MapControl控件对应ArcMap中的数据视图(Data View),它封装了Map对象(CoClass,组建类),并提供了额外的属性、方法、事件用于:,管理控件的外观、显示属性和地图属性;,添加并管理控件中的数据层;装载Map地图文档(mxd);动态添加和显示几何对象等;Map组件类主要接口IMap:,IMap pMap=axMapControl1.Map;,GIS开发与应用ArcEngine方法,9.2 PageLayoutControl页面布局(版式)控件,Page
3、LayoutControl对应ArcMap中的布局视图(LayoutView),它封装了PageLayout对象,并提供了额外的属性、方法、事件用于:,加载地图文档(mxd);绘制地图元素;,创建布局视图(图例、指北针和比例尺等)地图的打印输出;,PageLayout组件类主要实现了IPageLayout 接口,它定义了用,于修改页面布局的方法和属性。,GIS开发与应用ArcEngine方法,IPageLayout pPageLayout=axPageLayoutControl1.,PageLayout;,IPageLayout:ZoomToWhole 方法:让PageLayout 以最大尺,
4、寸显示;,IPageLayout:ZoomToPercent方法:让PageLayout 以按照输,入的比例显示;,IPageLayout:ZoomToWidth 方法:让视图显示的范围匹配对,象的宽度。,GIS开发与应用ArcEngine方法,9.3 Map与PageLayout对象共同点,PageLayout与Map都是视图对象,能够显示地图,都实现了IActiveView,接口;,同时它们都是图形元素的容器,能存储图形元素(Graphics Element),,都实现了IGraphicsContainer接口。,ArcGIS中可以显示在视图上的图形分为两种,地理数据和元素(Element
5、)数据。元素是一个地图中除去要素数据外的部分,即在一幅地图中,除了保存在数据库中的地理数据外,其余的对象全部是元素。,存储的图形类型差别:Map只能保存图形元素(Graphic Element)数据;PageLayout能保存图形元素和框架元素(Frame Element)。,PageLayoutControl 上的Map对象被PageLout的MapFrame对象所管理。地图总是包含在Map对象中,而Map对象是由一个MapFrame所持有,PageLayout对象至少拥有一个MapFrame对象,而每个MapFrame中也拥有一个Map。,GIS开发与应用ArcEngine方法,6-7,I
6、Drive燃料加速刹车,多态回顾许多不同的类可以支持相同的接口拥有相同的所有的方法和属性可以有不同的执行方式和拥有不同的属性值,许多ArcGIS的类都表现出多态的特性,其特点是在几个Classes中使用同一个Interface,但每一个Class却执行不同的methodsand properties。,MapIMap,ClearLayersDeleteLayerExtentClearDeleteElementAddElementGIS开发与应用ArcEngine方法,QIIActivewViewQIIGraphicsContainer,QI,PageLayoutIPageLayou,ZoomT
7、oPercentZoomToWholeExtentClearDeleteElementAddElementGIS开发与应用ArcEngine方法,tIActivewViewQIIGraphicsContainer,GIS开发与应用ArcEngine方法,IActiveView接口,定义了Map对象的数据显示功能。通过使用该接口可以在Map上绘制图形,改变视图的范围,获取ScreenDisplay对象的指针,刷新视图。AE中Map和PageLayout对象都实现这个接口,分别代表两种不同的视图:数据视图和布局视图。在任何时刻都只能有一个视图处于活动状态。,IActiveView pActiveV
8、iew=pMap as IActiveView;,IActiveView pActiveView=pPageLayout as IActiveView;,IActiveView的重要属性:Extent属性,返回Map对象当前视图的范围,是一个Envelope对象;,FullExtent:返回视图的全图范围;Refresh方法:一种刷新方式,PartialRefresh方法:部分刷新方式。,GIS开发与应用ArcEngine方法,GIS开发与应用ArcEngine方法,IGraphicsContainer接口,IGraphicsContainer 接口管理Map 和PageLayout 对象上储
9、存的元素,使用,IGraphicsContainer 接口可以添加,删除和更新位于Map 或PageLayout上的元素。,IGraphicsContainer pGraphicsContainer=pMap as IGraphicsContainer;IGraphicsContainer pGraphicsContainer=pPageLayout as IGraphicsContainer;,/PageLayout对象引用赋给IGraphicsContainer接口的对象变量,得到GraphicsContainer对象。,AddElement:添加元素;,用法:pGraphicsConta
10、iner.AddElement(pElement,0),UpdateElement:更新元素:,DeleteElement:删除元素;LocateElement:选择元素,DeleteAllElements;,LocateElementsByEnvelope:Map上拖曳一个矩形区域,选择区域内的元素,SpatialReference属性:设置图形元素的空间参考。空间参考是一个图形能够在一定范围内正确显示所必须设置的属性。,GIS开发与应用ArcEngine方法,如何刷新显示,使用IActiveView的Refresh方法,刷新所有的显示(但是不刷新TOC表),使用IScreenDisplay
11、的Invalidate的方法,只刷新指定的范围(envelope),也许你只需要刷新部分的显示区域,被新图形元素覆盖的区域,比直接刷新整个文档的效率高,使用IActiveView的PartialRefresh方法,用于 Layout 视图或者 Data view指定什么需要刷新(e.g.,graphics)指定哪里需要刷新(an envelope),GIS开发与应用ArcEngine方法,IActiveView的PartialRefresh(esriViewGeography,pLayer,null)用于刷新指定图层:,IActiveView的PartialRefresh(esriViewGe
12、ography,null,null)用于刷新所有地理要素:,IActiveView的PartialRefresh(esriViewGeoSelection,null,null)用于刷新所选的地理要素:,IActiveView的PartialRefresh(esriViewGraphics,null,null)用于刷新所有的图形元素:,IActiveView的PartialRefresh(esriViewGraphics,pElement,null)用于刷新指定图形元素,IActiveView的PartialRefresh(esriViewGraphicSelection,null,null)用
13、于刷新所选择的图元。,GIS开发与应用ArcEngine方法,Map 对象和PageLayout 对象显示的数据除了地理数据之外,另,一种即为元素(Element)数据如图所示。,GIS开发与应用ArcEngine方法,9.4 Element对象,Element对象是一个非常庞大复杂的对象集合如图,它主要分为两大部分:图形元素(GraphicElement)和框架元素(FrameElement)。图形元素可以被放在页面视图或地图上,但框架元素只能放在页面视图上,如地图标题是放置于页面版面设计上的一个文本元素。,IElement是所有图形元素(GraphicElement)和框架元素(Frame
14、 Element)都实现的接口,通过IElement接口可以确定Element对象的Geometry属性,同时IElement接口也提供,了用于查找和绘制元素的方法。,Element是抽象类,开发中必须明确指定使用的Element类型。,IElement和ILineElement,ITextElement等并不是父子关系,后者没有Geometry属性,只有IElement有Geometry属性。,*,PageLayout,Element,*,Geometry,GraphicElementTextElementLineElementMarkerElement,Map*MapSurroundSca
15、leBarLegendGIS开发与应用ArcEngine方法,FrameElementMapFrameMapSurroundFrameTableFrame,对象模型图MxDocumentArcMap OMD,GIS开发与应用ArcEngine方法,GIS开发与应用ArcEngine方法,图例,元素(Elements)有一些可以创建的对象,图形元素的种类,marker,Line,polygon,Text and pictures,框架元素(FrameElements),在PageLayout上使用,Map framesNorth arrows,legends,scale barsTable fr
16、amesGIS开发与应用ArcEngine方法,Element,IElement,Geometry,GraphicElement,FrameElement,BmpPictureElement,TextElement,MarkerElement,LineElement,GIS开发与应用ArcEngine方法,绘制图形,MapControl控件提供了直接在控件上绘制图形和文字的方法,如DrawShape,DrawText,这两个方法绘制的图形都是缓冲Cache,而不是真正的保存,一旦出现窗口重绘,如地图刷新等,这些图形就将消失。,GIS开发与应用ArcEngine方法,9.4.1 图形元素(Gra
17、phic Element),图形元素包括以下对象,做为图形的形式存在,在视图上可,见:,MarkerElementLineElementTextElement,FillShapeElementGroupElementPictureElement,GIS开发与应用ArcEngine方法,LineElement和 MarkerElement对象(组建类),MarkerElement和ILineElement是最简单的图形元素。在数据视图或布局视图上表现为线和点的形式。ILineElement接口的Symbol属性设置线的符号。IMarkerElement接口的Symbol属性设置点的符号。,以Li
18、neElement为例,把它添加到视图需要两个接口IElement和,ILineElement。,IElement用于确定线元素的Geometry;ILineElement用于确定Symbol。,注意:Symbol与Geometry不能混用。LineElement元素只能使用Line或Polyine作为Geometry,使用通过LineSymbol类型作为Symbol;MarkerElement使用的是Marker类型的Symbol和点作为它的Geometry。,GIS开发与应用ArcEngine方法,要将图形元素显示在视图的一般步骤如下:,产生一个新的元素对象;,确定元素显示时使用的Symb
19、ol(符号)和Geometry(几何,形体对象);,使用IGraphicsContainer:AddElement方法把元素添加到视图,中;,刷新视图,显示添加的元素。,例子:创建一个新的图形元素并设置它的符号IMarkerElement pMarkerElement;,pMarkerElement=new MarkerElementClass();ISimpleMarkerSymbol pMarkerSym;pMarkerSym=new SimpleMarkerSymbolClass();,/创建一个新的元素/创建新符号,/指定符,pMarkerSym.Style=esriSimpleMar
20、kerStyle.esriSMSCircle号的样式(风格),pMarkerSym.Color=getRGB(255,0,0);pMarkerElement.Symbol=pMarkerSym,/用函数设置符号的颜色为红色/并把颜色赋给符号 把符号赋给元素GIS开发与应用ArcEngine方法,IElement,pElement;,pElement,定义一个元素的位置使用IElement 的 Geometry属性被所有Element的子类所支持在地图(Map)或布局(layout page)上定位Geometry可以指定为 point,line,envelope等,IElementpEleme
21、nt,pElement;=pMarkerElement as IElement,QIIPoint pPoint;new PointClass();pPoint.PutCords(69.751,-7.534);/Ipoint的PutCoords方法:指定坐标点建立PointpPoint;GIS开发与应用ArcEngine方法,pGContainer.AddElement(pElem,0),0=top element,把一个元素添加到 map(或者 layoutpage)使用 IGraphicsContainer:AddElement指定添加的元素和它的序号0号的序号是第一个(最顶部)的元素,序号
22、从顶到底逐渐增加IMap pMap=new axMapControl1.Map;IActiveViewpActiveView=pMap as IActiveView;IGraphicsContainer pGraphicsContainer=pMap as IGraphicsContainer;,pGContainer.AddElement(pElem,0),0=top element,pActiveView.Refresh();通过刷新屏幕来显示新添加的元素GIS开发与应用ArcEngine方法,GIS开发与应用ArcEngine方法,Envelope对象,Envelope也称包络线(bou
23、nding box),是一个矩形区域。,定义了一个要素(feature)的空间范围,是每个几何体的最小外接矩形,所有的几何对象都有Envelop属性,主要接口 IEnvelope,CenterAt方法:通过改变Envelope的中心点来移动Envelope;PutCoords方法:指定坐标点建立Envelope;,IEnvelope pEnvelope,pEnvelope=pLine.Envelope,Feature,Geometry,Envelope1 Polygon FeatureIEnvelope pEnvelope=new EnvelopeClass();pEnvelope.PutCo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- gis 二次开发 地图 整饰 输出
链接地址:https://www.31ppt.com/p-2667219.html