




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2009-12-22 09:26符号化Symbol(符号)体系ArcGIS Engine9.3为开发人员提供了32种符号,主要分为三大类符号MarkerSymbol(点符号)、 LineSymbol(线符号)和FillSymbol(填充符号)来绘制地理要素的几何图形。此外还有两种特殊类型的符号:一种是TextSymbol用于文字标注;另一种是3D Chart符号,用于显示饼图等三维对象,如需详细了解请查找帮助文档。1. MarkerSymbol对象MarkerSymbol用于修饰点对象的符号,它拥有十三个子类如表所示,其中不同的子类可以产生不同类型的点符号。所有的MarkerSymbol类都实现了IMarkerSymbol接口,这个接口定义了标记符号的公共方法和属性,如角度、颜色、大小和X,Y偏移量等表二点符号类型描述ArrowMarkerSymbol预定义的肩头符号BarChartSymbol柱状图符号CharacterMarker3DSymbol三维字体符号CharacterMarkerSymbol字体符号Marker3DSymbol3D 符号MultiLayerMarkerSymbol多个符号叠加产生新点符号PictureMarkerSymbol图片符号(bmp或emf)PiechartSymbol饼图符号SimpleMarker3DSymbol简单3D符号SimpleMarkerSymbol简单符号StackedChartSymbol堆叠符号TextMarkerSymbol文字符号用来符号化点常用的有以下5种 类型:如何创建MarkerSymbol?接下来以SimpleMarkerSymbol构建为例演示如何创建一个点符号:/创建SimpleMarkerSymbolClass对象ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();/创建RgbColorClass对象为pSimpleMarkerSymbol设置颜色IRgbColor pRgbColor = new RgbColorClass();pRgbColor.Red = 255;pSimpleMarkerSymbol.Color = pRgbColor as IColor;/设置pSimpleMarkerSymbol对象的符号类型,选择钻石pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSDiamond;/设置pSimpleMarkerSymbol对象大小,设置为pSimpleMarkerSymbol.Size = 5;/显示外框线pSimpleMarkerSymbol.Outline = true;/为外框线设置颜色IRgbColor pLineRgbColor = new RgbColorClass();pLineRgbColor.Green = 255;pSimpleMarkerSymbol.OutlineColor = pLineRgbColor as IColor;/设置外框线的宽度pSimpleMarkerSymbol.OutlineSize = 1;如何使用这个符号,在接下来介绍Renderer对象的时候将为大家演示如何用创建的点符号去符号化一个图层。2. LineSymbol对象LineSymbol对象是用于修饰线型几何对象的符号,它拥有八个子类如表所示,其中不同的子类可以产生不同类型的线符号,所有的LineSymbol类都实现了ILineSymbol接口, ILineSymbol定义了两个公共属性:Color和Width。表三线符号类型描述CartographicLineSymbol实心或者虚线线符号HashLineSymbol离散线符号MarkerLineSymbol点线符号MultiLayerLineSymbol多符号叠加产生新线符号PictureLineSymbol图片线符号SimpleLine3DSymbol 3D 线符号SimpleLineSymbol预定义风格的线符号TextureLineSymbol (3DAnalyst)纹理贴 图线符号常用的LineSymbol如下图所示:如何创建LineSymbol?接下来以MarkerLineSymbol构建为例演示如何创建一个线符号:IArrowMarkerSymbol pArrowMarker = new ArrowMarkerSymbolClass();IRgbColor pRgbColor = new RgbColorClass();pRgbColor.Red = 255;pArrowMarker.Color = pRgbColoras IColor; pArrowMarker.Length = 10;pArrowMarker.Width = 8;pArrowMarker.Style = esriArrowMarkerStyle.esriAMSPlain;IMarkerLineSymbol pMarkerLine = new MarkerLineSymbolClass();pMarkerLine.MarkerSymbol = arrowMarker;IRgbColor pLineColor = new RgbColorClass();pLineColor.Blue = 255;pMarkerLine.Color = pLineColor as IColor;3. FillSymbol对象FillSymbol是用来修饰如多边形等具有面积的几何形体的符号对象,它拥有十一个子类如表4所示它实现了IFillSymbol,这个接口定义了两个属性Color和OutLine,以满足所有类型的FillSymbol对象的公共属性设置。表四填充符号类型描述ColorRampSymbol (Carto)用于渲染Raster数据的颜色带ColorSymbol (Carto)用于渲染Raster数据的颜色符号DotDensityFillSymbol点密度填充符号GradientFillSymbol渐变填充符号LineFillSymbol包含线符号的填充符号MarkerFillSymbol包含点符号的填充符号MultiLayerFillSymbol多符号叠加产生新填充符号PictureFillSymbol图片填充符号RasterRGBSymbol用于渲染Raster数据RGBSymbolSimpleFillSymbol简单填充符号TextureFillSymbol纹理贴图填充符号常用的FillSymbol如下图所示:如何创建FillSymbol?接下来以MarkerLineSymbol构建为例演示如何创建一个线符号:/为填充符号创建外框线符号IColor pLineColor = new RgbColorClass();ICartographicLineSymbol pCartoLineSymbol = new CartographicLineSymbolClass();pCartoLineSymbol.Width = 2;pCartoLineSymbol.Color = pLineColor;/创建一个填充符号ISimpleFillSymbol pSmplFillSymbol = new SimpleFillSymbol();/设置填充符号的属性IColor pRgbClr = new RgbColorClass();IFillSymbol pFillSymbol = pSmplFillSymbol;pFillSymbol.Color = pRgbClr;pFillSymbol.Outline = pCartoLineSymbol;如果没有ArcGIS Desktop使用经验的开发看了以上代码片段会一头雾水,不明白填充符号的创建为什么还要创建线符号等等,如果有ArcGIS Desktop使用经验就会非常容易理解这些符号的创建的机制,如图8是SimpleFillSymbol设置信息。所以熟悉ArcGIS Desktop的使用对开发人员进行ArcGIS Engine开发非常有用。4. TextSymbol对象TextSymbol对象是用于修饰文字元素的,文字元素在要素标注等方面很有用处。TextSymbol符号最重要的设置对象是它的字符,它实现了三个主要的接口来设置字符:ITextSymbol 、 ISimpleTextSymbol 和 IFormattedTextSymbol 。ITextSymbol接口是定义文本字符样式的主要接口,它定义的ITextSymbol:Font属性是产生一个TextSymbol符号的关键。可以使用IFontDisp接口来设置字体的大小和是否是粗体、倾斜等属性。使用ITextSymbol接口还可以定义TextSymbol对象的颜色、角度、水平排列方式、垂直排列方式和文本等内容。 以下是一个构建TextSymbol的函数:/生成文本符号/文本符号/字体名称/字体大小/字体颜色public static void MakeTextSymbol(ref ITextSymbol pTxtSymbol, string sFontName, int iFont, int iColor)trypTxtSymbol.Font.Name = sFontName;pTxtSymbol.Font.Size = (decimal)iFont;IRgbColor pRGBColor = new RgbColorClass();pRGBColor.RGB = iColor;pTxtSymbol.Color = (IColor)pRGBColor;pTxtSymbol.Angle = 0;pTxtSymbol.RightToLeft = false;pTxtSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHACenter;pTxtSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline;catch (Exception Err)MessageBox.Show(Err.Message, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information);5. 3DChartSymbol对象3DChartSymbol是一个抽象类,它拥有三个子类:BarChart、PieChart和StackedChart。如下图所示:BarChartSymbol是最常用的三维着色符号,它使用不同类型的柱子来代表一个要素类中不同的属性,而柱子的高度取决于属性值的大小。PieChartSymbol符号进行着色的方法是使用一个饼图来显示不同要素类中的不同属性,不同的属性按照它们的数值大小占有一个饼图中的不同比例的扇形区域。PieChartSymbol符号进行着色的方法是使用一个饼图来显示不同要素类中的不同属性,不同的属性按照它们的数值大小占有一个饼图中的不同比例的扇形区域。至于如何创建这些3DChartSymbol符号这里不再提供代码片段演示,读者可以根据前边学习的知识,自己操作ArcGIS Desktop使用3DChartSymbol制作专题图,然后根据ArcGIS Engine的帮助文档开发创建3DChartSymbol。2009-12-22 09:38使用ServerStyle如果熟悉ArcGIS Desktop的使用,就会对Style符号库文件有所了解,相对应的在ArcGIS Engine开发中对应的是ServerStyle符号库,它的结构体系如下图所示。可以通过专门的转换程序把ArcGIS Desktop Style符号库转换为ArcGIS Engine所能够使用的ServerStyle符号库。用于获取ServerStyle符号库中的符号主要涉及到以下接口如表所示:表接口名称功能描述IStyleGallery用于管理Style GalleryIStyleGalleryStorage管理Style Gallery中的符号库文件IStyleGalleryClass控制符号库中Style Gallery ClassIEnumStyleGalleryItem枚举一组Style Gallery itemsIStyleGalleryItem定义Style Galle ry itme4.5.1获取符号库中符号如何获取到一个符号库中符号?接下来以获取ESRI符号库中名称为Rose的符号的流程:1.首先构建一个ServerStyleGallery对象2.其次使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件3.遍历ServerGallery中的Class,如果是FillSymbol使用IStyleGallery的GetItems方法返回一个可枚举的包含一系列StyleGalleryItem的EnumStyleGalleryItem对象。4.遍历EnumServerStyleGalleryItme枚举对象中的StylegalleryItme如果名称是Rose即可获取ESRI符号库中名称为Rose的StylegalleryItme,然后通过IStyleGalleryItem的Item属性即可转换为ISymbol。整个流程图如下图所示:SymbologyControl控件SymbologyControl用来显示ServerStyle符号库中的符号样式,可以选择在该控件上选择一个符号用来符号化一个图层或者作为一个Element的符号。使用SymbologyControl可以再设计的模式下在其属性页中加载ServerStyle符号库文件,同样也可以使用的LoadStyleFile和RemoveFile方法加载和移除Serverstyle符号库文件。运行效果如下图所示:符号化之Renderer( 渲染)体系ArcGIS Engine9.3对GIS数据的符号化分为矢量数据渲染和栅格数据渲染两大类。接下来分别介绍FeatureRender和RasterRender。1. FeatureRender对象FeatureRenderer是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IFeatureRenderer接口,这个接口定义了进行要素图层符号化的公共属性和方法。可以通过IGeoFeatureLayer:Renderer属性获得一个要素图层的符号化对象表四要素符号化类型描述SimpleRender简单符号化UniqueValueRender唯一值符号化BiUniqueValueRender双变量唯一值符号化ChartRender图表符号化ClassBreaksRenderer分类等级符号化DotDensityRenderer点密度符号化ProportionalSymbolRenderer根据属性值设置符号大小进行符号化ScaleDependentRenderer依比例尺符号化RepresentationRenderer制图表达符号化CoTrackSymbologyRenderer(TrackingAnalyst)轨迹符号化(应用于TrackingAnaylyst扩展模块)EnhancedInfoRenderder(TrackingAnalyst)增强信息符号化(应用于TrackingAnaylyst扩展模块)UniqueValueTextRenderer(TrackingAnalyst)唯一值文本符号化(应用于TrackingAnaylyst扩展模块)NAStopRenderer(NetworkAnalyst)停止符号化(应用于网络分析扩展模块)FeatureVertexRenderer(SurveyExt)要素定点符号化(应用于测量分析扩展模块)SharedEdgeRenderer(EditorExt)用于绘制拓扑元素常用的要素符号化类型主要有以下6种类型,如下图所示:2. RasterRender对象RasterRender是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IRasterRender接口,这个接口定义了栅格图层符号化的公共属性和方法。可以通过IRasterLayer:Renderer属性获得一个栅格图层的符号化对象。要素符号化类型描述RasterRGBRenderer栅格RGB符号化RasterUniqueValueRenderer唯一值符号化RasterColormapRenderer双变量唯一值符号化RasterClassifyColorRampRenderer图表符号化RasterStretchColorRampRenderer分类等级符号化RasterDiscreteColorRenderer点密度 符号化栅格符号化类型结构图如下图所示:以下代码片段是对一个RasterLayer进行RasterStretchColorRampRenderer符号化操作:/ StretchColorRamp符号化RasterLayer/RasterLayerpublic void SetStretchColorRampRenderer(IRasterLayer pRasterLayer)try/创建RasterStretchColorRampRendererClass对象IRasterStretchColorRampRenderer pRStretchRender= new RasterStretchColorRampRendererClass();/QI到IRasterRendererIRasterRenderer pRasterRender=pRStretchRender as IRasterRenderer;pRasterRender.Raster = pRasterLayeras IRaster;pRasterRender.Update();/创建两个起始颜色IRgbColor pFromRgbColor = new RgbColorClass();pFromRgbColor.Red = 255;IRgbColor pToRgbColor = new RgbColorClass();pToRgbColor.Blue = 255;/创建起止颜色带IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass();pAlgorithmicColorRamp.Size = 255;pAlgorithmicColorRamp.FromColor = pFromRgbColor as IColor;pAlgorithmicColorRamp.ToColor = pToRgbColor as IColor;bool btrue= true;pAlgorithmicColorRamp.CreateRamp(out btrue);/选择拉伸颜色带符号化的波段pRStretchRender.BandIndex = 0;/设置拉伸颜色带符号化所采用的颜色带pRStretchRender.ColorRamp = pAlgorithmicColorRamp as IColorRamp;pRasterRender.Update();/符号化RasterLayerpRasterLayer.Renderer = pRasterRender;catch(Exception Err)MessageBox.Show(Err.Message,提示,MessageBoxButtons.OK,MessageBoxIcon.Information);ArcGIS Engine开发 -图层符号化(四)2009-12-22 09:43利用ESRI自带的符号库进行唯一值符号化一图层开发实例实现唯一值符号化功能代码如下:/获取符号库中符号/符号库全路径名称/GalleryClass名称/符号名称/符号private ISymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName)try/ServerStyleGallery对象IStyleGallery pStyleGaller = new ServerStyleGalleryClass();IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage;IEnumStyleGalleryItem pEnumSyleGalleryItem=null;IStyleGalleryItem pStyleGallerItem = null;IStyleGalleryClass pStyleGalleryClass = null;/使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件pStyleGalleryStorage.AddFile(sServerStylePath);/遍历ServerGallery中的Classfor (int i = 0; i pStyleGaller.ClassCount; i+)pStyleGalleryClass = pStyleGaller.get_Class(i);if (pStyleGalleryClass.Name != sGalleryClassName) continue;/获取EnumStyleGalleryItem对象pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath, );pEnumSyleGalleryItem.Reset();/遍历pEnumSyleGalleryItempStyleGallerItem = pEnumSyleGalleryItem.Next();while (pStyleGallerItem != null)if (pStyleGallerItem.Name = symbolName)/获取符号ISymbol pSymbol = pStyleGallerItem.Item as ISymbol;System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem);System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass);return pSymbol;pStyleGallerItem = pEnumSyleGalleryItem.Next();System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem);System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass);return null;catch (Exception Err)MessageBox.Show(Err.Message, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information);return null;/设置要素图层唯一值符号化/private void UniqueValueRenderFlyr(IFeatureLayer pFeatureLayer)try/创建UniqueValueRendererClass对象IUniqueValueRenderer pUVRender = new UniqueValueRendererClass();List pFieldValues= new List();pFieldValues.Add(Hospital 2);pFieldValues.Add(School 1);pFieldValues.Add(Airport);for(int i=0;ipFieldValues.Count;i+) ISymbol pSymbol= new SimpleMarkerSymbolClass(); pSymbol =GetSymbol(C:Program FilesArcGISStylesESRI.ServerStyle,Marker Symbols,pFieldValuesi)/添加唯一值符号化字段值和相对应的符号pUVRender.AddValue(pFieldValues,pFieldValues,pSymbol);/设置唯一值符号化的字段个数和字段名pUVRender.FieldCount = 1;pUVRender.set_Field(0, 类别);IGeoFeatureLayer pGFeatureLyr = pFeatureLayer as IGeoFeatureLayer;/设置IGeofeatureLayer的Renderer属性pGFeatureLyr.Renderer = pUVRender as IFeatureRenderer;catch (Exc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考研政治面试题库及答案
- 农业产业园项目2025年区域农业产业结构优化研究与效益评估
- 基于2025年视角的资源型城市产业升级与绿色发展报告
- 2025年特色主题餐厅餐饮市场区域差异与竞争策略研究报告
- 数字化驱动2025:公路货运行业效率提升与可持续发展报告
- 安全教育培训记录缺失课件
- 共享厨房在促进餐饮消费升级方面的实践与探索报告
- 服装设计师品牌方案
- 租赁物品使用协议格式
- 2025年医药电商平台药品供应链金融合规性分析与运营优化报告
- 德瑞斯D600变频器说明书
- 2025-2030年中国锂电池回收行业市场深度调研及前景趋势与投资研究报告
- 数字化教育资源在跨学科教学中的应用
- JG/T 127-2017建筑门窗五金件滑撑
- T/CGCC 7-2017焙烤食品用糖浆
- 2024福建农信社春季招聘笔试历年典型考题及考点剖析附带答案详解
- 医生重症医学科进修汇报
- DB13(J)-T 8389-2020 被动式超低能耗建筑节能工程施工及质量验收标准
- 月嫂 考试题及答案
- 物质安全资料脱模剂MSDS
- 2025年中国过敏性鼻炎市场研究报告
评论
0/150
提交评论