ArcGIS Engine中的Symbols详解

转自原文ArcGIS Engine中的Symbols详解

本文由本人翻译ESRI官方帮助文档。尊重劳动成果,转载请注明来源。

Symbols

ArcObjects用了三种类型的Symbol(符号样式)来绘制图形特征:marker symbols(标记符号),line symbols(线符号),和fill symbols(填充符号)。这些样式同样可以用来绘制elements(元素)图形,比如在地图或制版视图上的图表边线和指北针箭头。第四个样式text symbol(文字符号)是用来绘制标注和其他文本要素的。第五个样式3D chart symbol(图表样式)是用来绘制图表的。在图形元素设置的实例中,一种样式被作为属性赋给所有的元素。图层然而由一个包含一个或多个样式的结合进行绘制。样式(符号)的大小总是指定到一些点上(比如线的宽度),但是几何形状(如线的路径)的大小是由它们本身来决定绘制的。多数情况下,当对象被创建时就已经有了一个默认的样式,因此省去了创建新样式赋给每一个对象的过程,你可以修改一个已经存在的样式。另外一种方式获取样式的方式是用样式文件。ArcObject使用样式文件,可分发数据库存储和访问样式和颜色。有许标准样式,提供了上千种预定义的可用的样式,在安装路径下。利用StyleGallery和StyleGalleryItem两个类,你可以弥补和修改现存的符号样式,这可以使得比重新绘制和创建更高效。你同样可以使用ArcMap的标准样式编辑器,它可以在程序里面使用SymbolEditor类打开。下面的小节将描述怎样利用第一个规则创建一个复杂的符号样式。ISymbol接口提供了对所有符号样式的高等级功能,它允许你使用设置直接绘制一个符号样式。

更多的附加信息,参见Creating custom symbols

Symbol level drawing

你可以使用符号等级绘图功能改变图层对象的绘制顺序。在使用符号等级绘制时,你可以控制到是元素按照最基础的一个个样式顺序绘制。这将意味着元素不一定需要以与图层出现在ArcMap表的内容中相同的顺序绘制。使用符号等级绘制,你可以控制一个含控制器绘制元素符号绘制元素的绘制。更多的是,当使用多个样式符号时,你可以控制单个符号层的绘制顺序。

符号等级绘制在地图套管中最有用。因为它能被用来创建天桥和和地下通道,当线对象有穿过状态时,它是一个非常好的方式展现连接状态。符号等级绘制能够用来更好地表达其他更多的影响和状况。

Join and merge

下面的图形展示了一个合并样式的效果,它使得对象拥有一致的样式相互连接起来。合并使得有不同样式的对象连接显示。这些变化在使用符号等级对象和接口后场景显示在后台自动实现效果。你可以使用,相对于图层的ISymbolLevels.UseSymbolLevels或相对整个地图的IMp.UserSymbolLevels接口,来切换符号等级绘制的开关。

使用了地图等级符号绘制的两个示例:

更多信息,参见:How to use symbol level drawing


Marker symbols

下面的图表展示的是标记符号样式的类结构:

     
 IMarkerSymbol接口提供了标记样式共同拥有的一些属性:Angle,Color,Size,XOffset,和YOffset。IMarkerSymbol是所有标记样式的原始接口。所有的其他标记接口都继承IMarkerSymbol的属性和方法。这个接口有5个可读可写属性,它们允许你在任何标记样式类中获取和设置基础的属性。Color属性能够被任何IColor类型的对象设置,它的具体影响基于你使用的类型。
       标记样式类的颜色属性设置属性表如下:

     
 Size属性设置符号整体的高度,包含SimpleMarkerSymbol,CharacterMarkerSymbol,PictureMarkerSymbol和MultiLayerMarkerSymbol类型。对于ArrowMarkerSymbol类型,Size表示长度。基本单位是点。除了PictureMarkerSymbol的默认大小是12外,其他的默认的大小都是8。Angle属性设置角度,单位是度。符号是从水平方向开始向逆时针方向进行旋转。它的默认值是0。XOffset和YOffset属性定义样式绘制时离实际对象的偏移距离。两个属性都是在打印的点中,默认值是0,值可为正和负。负数表示相对于对象向下偏移和向右偏移,当然正数表示向上和向左偏移。Size、XOffset和YOffset在打印机点上1/71英寸大小。
       下面的图展示了一些标记样式:

       标记符号的旋转指定到数学表达中,下图展示了标记符号的旋转:

       下图展示了一些简单的标记样式:
       
       下图展示了一些箭头标记样式:
       
       下图展示了一些图表标记样式:
       
       下图展示了一些图片标记样式:
       
       下图展示了一些多层标记样式:
       
       更多信息,参见:

