http://apps.hi.baidu.com/share/detail/23143648#

符号化Symbol(符号)体系

ArcGIS Engine9.3为开发人员提供了32种符号,主要分为三大类符号MarkerSymbol(点符号)、 LineSymbol(线符号)和FillSymbol(填充符号)来绘制地理要素的几何图形。此外还有两种特殊类型的符号:一种是TextSymbol 用于文字标注;另一种是3D Chart符号,用于显示饼图等三维对象,如需详细了解请查找帮助文档。

1. MarkerSymbol对象

MarkerSymbol 用于修饰点对象的符号,它拥有十三个子类如表2所示,其中不同的子类可以产生不同类型的点符号。所有的MarkerSymbol类都实现了 IMarkerSymbol接口,这个接口定义了标记符号的公共方法和属性,如角度、颜色、大小和X,Y偏移量等

表二

点符号类型 描述
ArrowMarkerSymbol 预定义的肩头符号
BarChartSymbol 柱状图符号
CharacterMarker3DSymbol 三维字体符号
CharacterMarkerSymbol 字体符号
Marker3DSymbol 3D 符号
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对象大小,设置为5
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对象是用于修饰线型几何对象的符号,它拥有八个子类如表3所示,其中不同的子类可以产生不同类型的线符号,所有的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 = pRgbColor as 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数据 RGBSymbol
SimpleFillSymbol 简单填充符号
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的函数:

///<summary>

///生成文本符号

///</summary>

///<param name="pTxtSymbol">文本符号</param>

///<param name="sFontName">字体名称</param>

///<param name="iFont">字体大小</param>

///<param name="iColor">字体颜色</param>

public static void MakeTextSymbol(ref ITextSymbol pTxtSymbol, string sFontName, int iFont, int iColor)

{

try
{
pTxtSymbol.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。

符号化Symbol(符号)体系的更多相关文章

  1. 安装与配置windbg的symbol(符号)

    http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx  windows symbols下载地址 本篇是新手自己写的一点心得.建议 ...

  2. Arcgis Engine 添加一个Symbol符号样式步骤

    public static void DrawPictureMarkerSymbol(IGlobe globe, String layerName) { //添加一个图层 ESRI.ArcGIS.Ca ...

  3. Day07 - Ruby比一比:Symbol符号与String字串

    前情提要: 第六天我们透过Ruby代码练习public,protected和privatemethod时,发现冒号在前面的参数,:mydraft,:myspace,这些就是符号Symbol.在今天,我 ...

  4. 想写一个 Sketch 插件 结果 一查不可收拾 ~~ 涉及到 Symbol 符号/ Layer 图层 / Overrides 可替换变量 等等

    var sketch = context.api() var document = sketch.selectedDocument; var selection = document.selected ...

  5. ArcEngine 9.3 学习笔记(六):图层符号化(COlorRamp,MarkerSymbol,LineSymbol,FillSymbol,TextSymbol,3DChartSymbol,使用ServerStyle符号库,FeatureRender,RasterRender)

    第四章 图层符号化 AE9.3 提供了SymbologyControl控件,用于显示ARCGIS符号库中的符号. 组件库中的组件对象分为Color(颜色),Symbol(符号),Render(渲染)三 ...

  6. 关于符号Symbol第一篇

    Symbol类的一个实例代表一个符号.对于语法树来说,并不是每个节点都有一个符号实例.下面列举了哪些语法树节点具有符号的引用,如下表格: 其中JCNewClass.JCAssignOp.JCUnary ...

  7. 【读书笔记】【深入理解ES6】#6-Symbol和Symbol属性

    在ES5及早期版本中,JS语言包含5中原始类型: 字符串型 数字型 布尔型 null undefined ES6引入了第六种原始类型: Symbol 创建Symbol let firstName = ...

  8. ES6 原始类型 Symbol

    1. 创建Symbol (没有字面格式) Symbol是原始值,没有构造函数 Symbol接受一个可选参数,可以让你添加一段文本描述即将创建的Symbol,这段描述不可用于属性访问,以便于代码阅读和调 ...

  9. 算法学习笔记之——priority queue、heapsort、symbol table、binary search trees

    Priority Queue 类似一个Queue,但是按照priority的大小顺序来出队 一般存在两种方式来实施 排序法(ordered),在元素入队时即进行排序,这样插入操作为O(N),但出队为O ...

随机推荐

  1. Java中线程池的学习

    线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程 ...

  2. 关于static静态

    静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用.静态属性不允许对象使用->操作符调用. class Car { private static $speed = ...

  3. 图片实时预览JSP加js

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 1042. Shuffling Machine (20) - sstream实现数字转字符串

    题目例如以下: Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffli ...

  5. Android BLE开发之Android手机与BLE终端通信

    本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 近期穿戴设备发展得非常火.把相关技术也带旺了,当中一项是BLE(Bluetooth Low Energy).B ...

  6. Visual Studio 2010 中的 Web 开发

    概述 Microsoft Visual Studio 2010 为 ASP.NET Web 应用程序的开发提供非常多新的功能.这些新功能旨在帮助开发者高速方便地创建和部署质量高且功能全的 Web 应用 ...

  7. [Javascript] lodash: memoize() to improve the profermence

    Link: https://lodash.com/docs#memoize Example: .service('UserPresenter', function(UserConstants){ va ...

  8. [Regex Expression] Use Shorthand to Find Common Sets of Characters

    In this lesson we'll learn shorthands for common character classes as well as their negated forms. v ...

  9. HDU--1584--蜘蛛牌--深搜版本号

    蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  10. 设置程序图标-初识IOS

    相信我们都很喜欢做出的程序弄成自己的图标. 在创建项目过后显示的页面中,选择App lcons and launch images,  点击App lcons Source 之后的方向符号,把里面的东 ...