符号化Symbol(符号)体系
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(符号)体系的更多相关文章
- 安装与配置windbg的symbol(符号)
http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx windows symbols下载地址 本篇是新手自己写的一点心得.建议 ...
- Arcgis Engine 添加一个Symbol符号样式步骤
public static void DrawPictureMarkerSymbol(IGlobe globe, String layerName) { //添加一个图层 ESRI.ArcGIS.Ca ...
- Day07 - Ruby比一比:Symbol符号与String字串
前情提要: 第六天我们透过Ruby代码练习public,protected和privatemethod时,发现冒号在前面的参数,:mydraft,:myspace,这些就是符号Symbol.在今天,我 ...
- 想写一个 Sketch 插件 结果 一查不可收拾 ~~ 涉及到 Symbol 符号/ Layer 图层 / Overrides 可替换变量 等等
var sketch = context.api() var document = sketch.selectedDocument; var selection = document.selected ...
- ArcEngine 9.3 学习笔记(六):图层符号化(COlorRamp,MarkerSymbol,LineSymbol,FillSymbol,TextSymbol,3DChartSymbol,使用ServerStyle符号库,FeatureRender,RasterRender)
第四章 图层符号化 AE9.3 提供了SymbologyControl控件,用于显示ARCGIS符号库中的符号. 组件库中的组件对象分为Color(颜色),Symbol(符号),Render(渲染)三 ...
- 关于符号Symbol第一篇
Symbol类的一个实例代表一个符号.对于语法树来说,并不是每个节点都有一个符号实例.下面列举了哪些语法树节点具有符号的引用,如下表格: 其中JCNewClass.JCAssignOp.JCUnary ...
- 【读书笔记】【深入理解ES6】#6-Symbol和Symbol属性
在ES5及早期版本中,JS语言包含5中原始类型: 字符串型 数字型 布尔型 null undefined ES6引入了第六种原始类型: Symbol 创建Symbol let firstName = ...
- ES6 原始类型 Symbol
1. 创建Symbol (没有字面格式) Symbol是原始值,没有构造函数 Symbol接受一个可选参数,可以让你添加一段文本描述即将创建的Symbol,这段描述不可用于属性访问,以便于代码阅读和调 ...
- 算法学习笔记之——priority queue、heapsort、symbol table、binary search trees
Priority Queue 类似一个Queue,但是按照priority的大小顺序来出队 一般存在两种方式来实施 排序法(ordered),在元素入队时即进行排序,这样插入操作为O(N),但出队为O ...
随机推荐
- MySQL所有函数及操作符
参考:Function and Operator Reference Name Description ABS() Return the absolute value ACOS() Return th ...
- python 操作 office
首先介绍下office win32 com接口,这个是MS为自动化提供的操作接口,比如我们打开一个WORD文档,就可以在里面编辑VB脚本,实现我们自己的效果.对于这种一本万利的买卖,Python怎么能 ...
- 针对portmap 的DDOS攻击
iptables -I INPUT -p tcp --dport 111 -j DROP iptables -I INPUT -s 10.171.254.221 -p tcp --dport 111 ...
- BaseAdapter自定义适配器——思路详解
BaseAdapter自定义适配器——思路详解 引言: Adapter用来把数据绑定到扩展了AdapterView类的视图组.系统自带了几个原生的Adapter. 由于原生的Adapter视图功能太少 ...
- Python闭包与函数对象
1. Python闭包是什么 在python中有函数闭包的概念,这个概念是什么意思呢,查看Wikipedia的说明如下: “ In programming languages, closures (a ...
- c语言指针与结构体
#include <stdio.h> #include <stdlib.h> struct mydata { int num; ]; }; void main1() { /*i ...
- myeclipse实现Servlet实例(3) 通过继承HttpServlet接口实现
(1) 在软件公司 90%都是通过该方法开发. //在HttpServlet 中,设计者对post 提交和 get提交分别处理 //回忆 <form action="提交给?&qu ...
- CGI、FastCGI和php-fpm的区别
参考网上的描述,将网上的描述内容,整理进来: 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者.web server(比如说nginx)只是 ...
- CentOS7 定时检测进程占用内存大小,执行重启进程操作(xjl456852原创)
在使用CentOS时,个别程序的进程会一直增大,直到宕机.但是这种程序本身有没有更好的版本使用(比如ngrok免费就这样,付费的就没这个问题),所以想写一个脚本定时检测一下这个程序的情况,决定是否需要 ...
- android面试题之七
三十六.请解释下在单线程模型中Message.Handler.Message Queue.Looper之间的关系. 简单的说,Handler获取当前线程中的looper对象,looper用来从存放Me ...