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