How
to make a character marker symbol

    How
to make a picture marker symbol


Line symbols

线符号样式的的类视图如下图所示:

LineSymbol接口拥有两个所有线样式共同拥有的属性:Color和Width。ILineSymbol是线样式共同的原始接口,将继承ILineSymbol所有的属性和方法。接口有两个可读可写属性,在所有的线样式类中允许对其获取和设置。Color属性控制基础线(它不是影响任何存在的装饰线条,请参阅ILineProperties接口)的颜色并且可有任何IColor类型的对象设置。颜色线条除了SimpleLineSymbol默认被设置成中灰色,其他的都默认是黑色。Width属性设置的是所有的线宽度,单位是点。对于HashLineSymbol,Width属性设置的是所有哈西的长度。除了MarkerLineSymbol的默认宽度为8外,所有的线符号的默认宽度都是1。

线符号表示了一个对象或图形绘制的定义。Straight lines、polylines、curves和outlines都能用线符号进行绘制。下图展示了一些线符号:

一个线符号被打印出来是1/72英寸。下图展示了一个线符号宽度的样例:

更多信息,参见:How
to make a cartographic line symbol

Fill symbols

下图展示了填充符号的类结构视图:

       下图展示一些填充符号样式:

       IFillSymbol接口呈现了两个属性,Color和Outline,他们是所有填充符号类型都拥有的属性。
在ArcOjbects中,IFillSymbol被所有的更专业的填充样式类型所继承,有两个可读可写属性。Color属性控制这基本的填充,在下表所示,可以使用IColor类型进行设置。

       Outline属性在ILineSymbol中的设置,被绘制到填充的外边框。不同的填充符号表达了一个多边形的面积和边框如何绘制。默认的外边框线是一条SimpleLineSymbol实线,你也可以使用任何类型的线样式作为外边框线。外边框线的中线在对象的边沿上,所以,一个宽度为5的外框线将重叠填充符号可见的数量。

       更多信息,参见:

How
to make a line fill symbol

    How
to make a gradient fill symbol

Text symbols

下图展示了文字符号样式的类视图:

     
 TextSymbol类提供了一种用来符号化图形元素中的文字、注记、标注等等。文字符号样式不仅仅只是定义了字体。主要接口ITextSymbol、ISimpleTextSymbol和IFormattedTextSymbol控制这文字怎样展现和单个字符的展现方式。TextSymbol支持扩展的ASCII码。
       更多信息,参见:

Creating
other kinds of custom symbols

    How
to make a line callout


Chart symbols

3DChartSymbol是一个抽象的三种类型的图表符号。它代表了一种标记符号,可以使用ChartRenderer的多个属性来符号化地理数据。虽然它被普遍应用于ChartRenderer,如果所有属性都设置适当,你也可以使用符号作为标记符号符号化单个人对象或元素。
在图表符号中IChartSymbol被用来计算柱子和饼图片的大小。maximum属性值能被图表用来量算其他属性的值。在创建3DChartSymbol的时候该值总是被设置。当创建一个CharRenderer时,确保你的特征类已经统计完成,你可以统计统计功能设置MaxValue属性到maxmun属性值开始渲染。例如,加入有两个字段用一个图表来渲染,一个包含的值是从0至5,另一个包含的值是从0至10,设置最大值10。
     
 Value属性包含一组值,指示所有的柱状的的高度和宽度或饼的份额。假如你在CharRenderer中使用ChartSymbol,你不需要设置这个属性。这个值数组将在CharRenderer绘图的过程中,FeatureClass类使用从指定的属性字段的属性值,从每个功能创建一个稍微不同的符号进行重复填充。绘制完成后所有的值被设置成空或0。单独使用ChartRenderer时,在柱状和饼子图中设置你想要使用的数组值。
       更多信息,参见:
       Creating
