符号化element和图层

上传人:shaoy****1971 文档编号:114827251 上传时间:2019-11-12 格式:PPT 页数:17 大小:504.81KB
返回 下载 相关 举报
符号化element和图层_第1页
第1页 / 共17页
符号化element和图层_第2页
第2页 / 共17页
符号化element和图层_第3页
第3页 / 共17页
符号化element和图层_第4页
第4页 / 共17页
符号化element和图层_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《符号化element和图层》由会员分享,可在线阅读,更多相关《符号化element和图层(17页珍藏版)》请在金锄头文库上搜索。

1、2.1 Symbolizing elements and layers,12-2,Lesson overview,总体介绍符号化对象(symbology objects) 符号对象Symbol objects 颜色对象Color objects 颜色梯度对象Color ramps 为地图添加一个简单的图形(graphics) 使用特征渲染对象修改图层显示方式(FeatureRenderers) 使用图层文件(*.lyr)来管理图层的符号化,12-3,Symbol类的子类,* Several additional types of symbols are listed on the Displa

2、y OMD, including TextSymbols,*,12-4,以下五种可创建的对象 RgbColor(红、绿、蓝) CmykColor(青、洋红、黄、黑) HsvColor(色调、饱和度、值) HlsColor(色调、亮度、饱和度) GrayColor(灰度) 用来定义颜色对象的属性 Red, Green, Blue values (0255) 灰度 (0=white 255=black) Cyan, Magenta, Yellow, Black 使用Color对象来访问一个Symbol对象的Color属性,使用color对象,12-5,颜色梯度对象ColorRamps,四种可以创建

3、的对象 Algorithmic ColorRamp(算法颜色梯度) Random ColorRamp(随机颜色梯度) Preset ColorRamp(预定义颜色梯度) MultiPart ColorRamp(多部分的颜色梯度),12-6,创建一个新的 Randomcolorramp对象,Public Function GetRandomRamp (NumColors As Integer) As IEnumColors Dim pRandomColorRamp As IColorRamp Set pRandomColorRamp = New RandomColorRamp pRandomCo

4、lorRamp.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 GetRandomRamp = pRandomColorRamp *Pass back the ramp End Function,RandomColorRamp.CreateRamp方法返回的是IEnumColors对象。是一个

5、枚举对象。,12-7,创建简单的图形元素( graphic elements),有一些可以创建的对象 图形元素的种类 Line, polygon, marker Text and pictures 框架元素(FrameElements ) 在PageLayout上使用 Map frames North arrows, legends, scale bars Table frames,12-8,例子: 创建一个新的图形元素并设置它的符号,Dim pMarkerElem As IMarkerElement Set pMarkerElem = New MarkerElement 创建一个新的元素 D

6、im pMarkerSym As ISimpleMarkerSymbol Set pMarkerSym = New SimpleMarkerSymbol 创建新符号 pMarkerSym.Style = esriSMSCircle 指定符号的风格 Dim pColor As IRgbColor Set pColor = New RgbColor 创建一个新颜色 pColor.RGB = RGB(255,0,0) 设置成红色 pMarkerSym.Color = pColor 把颜色赋给符号 pMarkerElem.Symbol = pMarkerSym 把符号赋给元素,12-9,定义一个元素的

7、位置,使用IElement 的 Geometry属性 被所有Element的子类所支持 在地图(Map)或布局 (layout page)上定位 定位可以指定为 point, line, envelope等,Dim pElem As IElement Set pElem = pMarkerElem QI Dim pPoint As IPoint Set pPoint = New Point pPoint.PutCoords 65.751, -7.534 pElem.Geometry = pPoint,沿线标注文本类型的Element的定位就可以是Line对象,12-10,把一个元素添加到 ma

