




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、牟乃夏牟乃夏 ArcGIS Engine ArcGIS Engine 地理信地理信息系统开发教程息系统开发教程配套配套PPT-PPT-第5章 地图制图目目 录录l符号化符号化l专题图制作专题图制作l地图整饰与输出地图整饰与输出一、符号化一、符号化u1.1.颜色模型颜色模型u2.2.地图符号化地图符号化u3.3.地图标注地图标注 1.ArcGIS 1.ArcGIS颜色模型颜色模型l1)RGB颜色模型颜色模型 l2)CMYK颜色模型颜色模型 l3)HSV颜色模型颜色模型 l4)Gray模型模型1 1)RGBRGB颜色模型颜色模型l这是一种最常用的颜色模型,所有的颜色都是通过这是一种最常用的颜色模型
2、,所有的颜色都是通过红色红色(Red)、绿色绿色(Green)和和蓝色蓝色(Blue)这三原色的混合来显示这三原色的混合来显示l通过显示红、绿、蓝光的像素,计算机显示器就可以描通过显示红、绿、蓝光的像素,计算机显示器就可以描绘上百种、上千种甚至几百万种不同的颜色绘上百种、上千种甚至几百万种不同的颜色l要定义一个表示为要定义一个表示为RGB值的颜色,用户需要分别给出光的值的颜色,用户需要分别给出光的红、绿、蓝三原色的值红、绿、蓝三原色的值 1 1)RGBRGB颜色模型颜色模型 用于用于RGB 颜色模型的一些规则:颜色模型的一些规则:l如果所有的如果所有的RGB值相等,则产生的颜色是灰色调的值相等
3、,则产生的颜色是灰色调的l如果所有的如果所有的RGB值为值为0,则产生的颜色为黑色,则产生的颜色为黑色l如果所有的如果所有的RGB值为值为255,则产生的颜色为白色,则产生的颜色为白色2 2)CMYKCMYK颜色模型颜色模型 lCMYK是一种颜色模式,是印刷时必须使用的一种模式是一种颜色模式,是印刷时必须使用的一种模式 lC、M、Y、K分别指的是分别指的是青色青色(Cyan)、洋红色洋红色(Magenta)、黄色黄色(Yellow)和和黑色黑色(Black)四种颜色的油墨,使用分别从四种颜色的油墨,使用分别从0100,也就是颜色从最浅到最深的数值。,也就是颜色从最浅到最深的数值。l数值越小颜色
4、越浅,反之颜色则越深,当每种颜色都达数值越小颜色越浅,反之颜色则越深,当每种颜色都达到最高值到最高值100时则为深黑色。时则为深黑色。2 2)CMYKCMYK颜色模型颜色模型 3 3)HSVHSV颜色模型颜色模型 l即色调即色调(Hue)、饱和度、饱和度(Saturation)和明度和明度(Value)颜色模型颜色模型l色调值指明了颜色在色环中的位置,以色调值指明了颜色在色环中的位置,以度度表示。例如,色调表示。例如,色调值为值为0的颜色是暗红色,而色调值为的颜色是暗红色,而色调值为180 的颜色是暗青色的颜色是暗青色l饱和度描述了颜色的饱和度描述了颜色的纯度纯度。饱和度的取值范围为。饱和度的
5、取值范围为0100,因,因此,饱和度为此,饱和度为20意味着中等暗色,而饱和度为意味着中等暗色,而饱和度为100意味着可意味着可能的最纯的颜色能的最纯的颜色l明度明度(Value)也称为也称为亮度亮度,亮度高,色彩明亮,亮度低,色彩,亮度高,色彩明亮,亮度低,色彩暗淡,明度暗淡,明度(Value)的取值范围为的取值范围为0100。值为。值为0 表示黑色,表示黑色,但是值为但是值为100不表示白色,它只是表明可能的最亮颜色不表示白色,它只是表明可能的最亮颜色3 3)HSVHSV颜色模型颜色模型 以下是用于以下是用于HSV颜色模型的一些规则:颜色模型的一些规则:l如果如果Value = 0,产生的
6、颜色为黑色。,产生的颜色为黑色。l如果如果Saturation = 0,产生的颜色为暗灰色。,产生的颜色为暗灰色。l如果如果Value = 100 且且Saturation = 0,产生的颜色为白色,产生的颜色为白色5 5)GrayGray模型模型l灰度图像灰度图像, ,由由8 8位信息组成,并使用位信息组成,并使用256256级的灰色来模级的灰色来模拟颜色层次拟颜色层次l灰度值为灰度值为0 0表示黑色,值为表示黑色,值为255255表示白色表示白色ColorColor对象对象lColor类是一个抽象类,它包括类是一个抽象类,它包括5个颜色子类,分别是:个颜色子类,分别是: CmykColor
7、类,实现了类,实现了ICmykColor接口接口 RgbColor类,实现了类,实现了IRgbColor接口接口 HsvColor类,实现了类,实现了IHsvColor接口接口 HlsColor类,实现了类,实现了IHlsColor接口接口 GrayColor类,实现了类,实现了IGrayColor接口接口在在ArcGIS Engine中最常用的是中最常用的是RGB和和HSV这两种颜色模型。这两种颜色模型。下面代码是封装的获取下面代码是封装的获取RGBRGB颜色值的方法颜色值的方法 /输入输入RGB值,获得值,获得IRgbColor型值型值 public IRgbColor GetRgbCol
8、or(int intR, int intG, int intB) IRgbColor pRgbColor = null; if (intR 255 | intG 255 | intB 255) return pRgbColor; pRgbColor = new RgbColorClass(); pRgbColor.Red = intR; pRgbColor.Green = intG; pRgbColor.Blue = intB; return pRgbColor; 下面代码是封装的获取下面代码是封装的获取HSVHSV颜色值的方法颜色值的方法/输入输入HSV值,获得值,获得IHsvColor型值
9、型值public IHsvColor GetHsvColor(int intH, int intS, int intV) IHsvColor pHsvColor = null; if (intH 360 | intS 100 | intV 100) return pHsvColor; pHsvColor = new HsvColorClass(); pHsvColor.Hue = intH; pHsvColor.Saturation = intS; pHsvColor.Value = intV; return pHsvColor;ColorColor类及其子类类及其子类 ColorRampCo
10、lorRamp类及其子类类及其子类lColorRamp类的对象可以产生颜色带,这个类实现了类的对象可以产生颜色带,这个类实现了IColorRamp接口,它定义了一系列颜色带的属性,如接口,它定义了一系列颜色带的属性,如 Size(产生多少种颜色产生多少种颜色),Colors(颜色带颜色带 IEnumColor)lColorRamp是抽象类,它有是抽象类,它有4个子类,分别是个子类,分别是lAlgorithmicColorRamp(起止渐变色)(起止渐变色)lMultiPartColorRamp(叠加渐变色)(叠加渐变色)lRandomColorRamp(随机渐变色)(随机渐变色)lPreset
11、ColorRamp(预设渐变色)(预设渐变色)ColorRampColorRamp类及其子类类及其子类ColorRampColorRamp类及其子类类及其子类AlgorithmicColorRamp 用起始颜色、终止颜色确定一个颜色用起始颜色、终止颜色确定一个颜色带带MultiPartColorRamp 叠加产生颜色带叠加产生颜色带RandomColorRamp 随机地创建一系列颜色随机地创建一系列颜色 PresetColorRamp 预设的颜色模式,可存储预设的颜色模式,可存储13种颜色种颜色 4 4种颜色带说明种颜色带说明 AlgorithmicColorRampAlgorithmicCo
12、lorRamp类介绍及代码示例类介绍及代码示例 lAlgorithmicColorRamp是通过起止颜色来确定多个在这是通过起止颜色来确定多个在这两个颜色之间的色带两个颜色之间的色带lAlgorithmicColorRamp类实现了两个主要的接口:类实现了两个主要的接口: IColorRamp和和IAlgorithmicColorRamp,两个接口之间是接,两个接口之间是接口继承关系,后者包含了前者所有的方法和属性口继承关系,后者包含了前者所有的方法和属性l IAlgorithmicColorRamp接口的属性,接口的属性,FromColor属性用于属性用于设置或返回起始颜色值,设置或返回起始
13、颜色值,ToColor属性用于设置或返回终属性用于设置或返回终止颜色值。止颜色值。lIAlgorithmicColorRamp接口的属性和方法如下:接口的属性和方法如下:AlgorithmicColorRampAlgorithmicColorRamp代码示例代码示例 l代码示例:代码示例: public IColorRamp CreateAlgorithmicColorRamp() /创建一个新创建一个新AlgorithmicColorRampClass对象对象 IAlgorithmicColorRamp pAlgColorRamp = new AlgorithmicColorRampClas
14、s(); IRgbColor pFromColor = new RgbColorClass(); IRgbColor pToColor = new RgbColorClass(); /创建起始颜色对象创建起始颜色对象 pFromColor.Red = 255; pFromColor.Green = 0; pFromColor.Blue = 0; /创建终止颜色对象创建终止颜色对象 pToColor.Red = 0; pToColor.Green = 255; pToColor.Blue = 0; /设置设置AlgorithmicColorRampClass的起止颜色属性的起止颜色属性 pAlg
15、ColorRamp.ToColor = pFromColor; pAlgColorRamp.FromColor = pToColor; /设置梯度类型设置梯度类型 pAlgColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm; /设置颜色带颜色数量设置颜色带颜色数量 pAlgColorRamp.Size = 10; /创建颜色带创建颜色带 bool bture = true; pAlgColorRamp.CreateRamp(out bture); return pAlgColorRamp; MultiPartColo
16、rRampMultiPartColorRamp类介绍类介绍lMultiPartColorRamp类是由两个色带叠加生成一个新的色带。类是由两个色带叠加生成一个新的色带。lMultiPartColorRamp类实现了类实现了IMultiPartColorRamp接口,其接口,其AddRamp方法用于添加一个基础色带。方法用于添加一个基础色带。该色带可以在表达具有该色带可以在表达具有零点的现象(如人口增长或温度)时使用。零点的现象(如人口增长或温度)时使用。RandomColorRampRandomColorRamp类介绍类介绍lRandomColorRamp对象产生随机颜色带,对象产生随机颜色带
17、,RandomColorRamp也需要设定一个范围,这个范围也需要设定一个范围,这个范围是是HSV颜色模型的,颜色将在这个范围内随机出现颜色模型的,颜色将在这个范围内随机出现lRandomColorRamp类实现了类实现了IRandomColorRamp接口接口RandomColorRampRandomColorRamp类介绍类介绍lIRandomColorRamp接口的属性和方法如下:接口的属性和方法如下:2.2.地图的符号化地图的符号化l在在ArcGIS Engine中,所有地图数据及其修饰要素的显示中,所有地图数据及其修饰要素的显示样式都是由样式都是由Symbol类控制的。主要分为三大类
18、符号:类控制的。主要分为三大类符号:MarkerSymbol(点符号点符号)、 LineSymbol(线符号线符号)和和FillSymbol(填充符号填充符号)来绘制地理要素的几何图形来绘制地理要素的几何图形l此外还有两种特殊类型的符号:一种是此外还有两种特殊类型的符号:一种是TextSymbol,用,用于文字标注;另一种是于文字标注;另一种是ChartRender ,用于显示饼图、,用于显示饼图、条形图、柱状图等表示统计图表类型(在专题地图中详条形图、柱状图等表示统计图表类型(在专题地图中详细讲述)。细讲述)。 符号的设置符号的设置u1 1) MarkerSymbol MarkerSymbo
19、l类及其子类类及其子类 u2 2) LineSymbol LineSymbol类及其子类类及其子类 u3 3) FillSymbol FillSymbol类及其子类类及其子类u4 4) TextSymbol TextSymbol类类 1) MarkerSymbol1) MarkerSymbol类及其子类类及其子类lMarkerSymbol类是用于修饰点对象的符号,它主要拥类是用于修饰点对象的符号,它主要拥有有5个子类,不同的子类可以产生不同类型的点符号个子类,不同的子类可以产生不同类型的点符号l所有的所有的MarkerSymbol子类都实现了子类都实现了IMarkerSymbol接接口,这个接
20、口定义了标记符号的公共方法和属性,如口,这个接口定义了标记符号的公共方法和属性,如Angle、Color、Size和和XOffset、YOffset等。等。1) MarkerSymbol1) MarkerSymbol类及其子类类及其子类lMarkerSymbol类的五个主要子类:类的五个主要子类:pSimpleMarkerSymbolpArrowMarkerSymbolpCharacterMarkerSymbolpPictureMarkerSymbolpMultiLayerMarkerSymbol1)MarkerSymbol1)MarkerSymbol类及其子类类及其子类lSimpleMark
21、erSymbol用与设置简单类型的点符号,该类实现了用与设置简单类型的点符号,该类实现了ISimpleMarkerSymbol接口。其接口。其Style属性用于设置点类型的样属性用于设置点类型的样式,它有五种类型,并存储在式,它有五种类型,并存储在esriSimpleMarkerStyle变量中,变量中,分别是圆形、矩形、十字形、分别是圆形、矩形、十字形、X型、菱形。型、菱形。lCharacterMarkerSymbol可以将点要素显示为字符,该类实现了可以将点要素显示为字符,该类实现了ICharacterMarkerSymbol接口,接口,Font属性设置字体类型,属性设置字体类型,Char
22、acterindex属性用于设置或返回要显示的字符。设置显示属性用于设置或返回要显示的字符。设置显示的字符由的字符由ASCII码决定。码决定。1) MarkerSymbol1) MarkerSymbol类及其子类类及其子类l代码示例:代码示例:l private void SimpleMaker_Click(object sender, EventArgs e)l l /获取目标图层获取目标图层l ILayer pLayer = new FeatureLayerClass();l pLayer = mainMapControl.get_Layer(0);l IGeoFeatureLayer p
23、GeoFeatLyr = pLayer as IGeoFeatureLayer;l /设置点符号设置点符号l ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbol();l pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSSquare;/设置点符号样式为设置点符号样式为方形方形l l IRgbColor pRgbColor = new RgbColor();l pRgbColor = GetRgbColor(225, 100, 100);l pMarkerSymbol.Color
24、 = pRgbColor;/设置点符号颜色设置点符号颜色l ISymbol pSymbol = (ISymbol)pMarkerSymbol;l /更改符号样式更改符号样式l ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();l pSimpleRenderer.Symbol = pSymbol;l pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;l mainMapControl.Refresh();l mainTOCControl.Update();l简单
25、符号化的结果2) LineSymbol2) LineSymbol类及其子类类及其子类 lLineSymbol类是用于修饰线型几何对象的符号,它主要拥有类是用于修饰线型几何对象的符号,它主要拥有5个子类,如个子类,如SimpleLineSymbol、CartographicLineSymbol、MultiLayerLineSymbol、PictureLineSymbol、HashLineSymbol等,不同的子类可以产生不同类型的线符号等,不同的子类可以产生不同类型的线符号l所有的所有的LineSymbol子类都实现了子类都实现了ILineSymbol接口,接口,ILineSymbol定义了两个
26、公共属性:定义了两个公共属性:Color和和Width。2) LineSymbol2) LineSymbol类及其子类类及其子类 lLineSymbol类的五个主要子类:类的五个主要子类:pSimpleLineSymbol (预定义风格的线符号)(预定义风格的线符号)pCartographicLineSymbol (制图线符号)(制图线符号)pMultiLayerLineSymbol(多符号叠加产生的新线符号)(多符号叠加产生的新线符号)pPictureLineSymbol (图片线符号)(图片线符号) pHashLineSymbol (离散线符号)(离散线符号) 2) LineSymbol2
27、) LineSymbol类及其子类类及其子类 l代码示例:代码示例:ISimpleLineSymbol pLineSymbol;IRgbColor pRgbColor;pRgbColor = new RgbColorClass();pRgbColor.Red = 255;pLineSymbol = new SimpleLineSymbolClass();/设置线符号的颜色设置线符号的颜色pLineSymbol.Color = pRgbColor;/设置先符号的类型设置先符号的类型pLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
28、/设置线符号的宽度设置线符号的宽度pLineSymbol.Width = 1;3) FillSymbol3) FillSymbol类及其子类类及其子类l面要素的符号化通过面要素的符号化通过FillSymbol类来完成,它是一个类来完成,它是一个抽象类,有多个子类。抽象类,有多个子类。FillSymbol类实现了类实现了IFillSymbol接口,这个接口定义了两个属性:接口,这个接口定义了两个属性:Color和和OutlinepColor属性控制填充的颜色属性控制填充的颜色pOutline属性设置填充符号的轮廓线,默认情况下,轮廓属性设置填充符号的轮廓线,默认情况下,轮廓线是一个实心的线是一个
29、实心的SimpleLineSymbol,但用户可以使用任何,但用户可以使用任何类型的线型符号作为轮廓线类型的线型符号作为轮廓线3) FillSymbol3) FillSymbol类及其子类类及其子类lFillSymbol类的子类类的子类:pSimpleFillSymbol (简单填充符号)(简单填充符号)pLineFillSymbol (包含线型符号的填充符号)(包含线型符号的填充符号)pMarkerFillSymbol (包含点符号的填充符号)(包含点符号的填充符号) pGradientFillSymbol (渐变填充符号)(渐变填充符号) pPictureFillSymbol (图片填充符
30、号)(图片填充符号) pMultiLayerFillSymbol (多符号叠加产生新填充符号)(多符号叠加产生新填充符号) 3) FillSymbol3) FillSymbol类及其子类类及其子类lSimpleFillSymbollSimpleFillSymbol类实现简单填充符号,该类实现了类实现简单填充符号,该类实现了ISimpleFillSymbol接口,其接口,其Style属性用于设置或返回填充格式。属性用于设置或返回填充格式。SimpleFillSymbol支持支持8种填充类型,存储在种填充类型,存储在esriSimpleFillStyle常常量集合中量集合中。3) FillSymb
31、ol3) FillSymbol类及其子类类及其子类 LineFillSymbol 该类实现了ILineFillSymbol接口。接口的属性和方法如下图所示。3) FillSymbol3) FillSymbol类及其子类类及其子类 MarkerFillSymbol 该类主要实现了该类主要实现了IMarkerFillSymbol和和IFillProperties这两个接口。这两个接口。IMarkerFillSymbol接口属性IFillProperties接口属性3) FillSymbol3) FillSymbol类及其子类类及其子类 GradientFillSymbol GradientFill
32、Symbol类实现了用渐变色填充面要素,它实现了IGradientFillSymbol接口。3) FillSymbol3) FillSymbol类及其子类类及其子类 PictureFillSymbol PictureFillSymbol类实现了用图片填充面要素。其CreateFillSymbolFromFile方法用于设置填充图片的类型和来源,Outline属性用于设置面要素边线,Angle属性用于设置图片的显示方向。 MultiLayerFillSymbol 与MultiLayerLineSymbol类似,MultiLayerFillSymbol类实现了组合符号填充面要素,该类实现了IMul
33、tiLayerFillSymbol接口。SimpleFillSymbol填充代码示例填充代码示例IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;/设置面填充符号设置面填充符号 ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSVertical;/设置面设置面填充为垂直线填充填充为垂直线填充pSimpleFillSymbol.Color = G
34、etRgbColor(150, 150, 150);/更改符号样式更改符号样式ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();pSimpleRenderer.Symbol = pSimpleFillSymbol as ISymbol;pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;4) 4) 文本符号化文本符号化 lTextSymbol类是用于修饰文字元素的,文字元素在要素标注等类是用于修饰文字元素的,文字元素在要素标注等方面很有用处方面很有用处lTex
35、tSymbol类最重要的设置对象是它的字符,它实现了三个主类最重要的设置对象是它的字符,它实现了三个主要的接口来设置字符:要的接口来设置字符:ITextSymbol、ISimpleTextSymbol 和和 IFormattedTextSymbollITextSymbol接口是定义文本字符样式的主要接口,被接口是定义文本字符样式的主要接口,被ISimpleTextSymbol 和和IFormattedTextSymbol 接口继承。接口继承。Font属属性是产生一个性是产生一个TextSymbol符号的关键。使用符号的关键。使用ITextSymbol接口还接口还可以定义可以定义TextSymb
36、ol对象的颜色、角度、水平排列方式、垂直对象的颜色、角度、水平排列方式、垂直排列方式和文本等内容排列方式和文本等内容文本符号化代码示例文本符号化代码示例/设置文本格式设置文本格式ITextSymbol pTextSymbol = new TextSymbolClass();StdFont myFont = new stdole.StdFontClass();myFont.Name = 宋体宋体;myFont.Size = 24;pTextSymbol.Font = (IFontDisp)myFont;pTextSymbol.Angle = 0;pTextSymbol.RightToLeft =
37、 false;/文本由左向右排列文本由左向右排列pTextSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline;/垂直方向基线对齐垂直方向基线对齐pTextSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHAFull;/文本两端对齐文本两端对齐pTextSymbol.Text = TextBox.Text;ITextElement pTextElement = new TextElementClass();pTextElement.Sy
38、mbol = pTextSymbol;pTextElement.Text = pTextSymbol.Text;5 5)符号选择器)符号选择器 在ArcGIS中可以使用符号选择器和样式管理器来设置更复杂和更具有行业特征的符号。控 件Name属性Text属性其 它SymbologyControlaxSymbologyControlPictureBoxptbPreviewLabellblColor颜色LabellblSize大小LabellblWidth线宽LabellblAngle角度LabellblOutlineColor外框颜色NumericUpDownnudSizeNumericUpDow
39、nnudWidthNumericUpDownnudAngleButtonbtnColorButtonbtnOutlineColorButtonbtnMoreSymbols更多符号ButtonbtnOK确定DialogResult属性设为OKButtonbtnCancel取消ColorDialogcolorDialogOpenFileDialogopenFileDialogFilter属性设置为:ServerStyle文件 文件|*.ServerStyleContextMenuStripcontextMenuStripMoreSymbol控件名称及其属性控件名称及其属性符号选择器代码示例符号选择
40、器代码示例 if (e.button = 1)if(itemType=esriTOCControlItem.esriTOCControlItemLegendClass) /取得图例取得图例ILegendClass pLegendClass = (ILegendGroup)unk).get_Class(int)data);/创建符号选择器创建符号选择器SymbolSelector实例实例SymbolSelectorFrm SymbolSelectorFrm = new SymbolSelectorFrm(pLegendClass, layer);if (SymbolSelectorFrm.Sho
41、wDialog() = DialogResult.OK)/局部更新主局部更新主Map控件控件m_mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);/设置新的符号设置新的符号pLegendClass.Symbol = SymbolSelectorFrm.pSymbol;/更新主更新主Map控件和图层控件控件和图层控件this.axMapControl1.ActiveView.Refresh();this.axTOCControl1.Refresh();3.3.地图标注地图标注
42、 地图标注是表示制图对象的名称、数量与质量特征的文字和数字等文字语言,用于说明制图对象的名称、种类、性质和数量等具体特征,不仅可以弥补地图符号的不足,丰富地图的内容,而且在某种程度上还可以起到符号的作用。ArcGIS Engine中提供了两种使用文字信息标注地图要素的方式:标注标注和注记注记。1)TextElement标注 TextElement标注类似于ArcGIS中的“标注”功能,即将地理实体的某个属性值某个属性值添加到地图上。 实现思路: 利用IFeatureCursor获取并遍历要素; 利用IFeature的get_Value方法获取并遍历要素的属性值,将其以文本形式赋值给ITextE
43、lement的Text属性; 将文字以Element的形式加入地图容器中。标注代码示例标注代码示例/产生一个文本符号产生一个文本符号ITextSymbol pTextSymbol = new TextSymbolClass();/设置文本符号的大小设置文本符号的大小pTextSymbol.Size = 20;pTextSymbol.Font = pFont;pTextSymbol.Color = m_OperateMap.GetRgbColor(255, 0, 0);/产生一个文本对象产生一个文本对象ITextElement pTextElement = new TextElementClas
44、s();pTextElement.Text = pFeature.get_Value(index).ToString();pTextElement.ScaleText = true;/标注随着地图放大缩小而变化标注随着地图放大缩小而变化pTextElement.Symbol = pTextSymbol;IElement pElement = pTextElement as IElement;pElement.Geometry = pPoint;IActiveView pActiveView = pMap as IActiveView;IGraphicsContainer pGraphicsCo
45、ntainer = pMap as IGraphicsContainer;/添加元素添加元素pGraphicsContainer.AddElement(pElement, 0);2)Annotation注记 在ArcGIS Engine中,注记以更复杂的方法和属性对要素图层进行标注。实现Annotation注记涉及到IAnnotateLayerPropertiesCollection、IAnnotateLayerProperties、ILabelEngineLayerProperties等接口。2)Annotation注记 AnnotateLayerPropertiesCollection是一
46、个要素图层的属性,可由IGeoFeaturelayer的AnnotationProperties属性获取,它是标注对象集的集合,此集合内可以放置多个不同的LabelEngineLayerProperties(标注对象),LabelEngineLayerProperties是与某个要素图层关联的,用于描述要素图层的标注,LabelEngineLayerProperties类实现了 ILabelEngineLayerProperties接口,其Expression属性用于通过VBScript或Jscript表达式设置或格式化标注字段,BasicOverposterLayerProperties属性
47、用于设置或返回标注的位置,并有处理标注冲突的功能,Symbol属性用于设置或返回标注字体的格式。注记代码示例注记代码示例IGeoFeatureLayer pGeoFeatLyer = pFeatLyr as IGeoFeatureLayer;IAnnotateLayerPropertiesCollection pAnnoProps = pGeoFeatLyer.AnnotationProperties;pAnnoProps.Clear();/设置标注记体格式设置标注记体格式ITextSymbol pTextSymbol = new TextSymbolClass();stdole.StdFon
48、t pFont = new stdole.StdFontClass();pFont.Name = verdana;pFont.Size = 10;pTextSymbol.Font = pFont as stdole.IFontDisp;/设置注记放置格式设置注记放置格式ILineLabelPosition pPosition = new LineLabelPositionClass();pPosition.Parallel = false;pPosition.Perpendicular = true;ILineLabelPlacementPriorities pPlacement = new
49、LineLabelPlacementPrioritiesClass();注记代码示例注记代码示例IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass();pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;pBasic.LineLabelPlacementPriorities = pPlacement;/设置标注文本摆设置标注文本摆设路径权重设路径权重pBasic.LineLabelPosi
50、tion = pPosition;/控制文本的排放位置控制文本的排放位置ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass();pLableEngine.Symbol = pTextSymbol;pLableEngine.BasicOverposterLayerProperties = pBasic;/设置标注设置标注文本的放置方式,以及处理文字间冲突的处理方式等文本的放置方式,以及处理文字间冲突的处理方式等pLableEngine.Expression = + sFieldName +
51、;/输入输入VBScript或或JavaScript语言,设置要标注的字段语言,设置要标注的字段IAnnotateLayerProperties pAnnoLayerProps = pLableEngine as IAnnotateLayerProperties;pAnnoProps.Add(pAnnoLayerProps);3)MapTips显示 MapTips是一种与地图数据交互的访问方式,即当鼠标停留在某一要素上时,就可以查看该要素的某一属性值,具体显示的哪一个字段的值,由该图层的主显示字段决定。 实例程序实现思路如下:获取要素图层;设置该图层要显示的属性字段;设置AxMapContro
52、l的ShowMapTips属性。MapTips代码示例代码示例ILayer pLayer = new FeatureLayerClass();pLayer = pFeatLyr;pLayer.ShowTips = true;ILayerFields pLayerFields = (ILayerFields)pFeatLyr;for (int i = 0; i = pLayerFields.FieldCount - 1; i+) IField field = pLayerFields.get_Field(i); if (field.Name = sFieldName) pFeatLyr.Disp
53、layField = field.Name; break; mainMapControl.ShowMapTips = true;二、专题地图制作 1.单一符号化单一符号化 2.唯一值符号化唯一值符号化 3.唯一值多字段符号唯一值多字段符号化化 4.分级色彩符号化分级色彩符号化 5.分级符号化分级符号化 6.6.比例符号化比例符号化 7.7.点密度符号化点密度符号化 8.8.统计图表符号化统计图表符号化 9.9.双值符号化双值符号化 10.10.多比例尺符号化多比例尺符号化1.单一符号化 单一符号化就是采用大小、形状和颜色都统一的点状、线状或面状符号来表示某一个图层。这种符号设置方法忽略了要素在
54、数量与质量等方面的差异,只能反映制图要素的地理位置。然而正是这种特点使其在表达制图要素的地理位置方面具有一定的优势。单一符号化的实现与点、线、面简单符号化类似。2.唯一值符号化 唯一值符号化是根据要素属性值来设置地图符号的,它将具有相同属性值的地理要素赋予相同的符号,并用符号来区分不同的属性值。这种表示方法能够反映出地图要素的数量或者质量的差异。 唯一值符号化由UniqueValueRenderer类实现,该类实现了IUniqueValueRenderer接口。其FieldCount属性用于设置或返回渲染字段的个数(0-3个),唯一值符号化的时候,它的值为1。2.唯一值符号化 实例程序实现思路
55、如下: (1)获取渲染字段的属性值; (2)生成一组与之对应的填充样式,通过IUniqueValueRender接口接口的的AddValue方法方法,使不同的属性值和填充样式关联; (3)由IGeoFeatureLayer接口的Render方法完成渲染。唯一值单字段符号化代码示例唯一值单字段符号化代码示例定义一个色带查询要渲染的字段获取渲染字段的值并为每个值附上颜色唯一值单字段符号化代码示例唯一值单字段符号化代码示例面线点3.唯一值多字段符号化 唯一值多字段符号化与单字段唯一值符号化的实现类似,不同之处是需要设置IUniqueValueRenderer接口的FieldDelimiter属性,它
56、的作用是将多个组合字段的属性值分开。 除此之外,IUniqueValueRenderer接口的AddValue方法的参数也不同,在唯一值多字段符号化中AddValue需添加的参数为不同属性字段的组合值、字段与其对应的符号。4.分级色彩符号化 分级色彩符号化是将要素属性值按照一定的分级方法分成若干级别,再用不同的颜色来表示不同级别。每个级别表示数值的一个范围,从而可以明确地反映制图要素的数量差异。色彩选择和分级方案是分级色彩表示法中的重要环节,只有合理的配色方案和科学的分级方法才能将地理现象的分布规律体现得清晰明确。这种方法多用于人口密度分布图、粮食产量分布图等。分级符号化代码示例分级符号化代码
57、示例5.分级符号化 分级符号和分级色彩类似,都是由IClassBreakRenderer接口下的ClassBreakRenderer类实现。不同的是分级色彩根据不同的值赋予不同的颜色,而分级符号是根据不同的值赋予大小不同的符号。6.比例符号化 在ArcGIS Engine中,比例符号是由ProportionalSymbolRenderer类实现,该类实现了IProportionalSymbolRenderer接口。其Field属性用于设置或返回渲染字段,MaxDataValue、MinDataValuel属性分别用于设置渲染中的最大值和最小值,一般我们设为渲染字段的最大值和最小值,MinSym
58、bol属性用于设置或返回最小值对应的符号。分级符号化代码示例分级符号化代码示例7.点密度符号化 点密度符号化是指根据制图要素属性值的大小,用随机分布的一定数量且大小相同的点来表示,属性值越大则表明该区域的点越多,属性越小则表明该地区的点越少,它是一种用点的密度来表达要素空间分布的方法。点密度由DotDensityRenderer类实现的,该类主要实现了IDotDensityRenderer和IRendererFields这两个接口。 IRendererFields的AddField方法用来添加渲染字段;IDotDensityRenderer的DotDensitySymbol属性用来设置或返回点
59、的样式,而DotDensitySymbol由DotDensityFillSymbol类实现;DotValue属性用来设置每个点所代表的值。需要注意的是点密度只能用于面状要需要注意的是点密度只能用于面状要素图层。素图层。8.统计图表符号化 常用的统计图表类型有:饼图、条形图、柱状图、堆叠图等。在ArcGIS Engine中,它们都是由ChartRenderer类实现的,该类实现了IChartRenderer接口。9.双值符号化 双值符号化是综合使用唯一值符号化和分级符号化这两种符号化方法来渲染地图,使地图既能表现出唯一值符号渲染的特征,又能表现出分级渲染的特征。双值符号化由BiUniqueVal
60、ueRenderer类实现,该类实现了IBivariateRenderer接口。其MainRenderer属性用设置或返回主渲染方法,该方法必须为唯一值渲染;VariationRenderer属性用于设置或返回二元渲染,该方法必须是分级渲染。9.双值符号化实例程序实现思路如下:实例程序实现思路如下:(1)(1)设置唯一值渲染;设置唯一值渲染;(2)(2)设置分级渲染,并分别将其赋值给设置分级渲染,并分别将其赋值给MainRenderMainRendererer和和VariationRendererVariationRenderer属性。属性。10. 多比例尺符号化 在ArcGIS Engine
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025购房补贴借款合同范本「版」
- 《课件素材管理流程图》
- 2025停车场租赁合同(版)
- 2025年网站信息销售代理合同模板示例
- 理解乐曲结构的重要性2025年乐理考试试题及答案
- 2025年影视服务项目合作计划书
- 2025建筑工程施工监理服务合同
- 脑和脊髓的被膜和血管、脑室和脑脊液课件:探索中枢神经系统的保护和滋养机制
- 2025商业店铺转让合同示范文本
- 2025-2030年门锁执手项目商业计划书
- 人教版美术一年级下册《走进旧时光》课件
- 2025-2030中国棒棒糖行业市场现状供需分析及投资评估规划分析研究报告
- 不同来源硫酸软骨素的化学结构、抗氧化与降脂活性对比
- 天津东疆综合保税区管理委员会招聘笔试题库2025
- 广东省2024-2025学年佛山市普通高中教学质量检测英语试卷及答案(二)高三试卷(佛山二模)
- 江苏省南京市江宁区2024-2025学年统编版二年级下册期中考试语文试卷(含答案)
- 2024年河北高中学业水平合格性考试地理试题真题(含答案)
- 黑布林英语阅读初一年级16《柳林风声》译文和答案
- 项目部管理人员安全培训考试题及答案
- 轴类零件实用工艺工序卡片
- 国家开放大学《管理英语3》章节测试参考答案
评论
0/150
提交评论