当前位置:
文档之家› gis二次开发地图整饰与输出
gis二次开发地图整饰与输出
Element是抽象类,开发中必须明确指定使用的Element类 型。
IElement和ILineElement, ITextElement等并不是父子关 系, 后者没有Geometry属性,只有IElement有Geometry属 性。
GIS开发与应用——ArcEngine方法
对象模型图
ArcMap OMD
IGraphicsContainer pGraphicsContainer = pPageLayout as IGraphicsContainer; //PageLayout对象引用赋给IGraphicsContainer接口的对象变量,得到GraphicsContainer对象。
AddElement:添加元素; 用法:pGraphicsContainer.AddElement(pElement, 0) UpdateElement:更新元素:, DeleteElement: 删除元素;
LocateElement:选择元素
DeleteAllElements;
LocateElementsByEnvelope:Map上拖曳一个矩形区域,选择区域内的元素 SpatialReference属性:设置图形元素的空间参考。空间参考是一个图形能够在一定范围内正确显示 所必须设置的属性。
GIS开发与应用——ArcEngine方法
GIS开发与应用——ArcEngine方法
9.4.1 图形元素(Graphic Element)
图形元素包括以下对象,做为图形的形式存在,在视图上可 见: MarkerElement LineElement TextElement
FillShapeElement
GroupElement PictureElement
用于 Layout 视图或者 Data view
指定什么需要刷新 (e.g., graphics)
指定哪里需要刷新 (an envelope)
GIS开发与应用——ArcEngine方法
IActiveView的PartialRefresh(esriViewGeography, pLayer, null)用于刷新指定图层: IActiveView的PartialRefresh(esriViewGeography, null, null) 用于刷新所有地理要素:
LineElement
BmpPictureElement
MarkerElement
GIS开发与应用——ArcEngine方法
绘制图形 MapControl控件提供了直接在控件上绘制图形和文字的方 法,如DrawShape, DrawText,这两个方法绘制的图形都是 缓冲Cache,而不是真正的保存,一旦出现窗口重绘,如地 图刷新等,这些图形就将消失。
IGraphicsContainer接口
IGraphicsContainer 接口管理Map 和PageLayout 对象上储存的元素,使用 IGraphicsContainer 接口可以添加,删除和更新位于Map 或PageLayout上的元素。
IGraphicsContainer pGraphicsContainer = pMap as IGraphicsContainer;
Map组件类主要接口IMap: IMap pMap = axMapControl1.Map;
GIS开发与应用——ArcEngine方法
9.2 PageLayoutControl页面布局(版式)控件
PageLayoutControl对应ArcMap中的布局视图(Layout View),它封装了PageLayout对象,并提供了额外的属性、 方法、事件用于:
定义了Map对象的数据显示功能。通过使用该接口可以在Map上绘制图 形,改变视图的范围,获取ScreenDisplay对象的指针,刷新视图。AE中 Map和PageLayout对象都实现这个接口,分别代表两种不同的视图:数 据视图和布局视图。在任何时刻都只能有一个视图处于活动状态。
IActiveView pActiveView = pMap as IActiveView; IActiveView pActiveView = pPageLayout as IActiveView;
第九讲 地图整饰与输出
王佳 34247763@
第九讲 地图整饰与输出
9.1 MapControl 地图控件
Map对象(CoClass,组建类) (ESRI.ArcGIS.Carto)
9.2 PageLayoutControl 页面布局控件
PageLayout对象(CoClass,组建类) (ESRI.ArcGIS.Carto)
如何刷新显示
使用IActiveView的Refresh方法
刷新所有的显示 (但是不刷新TOC表)
使用IScreenDisplay的Invalidate的方法
只刷新域
被新图形元素覆盖的区域 比直接刷新整个文档的效率高
使用IActiveView的PartialRefresh方法
9.1 MapControl地图控件
MapControl控件对应ArcMap中的数据视图(Data View),它封 装了Map对象(CoClass,组建类),并提供了额外的属性、方 法、事件用于:
管理控件的外观、显示属性和地图属性; 添加并管理控件中的数据层; 装载Map地图文档(mxd) ;
动态添加和显示几何对象等;
TableFrame Legend
GIS开发与应用——ArcEngine方法
GIS开发与应用——ArcEngine方法
图例
GIS开发与应用——ArcEngine方法
元素(Elements)
有一些可以创建的对象 图形元素的种类
marker , Line, polygon Text and pictures
GIS开发与应用——ArcEngine方法
Map 对象和PageLayout 对象显示的数据除了地理数据之外,另 一种即为元素(Element)数据如图所示。
GIS开发与应用——ArcEngine方法
9.4 Element对象
Element对象是一个非常庞大复杂的对象集合如图 ,它主要分 为两大部分:图形元素(GraphicElement)和框架元素(Frame Element)。图形元素可以被放在页面视图或地图上,但框架 元素只能放在页面视图上,如地图标题是放置于页面版面设 计上的一个文本元素。 IElement是所有图形元素(GraphicElement)和框架元素 (Frame Element)都实现的接口,通过IElement接口可以确 定Element对象的Geometry属性,同时IElement接口也提供 了用于查找和绘制元素的方法。
GIS开发与应用——ArcEngine方法
多态回顾
许多不同的类可以支持相同的接口
拥有相同的所有的方法和属性 可以有不同的执行方式和拥有不同的属性值
许多ArcGIS的类 都表现出多态的特 性,其特点是在几 个Classes中使用 同一个 Interface,但每 一个Class却执行 不同的methods and properties。
9.3 Map与PageLayout对象共同点
9.4 Element对象(ESRI.ArcGIS.Carto)
图形元素 框架元素
MapFrame对象 MapSurroundFrame对象
9.5 MapSurround对象(ESRI.ArcGIS.Carto)
9.6 地图输出
GIS开发与应用——ArcEngine方法
加载地图文档(mxd) ;
绘制地图元素;
创建布局视图(图例、指北针和比例尺等) 地图的打印输出; PageLayout组件类主要实现了IPageLayout 接口,它定义了用 于修改页面布局的方法和属性。
GIS开发与应用——ArcEngine方法
IPageLayout pPageLayout = axPageLayoutControl1. PageLayout; IPageLayout ::ZoomToWhole 方法:让PageLayout 以最大尺 寸显示; IPageLayout :: ZoomToPercent方法:让PageLayout 以按照输 入的比例显示; IPageLayout :: ZoomToWidth 方法:让视图显示的范围匹配对 象的宽度。
Geometry Element PageLayout MxDocument
*
*
GraphicElement FrameElement Map
TextElement
MapFrame
*
MapSurround
LineElement
MapSurroundFrame ScaleBar
MarkerElement
FrameElement GraphicElement
IElement
Element
Geometry
框架元素(FrameElements )
在PageLayout上使用 Map frames North arrows, legends, scale bars Table frames
TextElement
IActiveView的PartialRefresh(esriViewGeoSelection, null, null) 用于刷新所选的地理要素:
IActiveView的PartialRefresh(esriViewGraphics, null, null) 用于刷新所有的图形元素: IActiveView的PartialRefresh(esriViewGraphics, pElement, null) 用于刷新指定图形元素 IActiveView的PartialRefresh(esriViewGraphicSelection, null, null)用于刷新所选择的图元。