第四章 符号化元素和图层PPT课件_第1页
第四章 符号化元素和图层PPT课件_第2页
第四章 符号化元素和图层PPT课件_第3页
第四章 符号化元素和图层PPT课件_第4页
第四章 符号化元素和图层PPT课件_第5页
已阅读5页,还剩142页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,1,第四章符号化元素和图层,.,2,总体介绍符号化对象(symbologyobjects)符号对象Symbolobjects颜色对象Colorobjects颜色梯度对象Colorramps为地图添加一个简单的图形(graphics)使用特征渲染对象修改图层显示方式(FeatureRenderers),课程预览,.,3,一、添加色彩颜色对象,颜色(Color)是现实世界中最普遍的事物属性,为了满足不同行业的需要,人们使用了不同的颜色模型来模拟现实的颜色。(一)颜色模型颜色的模型有很多种,如RGB颜色模型、CMYK颜色模型(主要用于印刷中)、HSV颜色模型(色调、饱和度和Value值)、GrayColor(灰度颜色)。,.,4,以下五种可创建的对象RgbColor(红、绿、蓝)CmykColor(青、洋红、黄、黑)HsvColor(色调、饱和度、值)HlsColor(色调、亮度、饱和度)GrayColor(灰度)用来定义颜色对象的属性Red,Green,Bluevalues(0255)灰度(0=white255=black)Cyan,Magenta,Yellow,Black使用Color对象来访问一个Symbol对象的Color属性,.,5,1、RGB模型可见光谱中的大部分,都可以用各种比例和强度的红、绿、蓝(RGB)三种色光混合而成。RGB模型的主要属性也是确定Red、Blue和Green的值。,IColor:RGB属性object.RGB=value,pColor.RGB=RGB(0,0,0),.,6,2、CMYK模型CMYK模型以打印在纸上的油墨的光线吸收特性为基础。当白光照射到半透明油墨上时,某些可见光波长被吸收,而其他波长则被反射回眼睛。理论上,纯青色(C)、洋红色(M)和黄色(Y)色素在合成后可以吸收所有光线并产生黑色。,K黑色油墨,.,7,3、HSV模型HSV模型对应于圆柱坐标系的一个圆锥形子集。圆锥的顶面对应于V=1,代表的颜色较亮。色彩H由绕V轴的旋转角给定,红色对应于角度0,绿色对应于角度120,蓝色对应于角度240。饱和度S取值从0到1,由圆心向圆周过度。,.,8,4、Gray模型灰度模型是没有色彩的,灰度图像由8位信息组成,并使用256级的灰色来模拟颜色的层次。灰度图像的每个像素有一个0(黑色)到255(白色)之间的亮度值。,.,9,(二)Color对象,Color对象是一个抽象类,它有5个颜色子类,它们可以使用这个接口定义的方法设置颜色对象的基本属性。,对于一种特定的颜色而言,它在不同的颜色模型中的表示方法是不一样的,因此使用颜色对象时,需要使用IColor的子接口产生具体对象。,.,10,.,11,(三)颜色对话框除了使用编程的方法得到颜色对象外,用户也可以使用AO中的颜色对话框来获取所需要的颜色,而且使用对话框更直观。AO中提供了几种颜色对话框供程序员使用。,.,12,1、颜色板对象Colorpalette该对象一共排列了120种颜色供用户使用。Colorpalette类实现了两个接口:IColorPalette和ICustomColorPalette。,.,13,2、颜色选择器对象颜色选择器(ColorSelector)对象提供了另一种选择颜色的方法,不过这种选择方式在精确度更高。,.,14,(三)ColorRamp对象制作地图专题图的过程中系统需要的颜色常常不是一种,而是随机或有序产生的一个颜色带。ColorRamp类的对象可以产生颜色带,这个类实现了IColorRamp,后者定义了一系列颜色带的公共方法,如Size(产生多少种颜色),Color(颜色带IEnumColor)。,.,15,颜色梯度对象ColorRamps,四种可以创建的对象AlgorithmicColorRamp(算法颜色梯度)RandomColorRamp(随机颜色梯度)PresetColorRamp(预定义颜色梯度)MultiPartColorRamp(多部分的颜色梯度),.,16,1、AlgorithmicColorRamp颜色带AlgorithmicColorRamp是通过起止颜色来确定多个在这两个颜色之间的色带,因此它产生的颜色带还是有章可循的。该类实现了两个接口:IColorRamp和IAlgorithmicColorRamp,两个接口之间是接口继承关系。,.,17,IAlgorithmicColorRamppRampColor;产生一个AlgorithmicColorRamp对象pRampColor=NewAlgorithmicColorRampClass();传入起始颜色pRampColor.FromColor=FromColor;传入终止颜色pRampColor.ToColor=ToColor;pRampColor.size=Count;boolok=true;pRampColor.CreateRamp(outok);返回的是一个颜色枚举型对象returnpRampColor.Colors,.,18,若需获取其中的单个颜色,则:IEnumColorspEnumColors;pEnumColors=CreateColorRamp(fromColor,toColor,num);IColorpColor;pColor=pEnumColors.Next();,.,19,2、IRandomColorRamp颜色带在UniqueBreak着色中系统使用的多是随机颜色,即颜色带中的颜色没有规律可循。AO也提供了RandomColorRamp对象供程序员产生随机颜色带,RandomColorRamp也需要设定一个范围,但是这个范围是HSV颜色模型的,颜色将在这个范围内随机出现。,.,20,IEnumColorspEnumColors;IRandomColorRamppColorRamp;pColorRamp=NewRandomColorRampClass();pColorRamp.StartHue=0pColorRamp.MinValue=99pColorRamp.MinSaturation=15pColorRamp.EndHue=360pColorRamp.MaxValue=100pColorRamp.MaxSaturation=30产生的随机颜色数pColorRamp.Size=10boolok=true;pColorRamp.CreateRamp(outok);pEnumColors=pRandomColor.Colors;ReturnpEnumColors;,.,21,二、图形的外观Symbol对象地图需要符号和标记来表示地理对象的某些描述性信息。Symbol就是AO中用于在地图上修饰要素或者图形元素的对象,它作为Element的Symbol属性而被使用。使用符号可以让一个点对象表现为一个箭头或者一个圆点,也可以让线对象的类型有丰富的变化或让一个面对象的填充颜色和样式丰富多彩。,.,22,Symbol类的子类,*,*此外还有TextSymbol用于文字标注;3DChart符号用于显示饼图等三维对象。,.,23,所有的符号类都实现了ISymbol和IMapLevel接口,前者定义了一个符号对象的基本属性和方法;后者定义的MapLevel属性可以确定符号的显示层。,.,24,(一)MarkerSymbol对象MarkerSymbol对象用于修饰点对象的符号,它拥有五个子类,其中不同的子类可以产生不同类型的点符号。所有的MarkerSymbol类都实现了IMarkerSymbol接口,这个接口定义了标记符号的公共方法和属性,如角度、颜色、大小和XY偏移量等。1、SimpleMarkerSymbol该对象有五种类型形状,分别是矩形、圆形、Cross、菱形和X形。,.,25,.,26,.,27,2、ArrowMarkerSymbol箭头形式的符号该类的主要接口是IArrowMarkerSymbol,它继承至IMarkerSymbol接口,其Length属性指箭头的顶点到底边的距离;Width是箭头底边的宽度;Style是箭头符号的样式,也只有一个样式esriAMSPlain。,.,28,.,29,.,30,3、CharacterMarkerSymbol字符形式的符号该类实现了ICharacterMarkerSymbol,这个接口也继承自IMarkerSymbol。它可以将一个点要素显示为字符状,而字符的字体来自系统中已经安装的字符集,字符本身来通过CharaterIndex属性来确定,它其实就是系统字符的ASCII码,如a的ASCII码为97。,.,31,.,32,.,33,4、PictureMarkerSymbol以图片为背景的符号PictureMarkerSymbol在符号的显示上显得“高级”一点,它可以把一个点对象的外形表示为一张位图图片。该类实现了IPictureMarkerSymbol接口,该接口定义了引用位图的方法。该对象将一张图片设置为点符号可以有两个办法,一是使用CreateMarkerSymbolFromFile方法从磁盘上获取一张位图,另外一种是该对象的Picture属性。例如PictureMarkerSymbol.Picture=image1.picture,.,34,.,35,.,36,5、MultiLayerMarkerSymbol使用多个符号叠加生成新的符号如果单一的点状或箭头符号、字符符号仍然不能满足用户的需要,还可以考虑将多个符号进行叠加的方式,生成全新的组合符号,而这种组合的个数是没有限制的。,.,37,.,38,.,39,.,40,(二)LineSymbol对象LineSymbol对象是用于修饰线型几何对象的符号,ILineSymbol作为每一种LineSymbol类都要实现的接口定义了两个公共属性,即Color和WidthLineSymbol抽象类有四个子类,分别是CartographicLineSymbol、SimpleLineSymbol、PictureLineSymbol、MultiLayerLineSymbol,.,41,1、SimpleLineSymbol简单线符号该对象的主要属性是Style,它可以确定线的形式,SimpleLineSymbol对象拥有的线类型有7种,.,42,.,43,.,44,2、CartographicLineSymbol制图线符号CartographicLineSymbol比SimpleLineSymbol拥有复杂的属性和方法来修饰一条线对象。这个类主要实现两个接口,包括ILinePropertes和ICartographicLineSymbol。,.,45,ICartographicLineSymbol接口主要用于设置线符号的节点属性,Cap属性:用于设置线要素首尾端点的形状;Join属性:用于设置线要素转折处的样式,如esriLCSRound是设置转弯处圆滑。ILineProperties接口主要用于设置dash-dot类型的线要素符号属性,包括Template和LineDecoration等。,.,46,.,47,.,48,.,49,3、MultiLayerLineSymbol多图层线符号可以使用重叠符号的方法生成新的线符号。,.,50,.,51,.,52,4、HashLineSymbol混列线符号,.,53,.,54,.,55,5、MarkerLineSymbol标记线符号,.,56,.,57,6、PictureLineSymbol图片线符号该对象可以将一条线对象通过一张位图图片表现出来,当系统需要设置非常特殊的线符号,可以使用这个对象来完成。,.,58,(三)FillSymbol对象FillSymbol是用来修饰如多边形等具有面积的几何形体的符号对象,它的类实现了IFillSymbol,这个接口定义了两个属性Color和OutLine,以满足所有类型的FillSymbol对象的公共属性设置。Color属性可以设置填充符号的基本颜色,如果不设置这个属性,填充对象也是有默认颜色的,如GradientFillSymbol是蓝色,LineFillSymbol是中度灰色,其他的填充对象都是黑色。,.,59,1、SimpleFillSymbol简单填充符号该类实现的接口是ISimpleFillSymbol,使用它定义的属性和方法可以设置一个简单填充符号不同的Style属性,可以选择不同的简单填充类型。其类型有8种之多。,.,60,.,61,.,62,2、LineFillSymbol线填充符号该类中的填充符号是重复的线条,它实现了ILineFillSymbol接口,用于定义它的角度、偏移量和线之间的间隔距离。LineSymbol属性:设置线填充符号的线的样式线条需要使用一个ILineSymbol对象修饰Angle属性:设置线与水平线的夹角,默认为0Offset属性:线有一个偏移值Separation属性:单位距离内线出现的数量,如果值小于LineSymbol对象的宽度,就会被覆盖,.,63,.,64,.,65,3、MarkerFillSymbolMarkerFillSymbol是使用一个Marker符号作为背景填充符号。这个类实现了两个接口,分别为IMarkerFillSymbol和IFillProperties接口。(1)IMarkerFillSymbol,用于设置填充对象的Marker对象的属性。GridAngle属性:设置Marker点的角度MarkerSymbol属性:设置Marker的类型,.,66,(2)IFillProperties接口,它可以设置Marker在填充区域内的分布情况。在默认情况下,填充区的圆点处应该是一个Marker的圆心,不会发生偏移,但可以通过XOffset和YOffset属性来设置偏移值。XSeperation和YSeperation可以设置Marker之间的水平和垂直距离。这四个属性都是使用像素(Points)作为单位,默认情况下是12个像素。,.,67,.,68,.,69,4、GradientFillSymbol该对象使用渐变颜色带进行填充,它需要使用到颜色带对象。这些颜色带可以是从一侧到另一侧,也可以是从中间到四方。该类实现了IGradientFillSymbol接口:ColorRamp属性:用于设置渐变填充符号的颜色带对象,渐变的效果最好是使用AlgorithmicColorRamp颜色带对象。Style属性:用于设计渐变填充的样式,共线、矩形、圆形还是缓冲四种方法。,.,70,.,71,.,72,5、PictureFillSymbol使用图片来进行填充。6、MultilayerFillSymbol使用多个填充符号进行叠加以产生新的填充符号对象,这种叠加是一层符号放在另一层符号的上面,因而可能产生覆盖的情况。,.,73,.,74,.,75,.,76,7、DotDensityFillSymbol点密度填充符号该对象是一种基于数据的填充符号,它一般和DotDensityRenderer着色对象一起使用。该对象是使用有MarkerSymbol组成的随机位置点来显示数据的属性,而单位面积内点的多少则由DotDensityRenderer对象计算出来。该对象类实现的是IDotDensityFillSymbol接口,通过这个接口可以设置填充符号的外观,如Marker的数目、尺寸和填充符号的背景颜色等属性。,.,77,(四)TextSymbol对象该对象是用于修饰文字元素的,文字元素在要素标注等方面很有用处。该类实现了多个接口,它们定义的属性和方法可以让程序员完成产生普通文本的操作。此外,它还有连个属性通过单个的CoClass来实现,Textpath属性,可以用于设置文字的路径TextBackground,用于设置文字的背景。,.,78,TextSymbol符号最重要的设置对象是它的字符,它实现了三个主要的接口来设置字符。ITextSymbol、ISimpleTextSymbol、IFormattedTextSymbol其中ITextSymbol接口是定义文本字符样式的主要接口。Font属性是产生一个TextSymbol符号的关键。至于如何设置文字的字体,可以使用IFontDisp接口来设置字体的大小和是否是粗体、倾斜等属性。ISimpleTextSymbol接口来设置它的一些简单属性,如XOffset和YOffset可以设置字符的偏移量。,.,79,.,80,显示要素在IScreenDisplay接口下的几种画的方法(1)StartDrawing:准备画(2)DrawPoint,DrawMultipoint,DrawPolyline,DrawPolygon(3)FinishDrawing:刷新屏幕快速画几何体和符号,IScreenDisplaypDisplay;pDisplay=axMapControl1.ActiveView.Display当前应用程序的显示pDisplay.StartDrawing(pDisplay.hDC,esriNoScreenCache);pDisplay.SetSymbol(pSym);pDisplay.DrawPolyLine(pPolyLine);pDisplay.FinishDrawing();,.,81,.,82,如果字符可能有背景对象、阴影等属性,可通过IFormattedTextSymbol接口定义的方法来设置。ShadowColor设置阴影颜色ShapeXOffset和ShapeYOffset用于设置字体在X方向和Y方向上的偏移值。CharacterSpacing和CharacterWidth用于设置文本符号中单个字符之间的空隙和字符的宽度等属性。,.,83,.,84,.,85,(五)3DChartSymbol对象该对象是一个抽象类,它拥有三个子类。它本质上时一种Marker符号,一般用于ChartRenderer对象的着色,而且这个着色方法常常是基于多个属性的。该对象主要是为了着色对象(renderer)中的柱状、饼状着色服务的。这个符号群有三个子类:BarChart、PieChart和StackedChart。,.,86,BarChartSymbol,PieChartSymbol,StackedChartSymbol,.,87,三、制作专题ArcMap提供了多种方法来制作不同类型的专题图,这些专题图是可以依据要素的一个或多个属性的不同而设置不同类型的符号,从而达到区分不同类型要素的目的。AO给用户提供了多种着色对象用于专题图的产生,这个过程既可以使用标准的着色方案,也可以定制自己的着色方案。AO中提供的标准着色方法有8种。,.,88,FeatureRenderer是一个抽象类,其子类负责进行不同类型的着色运算。它们都实现了IFeatureRenderer接口,这个接口定义了进行地图着色运算的公共属性和方法。使用不同的着色对象时,用户需要确定是哪个图层需要被着色,而着色对象只是要素图层的一个属性而已,可以通过IGeoFeatureLayer的Renderer属性获得一个图层的着色对象。,.,89,FeatureRenderers对象,Renderers方法定义了layer对象是怎么显示的,其它的Renderers对象可以用来显示RasterLayers和TinLayers,.,90,(一)简单渲染SimpleRenderer,默认的使用简单的符号来渲染显示要素属性Symbol:颜色和风格Label:在legend中显示的字符串在修来了图层的渲染方式之后需要执行刷新操作,USA,设置一个要素类图层的渲染对象pFLayer.Renderer=pRender,.,91,ISimpleRenderer的两个重要属性:Description和Label,这两个属性是用于设置Legend(图例)的。在ArcMap中对一个要素图层进行着色运算,然后往PageLayout视图中插入Legend后,就会看到下面图像。,USA,Simplerenderer,USA,Label,Description,.,92,.,93,.,94,.,95,.,96,.,97,(二)唯一值渲染UniqueValueRenderer,根据不同的唯一值用一个符号来显示要素属性Field(s):提供唯一分类值的字段Value(s):特征的唯一分类值ValueCount:需要显示的唯一分类值的数目,.,98,.,99,.,100,.,101,.,102,(三)分级渲染ClassBreaksRenderer,根据数字字段的值分组,每一个分组使用一个符号属性Breaks:分组的分界点Field:提供属性分组的数字型字段BreakCount:所有分组的数目分类的方法使用列表在OMD图表中适当的Classify对象,例子见帮助,.,103,着色中使用的各种计算方法Classify对象Classify是一个抽象类,它拥有五个子分级对象,即DefinedInterval、EqualInterval、NaturalBreaks、StandardDeviation和Quantile。所有的这些对象都要求使用Histogram型数据,在给定需要划分的级数后,它就可以对一个数组的数据进行分级计算,得出合适的分级点。,.,104,Histogram数据是由两个数组组成的,第一个数组是排好序的数值数组,第二个数组是与之相关联的频率值数组,这个数据可以通过TableHistogram对象来得到。Histogram对象有三种:如果图层对象支持ITable接口,就可以使用TableHistogram对象来获得它的数值字段的值如果Histogram数据已经保存在一个Histogram对象中,则还可以使用DataHistogram来获得到第三种是TinHistogram对象,它可以在数据源为TIN的时候使用。,.,105,使用ITableHistogram接口可以设置需要传入的表和字段,Table和Field属性是获得一个表的数值字段的Histogram数据时必须设置的。在设置完这两个属性后,跳转到IHistogram接口,使用GetHistogram方法得到两个数组。此外,该对象的IStatisticsResults接口,可以得到一个数值字段的各种统计值,如数值和、最大值、最小值和标准方差等。,.,106,IClassify接口定义了所有的分级对象都使用的属性和方法,它多用于传入Histogram数据到一个具体的分级对象中去。ClassBreaks:用于设置分级的数目SetHistogramData方法:可以将Histogram对象传出的两个数组传入分级对象。,.,107,EqualInterval对象:支持IClassifyMinMax接口,用于设置在需要分级的字段的数据中人为设置需要分级的最大值和最小值范围,该方法的取值范围是等间距划分的。DefinedInterval对象:支持IntervalRange接口,该对象是通过设定间距的方式来进行划分NaturalBreaks对象:是通过Jenk的方法来对数据进行分类,它保证了类间的变化最大化,类内的变化最小化。,.,108,Quantile对象:是分数位分类,它是使用相同数目的特征来进行分类的。这种分类方法对于分等级的数值特别有效。StandardDeviation对象:会创建偶数个类,这些类表示相对于所有要素的平均值的整体或者部分偏差。,.,109,.,110,.,111,.,112,(四)ProportionalSymbolRenderer梯度着色法梯度着色法依据要素图层的要素类中某个字段的数值而生成大小不一的圆形符号进行着色。这种着色方式用户需要知道最大和最小的圆点各自代表的字段值、着色基于的字段和着色点使用的符号(MarkerSymbol类型)以及在它的Legend要出现的级别数目LegendSymbolCount。,.,113,.,114,.,115,.,116,(五)ChartRenderer着色法该对象使用饼图(PieChart)或柱状图(BarChart)来比较一个要素的多个属性。这种着色方法有两种表现形式,一个是水平排列,另外一种是累积(Stacked)排列,其中的每一根柱子都代表了要素的一个属性。,.,117,.,118,.,119,.,120,.,121,PieChartRenderer着色该方法是使用饼图来表现要素的多个属性之间的比率关系,通过这种饼图可以一目了然地看出哪些属性的值更多一点。PieChartRenderer也是ChartRenderer的一种,它实现的是IPieChartRenderer接口,这种着色方式必须使用PieChartSymbol符号来修饰要素。,.,122,.,123,.,124,.,125,.,126,(六)DotDensityRenderer着色法DotDensityRenderer对象使用DotDensityFillSymbol符号来对一个Polygon类型的要素图层进行着色。这种着色法根据随机分布的点的密度来表现要素的某个属性值的大小,而这些点的多少是由DotValue值来决定的。,.,127,.,128,.,129,.,130,(七)ScaleDependentRenderer依据比例尺渲染根据图层的比例尺更新图层的渲染,1:75000000,1:7000000,属性Breaks:Cut-offpoint(scaleranges)分割点Renderers:多个渲染器RendererCount:渲染器个数,.,131,SetpScaleRend=NewScaleDependentRendererpScaleRend.AddRendererpAlphaRendpScaleRend.AddRendererpBetaRendpScaleRend.AddRendererpGammaRendpScaleRend.Break(0)=1000pScaleRend.Break(1)=10000pScaleRend.Break(2)=250000SetpGeoFeatLayer.Renderer=pScaleRend*whatthismeans*ifscaledenom.=1,000thenalpharendererisusedif1,000scaledenom.=10,000thenbetarendererisusedif10,000scaledenom.=250,000thengammarendererisusedif250,000scaledemon.thenNOrendererassigned,.,132,四、地图的标注对于一幅地图而言标注是非常重要的。一张标注良好的地图可以通过文字清晰地显示地图要素中蕴涵的各种内在信息。AO中的文字标注分为两种:一个是标注(Label),另一个是注记(Annotation)。它们都是在要素图层上以文字来揭示地图要素的某些信息,如地名、人口数目、特产等。,.,133,(一)TextElement标注使用TextElement对象来添加标注的思路简单,而且它可以控制标注字体的样式。标注的流程是首先在一个要素图层进行查询,然后通过一个cursor取得所有要进行标注的要素,然后遍历要素做如下操作:,.,134,(1)取得单个要素的Envelope属性,即要素几何图形的封装边界(2)新建一个TextElement对象,其Text为要素的某个字段属性,而Geometry是要素封装边界的中间点。(3)将新建的文字元素加入地图中。(4)刷新视图,让标注文本显示出来。,.,135,.,136,.,137,.,138,(二)AO中的标注除了使用TextElement对象来进行要素标注外,AO库中也有专门用于标注操作的对象供程序员使用,使用这些对象可以在地图上进行自动标注,可以使用SQL语句对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论