Supported with:
- Engine with 3D
- ArcView with 3D Analyst
- ArcEditor with 3D Analyst
- ArcInfo with 3D Analyst
- Server with 3D
Library dependencies: System, SystemUI, Geometry, Display, Server, Output, Geodatabase, GISClient, ArcWeb, DataSourcesFile, DataSourcesGDB, DataSourcesOleDB, DataSourcesRaster, DataSourcesNetCDF, GeoDatabaseDistributed, GeoDatabaseExtensions, Carto, NetworkAnalysis, Location, GeoAnalyst, Animation, Maplex, Geoprocessing, NetworkAnalyst, Schematic, SpatialAnalyst, 3DAnalystAdditional library information: Contents,
Object Model Diagram
The GlobeCore library is the major library for working with the ArcGlobe application in ArcGIS 3D Analyst for three-dimensional (3D) visualization of multiresolution global data. The GlobeCore library contains objects for working with two-dimensional (2D) and 3D data displayed on the surface of a globe, similar to the Carto library containing objects for working with 2D maps.
The objects that implement this functionality are grouped into a number of library subsystems. These library subsystems are:Globe
The
Globe object is one of the main objects of the GlobeCore library since it's the container for data layers, similar to the
Map object. The
GlobeDisplay object, analogous to the
SceneGraph coclass of the 3DAnalyst Library, is a container for data caching and for events that occur in the globe. These events include those that occur when there is a change in the active view to events that trigger a notify data caching state. The GlobeDisplay object has a central role in that it also manages, specifies, and controls different optimization schemes of the application.
The GlobeCore library is also host for the
GlobeCamera object that specifies the perspective of a 3D globe display rendering to define the positioning of the globe relative to the observer. In ArcGlobe, the 3D display window is represented by the GlobeViewer object. It is similar in its function and properties to the SceneViewer object in the 3DAnalyst library.
The
GlobeLayerProperties class is one of the more important globe-specific layer extension classes that specifies, among other things, layer drawing priority on the surface of the globe. It also controls cache data removal behavior, cache data compression options and quality, image resampling modes, feature level of detail, and feature data drawing mode (rasterized versus vector), as well as suggests symbology scaling factor, estimates visibility distance thresholds, and determines data caching mode (on-demand versus full data cache). The
GlobeHeightProperties class provides access to members that manipulate the height properties of a globe layer including those specific to feature layers (as vectors) such as extrusion, Z factor applied to elevation layers, and offset that can be applied to any layer. The
GlobeAdvancedOptions object is the class that allows you to set advanced globe properties such as whether to use disk cache, control near and far clipping planes, control application level of detail that gets applied only at draw time, the target frame rate for automatic control of display level of detail, and various attributes stored in the registry.
In addition, as with the
Scene object, the Globe coclass contains
AnimatonTrack object(s) to make real time animation or video output by manipulating globe display and layer properties. There can be zero or more AnimationTrack objects in the Globe, which further contain one or more GlobeKeyframe objects. The AnimationTrack contains an AnimationType object. Through these objects, you can control the behavior and type of animations.
The Globe coclass is detailed in the following diagram.
Globe functionality
There are similarities between the Scene and Globe coclasses. The Globe object has properties that operate on all layers within the globe—spatial reference, scale, and so on—along with methods that manipulate the globe's layers. One major difference between the Globe object and Scene (and Map) object is that as a prerequisite, any layer to be used in the application must have a spatial reference defined to it.
There are many types of layers that can be added to the globe. Different data sources often have an associated layer responsible for displaying the data on the globe; vector features are handled by the
FeatureLayer object, raster data (both image and surface data) by the
RasterLayer, and so on. Layers can, if required, handle all the drawing operations for their associated data, but it is more common for layers to have an associated renderer object. The properties of the renderer object control how the data is displayed in the globe. Renderers commonly use symbols from the
Display library for the actual drawing, the renderer simply matches a particular symbol with the properties of the entity that is to be drawn.
Similar to the
Carto library, the GlobeCore library also contains support for annotation and globe tips. The Globe coclass is a container for display and manipulation of data on the surface of the globe. The Globe object contains one major interface,
IGlobe, along with many other important inherited interfaces required for manipulation and access of data, such as
IBasicMap,
IBasicScene,
IScene,
ISceneBookmarks, and
IAnimationTracks.
GlobeDisplay
Data tiling
ArcGlobe is an application that has highly optimized data tiling, level of detail management, and data caching architecture. Managed by the GlobeDisplay object and common to all datasets, there is a division of data in quadrilateral areas of the globe called tiles. At the lowest level, the entire globe is divided into six major areas called face tiles. These consist of four near the equator and two at the poles as shown in the following illustration.
Part of the application's notion of level of detail stems from the fact that these tiles are recursively subdivisible. At any particular level of detail, the area covered by any tile is equal to four levels at the next level to a maximum resolution of the data set. Each of the six major faces is then divided into multiple tiles at different levels of detail. This data organization is called data tiling. The ArcGlobe data tiling scheme is shown in the following illustration.
Data caching
The GlobeDisplay object has a central role in managing and controlling tile generation and in the subsequent storing of data tiles for future use, called data caching. Data tiles are always stored in a memory cache and, optionally, in a disk cache. The main advantage of data caching is the improvement of visualization performance, as well as the reduction of repetitive data requests from data sources. The tile generator,
IGlobeDisplayLayers.GenerateTiles, is used to preprocess data both in off-line mode, called full caching, and in an interactive on-demand mode, called on demand data caching.
Each data tile will be stored into memory and optionally into disk for future use. Using data caching improves visualization performance. The ArcGlobe data caching structure is shown in the following diagram.
General globe properties
General globe properties are accessed via the IGlobeDisplayRendering interface. Commonly used globe properties include vertical exaggeration, background color, and sun position. The IGlobeDisplayLayers interface provides access to globe-specific layer properties as well as general purpose functions. From GlobeDisplay, you gain access to one or more globe viewers being used by the application. These are the 3D display windows. You can change the perspective displayed in a globe viewer through its GlobeCamera. The GlobeDisplay can be acquired from an ArcGlobe document's Globe object via
IGlobe.GlobeDisplay.
Most of the members from the IGlobeDisplayLayers interface are used for internal purposes. You should not use members from this interface; you should use methods and properties from IGlobeLayerProperties.
IViewers3D provides access to members that control the active viewer, indicates the 3D display navigation mode, controls redrawing into all viewers as well us registers and unregisters additional viewers.
GlobeViewer
Similar to a scene viewer, the globe viewer is a 3D display window in ArcGlobe. See the Scene and globe viewer section in the
3DAnalyst Library overview.
GlobeLayerProperties
The GlobeLayerProperties coclass is the layer extension that contains globe-specific layer properties, such as a layer drawing priority on the surface of the globe, exposed as
IGlobeLayerProperties.BaseImageDrawingPriority. This value relates to the position of the layers that are part of the base globe (i.e., draped layers and elevation layers) in the drawing order. To get an ordered list of layers in the base globe use
IGlobeDrawingOrder.OrderedLayers.
Elevation layers are always on top of the ordered list followed by draped layers.
The GlobeLayerProperties object also controls the layers cache data removal behavior via
IGlobeLayerProperties.CacheRemovalOption. The default setting is the cache to be removed when exiting the application or removing the layer.
The
IGlobeLayerProperties.IsDynamicallyRasterized property indicates if the feature data is to be rasterized. Feature layers will be treated as rasterized if this property is set to True. By default, all 2D feature data is rasterized, whereas 3D data (including multipatch feature classes) will be treated as vectors. One would get advanced symbology support (any symbology supported in ArcMap will be honored when a feature layer is treated as rasterized) as well as better draping of feature data onto the surface of the globe, especially if elevation data is present.
Symbol sizes that are usually expressed in terms of points will need to have a scaling factor when used in an application that uses real world units. The
IGlobeLayerProperties.SymbologyScalingFactor property is the scaling factor of meters-per-point to be applied to symbol sizes during rasterization. This means that a symbol with a size of 8 points would be converted to real world units multiplied by the factor as suggested by IGlobeLayerProperties.SymbologyScalingFactor.
[C#]
IGlobeDisplayLayers ipGlobeDisplayers;
IGlobeLayerProperties ipGlobLayerprops;
ipGlobeDisplayers= (IGlobeDisplayLayers) m_glbdisp;
ILayer iplayer;
IEnumLayer ipEnum; ipEnum=
m_glbdisp.Globe.get_GlobeLayers(null,false,true,true);//Return all the layers in the base globe sorted by drawing priority.
iplayer= ipEnum.Next();
{
ipGlobLayerprops= ipGlobeDisplayers.FindGlobeProperties(iplayer);
int MaxLod=0;
int LOD= 2; //Set it to a prefered LOD value.
while(iplayer!= null)
if (ipGlobLayerprops.maxLOD== -1)// A value of -1 indicates that the level of detail is not yet set.
ipGlobLayerprops.maxLOD=LOD;
ipGlobeDisplayers.RefreshLayer(iplayer);
iplayer= ipEnum.Next();
}
GlobeCamera
GlobeCamera defines the global and perspective viewing of data on the globe. You should use the GlobeCamera object to obtain observer and target positions instead of
Camera because GlobeCamera works with latitude and longitude values instead of a local coordinate system.
IGlobeCamera is the major interface with properties and methods to control navigation orientation,
IGlobeCamera.OrientationMode; the offset for the roll angle in degrees,
IGlobeCamera.RollOffset; and to get and set observer and target positions as a combination of latitude and longitude in decimal degrees plus altitude in kilometers,
IGlobeCamera.SetObserverLatLonAlt (latDD, lonDD, altKMs) and
IGlobeCamera.SetTargetLatLonAlt (latDD, lonDD, altKMs).
IGlobeCamera.GetLocalOrientation (plocalAzi, pLocalIncl, pLocalRoll) gets the azimuth, inclination, and roll angles relative to the current target on surface.
GlobeServer
The
GlobeServer coclass gives you access to an ArcGIS Globe layer bound to a GlobeServer object. It also allows globe server layers to be queried and identified (via the
Find and
Identify methods). GlobeServer can be used in desktop, Intranet (local area network [LAN} and wide area network [WAN]), or Internet development environments. In a desktop environment, GlobeServer objects can be created in-process within your application. GlobeServer objects are run within ArcGIS Server. When running in ArcGIS Server, GlobeServer objects can be accessed via the Server application programming interface (API) over Transmission Control Protocol/Internet Protocol (TCP/IP) (Intranet) or over HyperText Transfer Protocol (HTTP) using Simple Object Access Protocol/Extensible Markup Language (SOAP/XML) (Internet) and a binary messaging framework.
ArcGIS Desktop and ArcGIS Engine developers can also consume server objects via the Server API. If you want to work with the fine-grained ArcObjects, you must use the Server API. You can use
GISServerConnection to connect to the GIS server, or you can obtain a reference to
ServerObjectManager through
GISClient (TCP/IP connection only).
The GlobeServer coclass contains several important interfaces with basic functions for starting and stopping an ArcGIS Server (
IObjectActivate), for initializing a globe server object from an ArcGlobe document (*.3dd file), and methods for defining the physical and virtual directories of a Web service (
IGlobeServerSetup) as well as an interface (
IGlobeServerObjects) for getting an ArcGIS Globe layer.
The
IGlobeServer interface contains methods for performing query and find on an ArcGIS Globe Server layer. In addition, IGlobeServer also contains methods for getting components of a globe server layer, such as animation files, tiles, and associated textures either as a uniform resource locator (URL) or as binary data. The GlobeServer coclass is also home to the
IRequestHandler and
IRequestHandler2 interfaces that provide access to members that control handling of request messages (binary or SOAP).
GlobeServerLayer
The
GlobeServerLayer coclass allows you access to an ArcGIS Globe Server layer, which is the basic ingredient of an ArcGIS Globe Service.
The GlobeServerLayer coclass contains several interfaces. Some of the more important ones include the following:
-
IGlobeServerLayer—Encapsulates methods for connecting to an ArcGIS Server and properties for querying layer properties.
-
ILayerEffects—Provides properties to manipulate layer transparency.
-
ICompositeLayer—Provides a Count property returning the exact layer count in GlobeServerLayer.
Unlike a map server layer, calls to get the layer count, or layer transparency, will be honored and applied. Since the working ingredients of a globe server are layers, you have access to each individual layer's properties. Furthermore, GlobeServerLayer is different from
MapServerLayer in that it supports being expanded via the
Expanded property of
ICompositeLayer2. This, in effect, enables globe server layers to be accessed pursuant to the layer level. This is an integral property of GlobeServerLayer because it allows you to "mix and match" layers from different globe services and consume them as separate entities.
Other notable interfaces implemented by the GlobeServerLayer class include the following:
-
ILayerExtensions—Provides methods and properties to add layer extensions.
-
ILayerPosition—Provides a property to get or set a layer's drawing position in the globe.
-
IPublishLayer—Enables GlobeServerLayers to support publishing.
GlobeLayerInfo
The
GlobeLayerInfo coclass can be considered the globe server layer equivalent of the GlobeLayerProperties class, which is an important layer extension object that contains globe-specific layer properties. The bulk of the properties of GlobeLayerInfo are members of
IGlobeLayerInfo. Some of these members include layer drawing priority on the surface of the globe, exposed as
IGlobeLayerInfo.BaseImageDrawingPriority and
IGlobeLayerInfo.DataType, which describes the type of layer (raster, elevation, or feature data).
GlobeLayerInfos
GlobeLayerInfos is a container class for GlobeLayerInfo that provides detailed information about a globe server layer.
GlobeServerIdentifyResult, GlobeServerIdentifyResults, GlobeServerFindResult, and GlobeServerFindResults
GlobeServerIdentifyResults is a container class for GlobeServerIdentifyResult that allows access to elements of GlobeServerIdentifyResult.
GlobeServerFindResults is a container class for GlobeServerFindResult that provides a collection of find results.
GlobeServerLayerFactory
The
GlobeServerLayerFactory coclass provides access to the available properties of a layer factory for globe server layers.
GlobeHeightProperties
The GlobeHeightProperties object is contained in the GlobeLayerProperties coclass. There is only one GlobeHeightProperties object at any time. Access to a layer's elevation property is obtained through the GlobeHeightProperties coclass. This coclass is important in that it's through this object that a layer gets its height property and, accordingly, its display location in the type tab of the application.
In ArcGlobe, there are three categories to which a layer can belong as shown in the following list:
- Draped layers are layers that are draped on the surface of the globe. These can be feature layers or raster layers.
- Floating layers are layers that do not drape onto the surface of the globe but have an offset. Offsets can be defined by a constant or expression.
- Elevation layers are raster layers that define the surface of the globe.
These layers are shown in the following screenshot.
IGlobeHeightProperties.Offset is a constant value that can be applied to any layer in the draped or floating layers categories. Neither feature layers nor raster images can have an offset if they are in the draped layers category. They need to be part of the floating layers category to use this property. Only feature layers treated as vectors would honor IGlobeHeightProperties.Offset while still part of the draped layers category. Similarly,
IGlobeHeightProperties.ElevationExpressionString and
IGlobeHeightProperties.ElevationExpression, with a constant or an expression value to define any feature layer's elevation, apply to feature layers as vectors.
GlobeAdvancedOptions
The GlobeAdvancedOptions object is used to manipulate ArcGlobe’s advanced visualization and cache data management options.
-
CachePath—The path to the globe data cache on the local machine.
-
ClipFarFactor—Far clipping plane that aids in performance optimization by clipping areas that do not fall within the application's view.
-
ClipNear—Near clipping plane that aids in performance optimization by clipping areas that do not fall within the application's view.
-
DefaultUse16ColorBits—Default value for image color compression.
-
DefaultUse16ElevBits—Default value for elevation compression.
-
GetDefaultCompression—Gets default lossy compression option for a data type and its quality from 1 to 100.
-
GetUseCache—Gets disk cache option and cache size.
-
LevelOfDetail—The level of detail (LOD) of image and elevation layers that's applied during display.
-
ManualLOD—A Boolean that indicates if manual LOD control is on.
-
RestoreClipPlaneDefaults—Restores the default clipping plane settings.
-
RestoreLODDefaults—Restores the default LOD settings.
-
SetDefaultCompression—Sets default lossy compression option for a data type and its quality from 1 to 100.
-
SetUseCache—Sets disk cache option and cache size.
-
TargetFrameRate—The target frame rate when using automatic control of LOD.
-
WriteToRegistry—Commits the changes to the system's registry.
GlobeLegendInfo and GlobeLegendInfos
The
GlobeLegendInfo coclass provides information about a globe layer. The legend information provided by a layer is usually provided by the renderer.
GlobeLegendInfos is a container class for GlobeLegendInfo, which provides information about a globe layer.
GlobeLayer
The
GlobeLayer coclass is used internally and you should not use it. It will be deprecated in future releases. You should use the abstract Layer class and add layer extensions, such as GlobeLayerProperties, and GlobeLayerHeight objects to a layer to access globe-specific properties.
There are two ways to achieve that:
- When a layer is added to an ArcGlobe application, the GlobeLayerProperties layer extension and GlobeLayerHeight object will automatically be added to it with default values, and you can access the properties and methods available from these objects.
- After co-creating a layer, you must explicitly add the GlobeLayerProperties layer extension and GlobeLayerHeight object before adding the layer to the application. It is important to note that when adding a feature data pragmatically, especially feature data as vector, you needs to set LOD to a preferred value. When adding a layer from the application, users will be forced to set LOD values before displaying any feature data as vector. The sample code below shows how to add the GlobeLayerProperties layer extension and the GlobeLayerHeight object and illustrates how to set some of the globe-specific properties of a layer before adding it to an ArcGlobe application.