《符号化Element和图层.ppt》由会员分享,可在线阅读,更多相关《符号化Element和图层.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Copyright 2001,2002 ESRI.All rights reserved.Introduction to Programming ArcObjects with VBA2.1 Symbolizing elements and layersIntroduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.Lesson overviewu总体介绍符号化对象(总体介绍符号化对象(symbology objects)u符号对象符号对象Symbol objectsu颜色对
2、象颜色对象Color objectsu颜色梯度对象颜色梯度对象Color rampsu为地图添加一个简单的图形(为地图添加一个简单的图形(graphics)u使用特征渲染对象修改图层显示方式(使用特征渲染对象修改图层显示方式(FeatureRenderers)u使用图层文件使用图层文件(*.lyr)来管理图层的符号化来管理图层的符号化2Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.Symbol类的子类类的子类*Several additional types
3、 of symbols are listed on the Display OMD,including TextSymbols*3Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.u以下五种可创建的对象以下五种可创建的对象uRgbColor(红、绿、蓝)红、绿、蓝)uCmykColor(青、洋红、黄、黑)青、洋红、黄、黑)uHsvColor(色调、饱和度、值)色调、饱和度、值)uHlsColor(色调、亮度、饱和度)色调、亮度、饱和度)uGrayColor(灰度
4、)灰度)u用来定义颜色对象的属性用来定义颜色对象的属性uRed,Green,Blue values(0255)u灰度灰度(0=white 255=black)uCyan,Magenta,Yellow,Blacku使用使用Color对象来访问一个对象来访问一个Symbol对象的对象的Color属性属性使用使用color对象对象4Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.颜色梯度对象颜色梯度对象ColorRampsu四种可以创建的对象四种可以创建的对象uAl
5、gorithmic ColorRamp(算法颜色梯度)算法颜色梯度)uRandom ColorRamp(随机颜色梯度)随机颜色梯度)uPreset ColorRamp(预定义颜色梯度)预定义颜色梯度)uMultiPart ColorRamp(多部分的颜色梯度)多部分的颜色梯度)5Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.创建一个新的创建一个新的 Randomcolorramp对象对象Public Function GetRandomRamp(NumCol
6、ors As Integer)As IEnumColors Dim pRandomColorRamp As IColorRamp Set pRandomColorRamp=New RandomColorRamp pRandomColorRamp.Size=NumColors *Passed into the function Dim blnOK As Boolean pRandomColorRamp.CreateRamp blnOK *Make it so!If Not blnOK Then Exit Function *Exit if there was an error Set GetRa
7、ndomRamp=pRandomColorRamp *Pass back the rampEnd FunctionRandomColorRamp.CreateRamp方法返回的是方法返回的是IEnumColors对象。是一个枚举对象。对象。是一个枚举对象。6Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.创建简单的图形元素创建简单的图形元素(graphic elements)u有一些可以创建的对象有一些可以创建的对象u图形元素的种类图形元素的种类uLine,p
8、olygon,markeruText and picturesu框架元素(框架元素(FrameElements)u在在PageLayout上使用上使用uMap framesuNorth arrows,legends,scale barsuTable frames7Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.例子例子:创建一个新的图形元素并设置它的符号创建一个新的图形元素并设置它的符号Dim pMarkerElem As IMarkerElementSet
9、pMarkerElem=New MarkerElement 创建一个新的元素创建一个新的元素Dim pMarkerSym As ISimpleMarkerSymbolSet pMarkerSym=New SimpleMarkerSymbol 创建新符号创建新符号pMarkerSym.Style=esriSMSCircle 指定符号的风格指定符号的风格Dim pColor As IRgbColorSet pColor=New RgbColor 创建一个新颜色创建一个新颜色pColor.RGB=RGB(255,0,0)设置成红色设置成红色pMarkerSym.Color=pColor 把颜色赋给符
10、号把颜色赋给符号pMarkerElem.Symbol=pMarkerSym 把符号赋给元素把符号赋给元素8Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.定义一个元素的位置定义一个元素的位置u使用使用IElement 的的 Geometry属性属性u被所有被所有Element的子类所支持的子类所支持u在地图(在地图(Map)或布局或布局(layout page)上定位上定位u定位可以指定为定位可以指定为 point,line,envelope等等Dim pEl
11、em As IElementSet pElem=pMarkerElem QIDim pPoint As IPointSet pPoint=New PointpPoint.PutCoords 65.751,-7.534pElem.Geometry=pPoint沿线标注文本类型的沿线标注文本类型的Element的定位就可以是的定位就可以是Line对象对象9Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.把一个元素添加到把一个元素添加到 map(或者或者 layou
12、t)u使用使用 IGraphicsContainer:AddElementu指定添加的元素和它的序号指定添加的元素和它的序号u0号的序号是第一个(最顶部)的元素,序号从顶到底逐渐增加号的序号是第一个(最顶部)的元素,序号从顶到底逐渐增加Dim pMxDoc As IMxDocumentSet pMxDoc=ThisDocument pElem,0 或者使用以下语句或者使用以下语句Dim pGContainer As IGraphicsContainerSet pGContainer=pMxDoc.FocusMap QIpGContainer.AddElement pElem,0 0=top e
13、lement通过刷新屏幕来显示新添加的元素通过刷新屏幕来显示新添加的元素10Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.FeatureRenderers对象对象uRenderers 方法定义了方法定义了 layer 对象是怎么显示的对象是怎么显示的其它的其它的Renderers对象可以用来显示对象可以用来显示 RasterLayers 和和 TinLayers12Introduction to Programming ArcObjects with VBA
14、Copyright 2001,2002 ESRI.All rights reserved.简单渲染简单渲染SimpleRendereru默认的使用简单的符号来渲染显示要素默认的使用简单的符号来渲染显示要素u属性属性uSymbol:颜色和风格颜色和风格uLabel:在在 legend中显示的字符串中显示的字符串u在修来了图层的渲染方式之后需要执行刷新操作在修来了图层的渲染方式之后需要执行刷新操作USA设置一个要素类图层的渲染对象设置一个要素类图层的渲染对象Set pFLayer.Renderer=pRender刷新显示刷新显示刷新内容表刷新内容表(TOC)显示新的图标显示新的图标pMxDoc.U
15、pdateContents13Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.u根据不同的唯一值用一个符号来显示要素根据不同的唯一值用一个符号来显示要素u属性属性uField(s):提供唯一分类值的字段提供唯一分类值的字段uValue(s):特征的唯一分类值特征的唯一分类值uValueCount:需要显示的唯一分类值的数目需要显示的唯一分类值的数目唯一值渲染唯一值渲染UniqueValueRenderer14Introduction to Programmin
16、g ArcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.例子例子:创建一个创建一个 唯一值专题图为每个州赋一个符号唯一值专题图为每个州赋一个符号Private Sub ApplyUniqueRenderer(SomeLayer As IGeoFeatureLayer)Dim pUVRenderer As IUniqueValueRenderer Set pUVRenderer=New UniqueValueRenderer Dim pColorEnum As IEnumColors Set pColorEnum=Mak
17、eRandomRamp(50)pUVRenderer.FieldCount=1 pUVRenderer.Field(0)=STATE_NAME Dim pFClass As IFeatureClass Set pFClass=SomeLayer.FeatureClass Dim pFCursor As IFeatureCursor Set pFCursor=pFClass.Search(Nothing,False)Dim pFeature As IFeature,pSym As ISimpleFillSymbol Set pFeature=pFCursor.NextFeature Do Unt
18、il pFeature Is Nothing Set pSym=New SimpleFillSymbol pSym.Color=pColorEnum.Next pUVRenderer.AddValue _ pFeature.Value(pFClass.FindField(STATE_NAME),States,pSym Set pFeature=pFCursor.NextFeature Loop Set SomeLayer.Renderer=pUVRenderer m_pMxDoc.UpdateContents End Sub15Introduction to Programming ArcOb
19、jects with VBACopyright 2001,2002 ESRI.All rights reserved.u根据数字字段的值分组,每一个分组使用一个符号根据数字字段的值分组,每一个分组使用一个符号u属性属性uBreaks:分组的分界点分组的分界点uField:提供属性分组的数字型字段提供属性分组的数字型字段uBreakCount:所有分组的数目所有分组的数目u分类的方法分类的方法u使用列表在使用列表在OMD图表中适当的图表中适当的 Classify 对象对象 分类端点渲染分类端点渲染ClassBreaksRenderer16Introduction to Programming A
20、rcObjects with VBACopyright 2001,2002 ESRI.All rights reserved.把图层文件保存到磁盘上把图层文件保存到磁盘上u可以把图层可以把图层 保存成图层文件保存成图层文件(*.lyr)u图层文件保存了图层文件保存了Layer对象的以下信息对象的以下信息uLayer的数据源的路径的数据源的路径u符号化的方法符号化的方法uLabel 的方式的方式u所定义的查询所定义的查询u等等等等17Introduction to Programming ArcObjects with VBACopyright 2001,2002 ESRI.All rights
21、 reserved.Example:在在ArcMap中保存一个图层文件中保存一个图层文件Public Sub SaveFirstLayer()Dim pMxDoc As IMxDocument Set pMxDoc=ThisDocument 创建一个新的创建一个新的 GxLayer对象对象 Dim pGxLayer As IGxLayer Set pGxLayer=New GxLayer 是一个是一个Coclass可以使用可以使用New创建创建 通过通过QI取得取得IGFile接口接口 Dim pGxFile As IGxFile Set pGxFile=pGxLayer 定义文件路径定义文件路径 pGxFile.Path=C:DataShelbyville.lyr 连接一个连接一个Layer对象对象 Set pGxLayer.Layer=pMxDoc.FocusMap.Layer(0)保存文件保存文件 pGxFile.Save 完成!完成!End Sub18
限制150内