8、p (或者 layout),使用 IGraphicsContainer : AddElement 指定添加的元素和它的序号 0号的序号是第一个(最顶部)的元素,序号从顶到底逐渐增加,Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument pMxDoc.ActiveView.GraphicsContainer.AddElement pElem, 0 或者使用以下语句 Dim pGContainer As IGraphicsContainer Set pGContainer = pMxDoc.FocusMap QI pGContainer.AddEl

9、ement pElem, 0 0=top element pMxDoc.ActiveView.Refresh,通过刷新屏幕来显示新添加的元素,12-11,计算Layout上所有图形元素个数,Public Sub CountLayoutElements () Dim pMxDoc As IMxDocument Dim pGContainer As IGraphicsContainer Dim pElement As IElement Dim intGraphicCount As Integer Set pMxDoc = ThisDocument Set pGContainer = pMxDoc.

10、PageLayout pGContainer.Reset *确保指针指向最初的位置 Set pElement = pGContainer.Next *取得第一个元素,序号为0 Do Until pElement Is Nothing *循环取得所有的元素 If TypeOf pElement Is IGraphicElement Then intGraphicCount = intGraphicCount + 1 *增加计数 End If Set pElement = pGContainer.Next *取出下一个元素 Loop MsgBox “There are “ & intGraphic

11、Count & “ graphics on the page“ Exit Sub,12-12,FeatureRenderers对象,Renderers 方法定义了 layer 对象是怎么显示的,其它的Renderers对象可以用来显示 RasterLayers 和 TinLayers,12-13,简单渲染SimpleRenderer,默认的使用简单的符号来渲染显示要素 属性 Symbol: 颜色和风格 Label: 在 legend中显示的字符串 在修来了图层的渲染方式之后需要执行刷新操作,USA,设置一个要素类图层的渲染对象 Set pFLayer.Renderer = pRender 刷新

12、显示 pMxDoc.ActiveView.Refresh 刷新内容表(TOC)显示新的图标 pMxDoc.UpdateContents,12-14,根据不同的唯一值用一个符号来显示要素 属性 Field(s): 提供唯一分类值的字段 Value(s):特征的唯一分类值 ValueCount: 需要显示的唯一分类值的数目,唯一值渲染UniqueValueRenderer,12-15,例子: 创建一个 唯一值专题图为每个州赋一个符号,Private Sub ApplyUniqueRenderer(SomeLayer As IGeoFeatureLayer) Dim pUVRenderer As I

13、UniqueValueRenderer Set pUVRenderer = New UniqueValueRenderer Dim pColorEnum As IEnumColors Set pColorEnum = MakeRandomRamp(50) pUVRenderer.FieldCount = 1 pUVRenderer.Field(0) = “STATE_NAME“ Dim pFClass As IFeatureClass Set pFClass = SomeLayer.FeatureClass Dim pFCursor As IFeatureCursor Set pFCursor

14、 = pFClass.Search(Nothing, False) Dim pFeature As IFeature, pSym As ISimpleFillSymbol Set pFeature = pFCursor.NextFeature Do Until pFeature Is Nothing Set pSym = New SimpleFillSymbol pSym.Color = pColorEnum.Next pUVRenderer.AddValue _ pFeature.Value(pFClass.FindField(“STATE_NAME“), “States“, pSym Se

15、t pFeature = pFCursor.NextFeature Loop Set SomeLayer.Renderer = pUVRenderer m_pMxDoc.UpdateContents m_pMxDoc.ActiveView.Refresh End Sub,12-16,根据数字字段的值分组,每一个分组使用一个符号 属性 Breaks: 分组的分界点 Field: 提供属性分组的数字型字段 BreakCount: 所有分组的数目 分类的方法 使用列表在OMD图表中适当的 Classify 对象,分类端点渲染ClassBreaksRenderer,12-17,把图层文件保存到磁盘上,

16、可以把图层 保存成图层文件(*.lyr) 图层文件保存了Layer对象的以下信息 Layer的数据源的路径 符号化的方法 Label 的方式 所定义的查询 等等,12-18,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.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号