Arcgis中可以显示在视图上的图形分为两种,一种是基于Layer的要素(Feature)等储存在数据库中的数据源,另外一种就是元素(element)。元素是一个地图中除去要素数据外的部分,即在一幅地图中,除了保存在数据库中的地理数据外,其余的对象全部是元素。
Element是一个非常庞大复杂的对象集合,它主要分为两大部分:图形元素(Graphic Element)和框架元素(Frame Element)。
图形元素包括GroupElement、MarkerElement、LineElement、TextElement, DataGraphElement、PictureElement和FillShapeElement等对象,它们都是作为图形的形式而存在,在视图上是可见的。框架元素包括FrameElement、MapFrame、MapSurroundFrame、OleFrame和TableFrame等对象,它们都是作为不可见的容器而存在的。
在Map或PageLayout对象中可以通过IGraphicsContainer接口来管理这些元素,使用这个接口定义的方法可以添加、删除和更新单个的存在Map或PageLayout上的元素。使用GroupElement对象还可以将多个元素编组作为单个实体来给用户使用。
IElement是所有图形元素和框架元素类都实现的接口。这个接口可以让程序员确定元素的Geometry属性,它也定义了方法让用户查找元素和绘制元素。Element只是一个抽象类,在实际编程中必须明确指定使用元素的类型。另外还必须提醒读者的是IElement和ILineElement、ITextElement等并不是父子关系,后者中没有Geometry属性。
所有的图形元素(Graphics Element)类都实现了IGraphicsElement接口,这个接口定义了一个SpatialReference属性用于设置这些图形元素的空间参考。空间参考是一个图形能够在一定范围内正确显示所必须设置的属性。
除此之外,图形元素还实现ITransform2D接口,这个接口定义的方法和属性可以让图形元素移动、旋转和缩放。
1、 LineElement和MarkerElement对象
要将图形元素显示在视图上,一般的步骤是这样的:
a、 产生一个新的元素对象;
b、 确定元素显示时使用的Symbol(符号)和Geometry(几何形体对象);
c、 使用IGraphicsContainer::AddElement把元素添加到视图中去;
d、 刷新视图,让添加的元素可以显示出来。
2、TextElement对象
地图的标注有两种形式:一种是保存在地理数据库中以标注类的形式存在,另一种是使用文字元素。
3、DataGraphElement对象
DataGraph是一种基于地理数据的图形,在ArcMap中载入地理数据后,点击“Tools”——“Graphs”——“Create”,系统依据数值数据产生一张统计表。
IDataGraphElement接口仅仅被DataGraphElement对象所实现,它定义了两个属性,IDataGraphElement::DataGraph用于设定元素的数据图表对象,而IDataGraphElement::Map则需要被设置为图表的父地图对象。
4、GroupElement对象
GroupElement对象可以将多个元素编为一组当一个实体来使用。如果用户需要对多个要素进行相同的操作,如同时移动多个要素的时候,可以将它们编为一个组。GroupElement类默认实现IGroupElement接口,它定义了操作GroupElement的方法和属性。
5、FillShapeElement对象
FillshapeElement是一个抽象类,它的子类有CircleElement、EllipseElement、PolygonElement和RectangleElement。这些对象的共同特点是它们的Geometry属性都是一个二维的封闭图形,在视图上分别表现为圆形要素、椭圆要素、多边形要素和矩形要素。
6、PictureElement对象
PictureElement是一个抽象类,它的两个子类BmpPictureElement和EmfPictureElement,它们分别用于往版式视图中插入bmp文件和emf文件。IPictureElement是两个子类都实现的接口,使用它可以用于操作一个图片元素。