How dynamic display works


This topic gives an overview of how dynamic display works and the interfaces it contains.

About dynamic display

A geographic information system (GIS) often requires displaying information with frequent refresh rates to clearly convey geographic information. This information must be rapidly updated without interruption, including animating moving objects, updating the location, orientation, size, status, and attribute information.
The dynamic display strengthens ESRI's comprehensive display capabilities of dynamic maps in ArcObjects, allowing smooth pan, zoom, rotation, navigation and display of dynamic graphics through the use of OpenGL display rendering and fast refresh rate technology. The dynamic display allows the display performance required of real-time applications while using the existing tools and layer functionality of ArcObjects.

Background

Dynamic display is an enhancement to the core capabilities of the map rendering engine to support very active display environments. These new capabilities incluge numbers of display objects at subsecond refresh rates, and manipulation of the entire display to support smooth panning, zooming, and rotation. This extends the reach of the ArcGIS platform into domains that demand dynamic displays, often on constrained computing platforms (platforms with limited processing and memory). See the following illustration:

Concepts

This section discusses some of the dynamic diplay concepts specific to different types of GIS layers and is intended for those who may not have a foundational understanding of GIS mapping and visualization.
The ArcGIS display subsystem manages displaying and refreshing maps. Unsynchronized display refresh and intensive map rendering can lead to high central processing unit (CPU) usage. The CPU overloading can delay or even prevent display refresh and user interaction with the display. See the following illustration:

The dynamic display technology moves intensive graphics rendering from the CPU to the graphics hardware and significantly improves performance. Dynamic display provides a mechanism for synchronized refreshes that allows for many moving objects with high refresh rates. See the following illustration:

Architecture

The following are the main ArcObjects interfaces used by the dynamic display:
IDynamicMap—The IDynamicMap interface is used for controlling the dynamic display. The interface is used for enabling and disabling the dynamic display and controlling global properties of the dynamic map. There is a one-to-one correspondence between maps and dynamic maps.
IDynamicLayer—In conjunction with the ILayer and IGeoDataset interfaces, IDynamicLayer provides the mechanism to implement custom layers that draw dynamic content in dynamic mode.
IDynamicScreenDisplay—Allows you to enable or disable the dynamic display.
IDynamicGlyph—A dynamic glyph handles the resource needed to be rendered by the dynamic display. This may be a resource for a line, marker, or text. Dynamic glyphs are managed by the dynamic glyph factory.
IDynamicGlyphFactory—The dynamic glyph factory is used to manage dynamic glyphs. Use IDynamicGlyphFactory to get, create, and delete dynamic glyphs. This means that you can use standard ArcObjects symbols, such as character marker symbols, text symbols, image symbols, and so on or use external resources, such as icons and bitmaps. In addition, dynamic glyphs can be created from dynamic glyph groups, which are a mosaic image of several glyphs where each glyph is mapped to a specific location in the mosaic. Using dynamic glyphs from a glyphs group results in better drawing performance since there is only one OpenGL texture created for an entire group. The dynamic display includes an internal default glyphs group; however, you can use your own glyphs group, load them and unload them using the dynamic glyph factory.
IDynamicGlyphFactory2—The dynamic glyph factory can also be used to manage dynamic glyphs. Use IDynamicGlyphFactory2 to get, create, and delete dynamic glyphs as in IDynamicGlyphFactory. IDynamicGlyphFactory2 also allows you to create a Dynamic Glyph from a Bitmap, and get and set the size of a created glyph.
IDynamicSymbolProperties—IDynamicSymbolProperties allow you to set various properties of the active symbol, such as color, scale, heading, and glyph. The idea behind the dynamic display is that at any time it has an active symbol for points, lines, and text. Use IDynamicSymbolProperties to control this symbol before drawing it to the map.
IDynamicSymbolProperties2—IDynamicSymbolProperties2 allows you to set various properties of the active symbol, such as color, scale, heading, and glyph as in IDynamicSymbolProperties. IDynamicSymbolProperties2 allows you to also get and set the margins of text boxes, get and set the offset, change the horizontal and vertical alignment of text boxes, change the fill symbol and line symbol, control the character, line and word spacing, display right to left text, and use reference scales.
IDynamicDisplay—IDynamicDisplay provides the mechanism to draw different geographical geometries on the map, in addition to providing access to the dynamic glyph factory. To draw geographical geometries on the map, you need to use the dynamic display in conjunction with the dynamic symbol properties. Use the dynamic symbol properties to set the dynamic symbol, then use dynamic display to draw the shape.
IDynamicDrawScreen—IDynamicDrawScreen is used to draw geometries on the map using screen coordinates. The dynamic draw screen is used in the same way that dynamic display is used. You should first set the symbol's properties using dynamic symbol properties, then use IDynamicDrawScreen to draw the geometry.
IDynamicCompoundMarker—Use IDynamicCompoundMarker to draw marker symbols with labels (or attributes) surrounding it. IDynamicCompoundMarker allows you to draw both the marker symbol and its attributes at the same call. It allows you to draw from one to 10 attributes around the marker symbol. You can control the offset from the marker to the text.
IDynamicCompoundMarker2—Use IDynamicCompoundMarker2 to draw marker symbols with labels (or attributes) surrounding it as with IDynamicCompoundMarker. IDynamicCompoundMarker2 allows you to also draw array markers, get the text spacing, set the text spacing or auto-adjust the text spacing.
IDynamicCacheLayerManager—Use IDynamicCacheLayerManager on non-dynamic layers to pre-generate cache, invalidate regions in existing caches, to allow users to update the underlying cache without having to rebuild a new cache, and control the drawing characteristics of the cache. IDynamicCacheLayerManager allows you to connect to a given layer in an existing cache, delete a cache structure from disk, change the detail threshold level, get and set the compression format for the tiles that are saved to the cache, generate a full cache for a given layer, invalidate certain areas of the cache and checks if a layer has a valid cache structure.