GIS经常需要以高频率显示信息并能够清晰的传递地理信息。包括:以动画的方式移动物体,更新位置方位,大小,状态以及属性信息等,这些信息需要迅速更新。
一。ArcGIS 显示子系统管理着要素的显示和刷新,异步刷新显示和大量数据的渲染使得CPU的利用率增大,这可能导致显示延迟等问题.我们看一下ArcGIS 显示子系统的结构图,从这张图我们更能清楚的看到ArcGIS的显示原理:
动态显示技术将渲染大量的数据从CPU端移动到了显卡上,利用了显卡的性能,这明显提高了显示性能.动态显示技术提供同步显示机制使得大量的动态数据以及高频率刷新的操作可以在瞬间完成,下面的图详细的揭示了动态显示技术的逻辑:
二 动态图层介绍
动态图层是一个自定义图层,因此应该至少继承ILayer,IDynamicLayer和IGeoDataset三个接口。经过查找帮助文档,ESRI提供BaseDynamicLayer
抽象类,该类实现了上述三个接口,因此我们只需要在实现动态图层的时候继承该类就行。参考官方的文档,我们可以看到BaseDynamicLayer这个抽象类实现了ILayer,IdynamicLayer,ILayerExtensions,IGeoDataset几个接口。
IDynamicMap:控制动态图层的显示。该接口提供Enabled属性来控制动态显示是否可用,这个接口和我们地图是一一对应的.但我们要使用动态图层的时候,必须用该接口开启动态显示功能,也就是Enable属性设置为true。
IDynamicLayer:该接口ILayer和IGeoDataset协同完成动态显示,也就是符号的绘制等,此接口提供了自定义图层动态显示内容的机制。
IDynamicScreenDisplay:控制是否启用动态显示。
IDynamicGlyph:处理动态显示渲染所需的资源。这些资源可以是线,点,文本。
IDynamicGlyphFactory:该接口用来管理动态符号。用此接口可以创建,删除动态符号,这些符号就是我们上面所提到的IDynamicGlyph的内容
IDynamicSymbolProperties:该接口用来管理显示符号的大小,比例尺,颜色等. 。在绘制符号前使用该接口控制符号的属性。
IDynamicDisplay:该接口提供了在地图上描绘几何图形的绘图机制,并且提供了访问动态符号工厂对象。在地图上绘制不同的几何图形,该接口和IDynamicSymbolProperties接口协同,使用IDynamicSymbolProperties来设置的动态符号,然后使用IDynamicDisplay绘制形状。IDynamicDisplay接口其实是下面几何绘图回调函数的参数IDynamicLayer.DrawDynamicLayer; IDynamicMapEvents.BeforeDynamicDraw; IDynamicMapEvents.AfterDynamicDraw.