custom symbols

Creating
other kinds of custom symbols

Sample:
Triangle graphic element

原文地址:https://www.cnblogs.com/arxive/p/8145595.html

时间: 2024-08-24 07:54:48

ArcGIS Engine中的Symbols详解的相关文章

ArcGIS Engine中的Symbols详解(转)

本文来源:http://blog.csdn.net/mengdong_zy/article/details/8980842 原文如下: Symbols Symbol level drawing Join and merge Marker symbols Line symbols Fill symbols Text symbols Chart symbols 本文由本人翻译ESRI官方帮助文档.尊重劳动成果,转载请注明来源. Symbols ArcObjects用了三种类型的Symbol(符号样式

ArcGIS Engine中的设计模式——工厂模式

在使用AE打开或者加载数据的第一步就是 通过工作空间工厂(IWorkspaceFactory)获取工作空间(IWorkspace),然后从工作空间中获取数据集(DataSet).要素类(FeatureClass).表(Table)等数据. 对于不同类型的空间数据库,对应着不同的工作空间类,这些类都继承了接口IWorkspaceFactory,然后通过IWorkspaceFactory接口的不同的方法如Create.Open.OpenFromFile产生不用类型的工作空间(IWorkspace).

ArcGIS engine中Display类库 (局部刷新)

转自原文 ArcGIS engine中Display类库 (局部刷新) Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这个类库还包含了表示符号和颜色的对象,用于控制在显示(display)中绘制时实体的属性.这个类库也包含了用户与显示(display)交互时的可视化反馈的对象.完成这些功能的对象被归并到一组类库子系统中. 这些类库子系统是: n         Display n         Dynamic Displ

ArcGIS engine中Display类库——Display

转自原文  ArcGIS engine中Display类库——Display Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这个类库还包含了表示符号和颜色的对象,用于控制在显示(display)中绘制时实体的属性.这个类库也包含了用户与显示(display)交互时的可视化反馈的对象.完成这些功能的对象被归并到一组类库子系统中. 这些类库子系统是: n         Display n         Dynamic Di

Ossim 中漏洞扫描详解

Ossim 中漏洞扫描详解 Openvas是一套开源漏洞扫描系统,如果手动搭建需要复杂的过程,花费不少人力和时间成本,此文主要针对OSSIM平台下如何以图形化方式操作漏洞扫描的过程. 准备工作:首先确保没有运行的扫描进程和任务 扫描漏洞同时升级漏洞库会导致升级失败. 第一步:同步插件 #openvas-nvt-sync 同步数万个插件时间比较长,可以去喝杯咖啡啦,或者了解一下插件的组成. 表1 Openvas主要脚本分类及分布情况 规则名称 数量 备注 IIS_frontpage_DOS_2.n

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

ArcGIS Engine中正确释放打开资源

转自原文 ArcGIS Engine中正确释放打开资源 AE中对MDB,SDE等数据库操作时,打开后却往往不能及时释放资源,导致别人操作提示对象被锁定. 很多帖子说了很多原理,看的也烦且不实用,比如一句话概括的用System.Runtime.InteropServices.Marshal.ReleaseComObject(object o)释放,说的很不清楚,很多人试过觉的释放不掉. 事实上,的确是用该方法,但释放的技巧在于,新建几个AE对象就要逐步释放几个,例如: IWorkspaceFact

转:LoadRunner中参数化技术详解

LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入.这时,在LoadRunner中就可以进行参数化设置,以使用多个不同的值提交应用请求. [参数化]使用指定数据源中的值来替换脚本录制生成的语句中的参数. [好处] l  减少脚本的大小 l  提供使用不同的值执行脚本的能力,更加真实的模拟现实应用. [参

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba