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. Unit Test相关问题汇总

    1.测试私有方法(1)使用反射 public class Calcutate { public int test() { return add(2, 3); } private int add(int ...

  2. Jtree (节点的渲染+资源管理器)

    我们的还是自定义的Jtree的类: package jtree.customNode; import java.io.File; import javax.swing.JTree; import ja ...

  3. 栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]

    原文地址:http://www.cnblogs.com/xy8.cn/articles/1227228.html 一.栈和托管堆      通用类型系统(CTS)区分两种基本类型:值类型和引用类型.它 ...

  4. 打开首页老是加载themes.googleusercontent.com_Wopus问答

    打开首页老是加载themes.googleusercontent.com_Wopus问答 打开首页老是加载themes.googleusercontent.com

  5. Android_HTML解析器_jsoup

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. Jsou ...

  6. HR系统+人脸识别

    近期一直在写一套HR系统,这套HR系统和人脸识别相结合.全然杜绝取代刷卡的情况产生.系统的灵活性比較强,开发简洁高速. 例如以下是一些功能上的截图 考勤模块仅仅是列举当中一个请假申请的功能做为展示   ...

  7. poj 2041 Unreliable Message 字符串处理

    水的问题.直接附着到代码. //poj 2041 //sep9 #include <iostream> using namespace std; char mode[128]; char ...

  8. storm启动流程

    email:chenguibin2004@126.com storm: 是一个分布式的实时流式计算框架,具有低延迟.高可用.分布式.可扩展.数据不丢失的特点, storm包含四个核心组件: Nimbu ...

  9. 重写OnPaint事件对窗体重绘 实例1

    public class WindowOne:Form { public WindowOne() { InitializeCompnent(); } public void InitializeCom ...

  10. Android -------- 使手机状态栏背景颜色和activity的一致

    Activity类中: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta ...