GlobeCore


Supported with:
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, 3DAnalyst

Additional 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.
 
 
GlobeControl and a set of globe commands exist in the Controls library, together with ToolbarControl, TOCControl, and helper objects for creating your own custom commands.
 
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.
 
The IGlobe interface gives you access to basic globe properties and methods, such as GlobeLayers, and to properties and methods of the globe itself. Use this interface to add layer types (AddLayerType) according to their category—floating, draped, or elevation (esriGlobeLayerType); access globe background options (DefaultGlobeBackgroundOption), including sky and space colors (GetDefaultHighBackgroundColor, GetDefaultLowBackgroundColor, SetDefaultHighBackgroundColor, and SetDefaultLowBackgroundColor); show fading transition values (GetDefaultBackgTransitionDistances and SetDefaultBackgTransitionDistances); show globe tips (ShowGlobeTips); and designate the linear units used in the globe (GlobeUnits).

GlobeDisplay

GlobeDisplay is a central object in ArcGlobe. It provides access to basic properties of the globe and layers to more advanced aspects of the application, including management of viewers, rendering, and data caching. The GlobeDisplay coclass has four major interfaces: IGlobeDisplay, IGlobeDisplayRendering, IGlobeDisplayLayers, and an inherited interface, IViewers3D.
 
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.
 
Visibility distance thresholds, IGlobeLayerProperties.MaximumDistance and IGlobeLayerProperties.MinimumDistance govern the distance where a layer becomes visible. These values are automatically set for feature data when the IGlobeLayerProperties.MaxFeatureLevelOfDetail property is set. You will get a prompt to set this value when adding feature data to the application, especially if the data is to be treated as vector. Similarly, you need to explicitly set this property when adding feature data to the application.

[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:
 
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:

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

The GlobeServerIdentifyResult coclass provides information about an identify result.
 
GlobeServerIdentifyResults is a container class for GlobeServerIdentifyResult that allows access to elements of GlobeServerIdentifyResult.
 
The GlobeServerFindResult coclass provides information about a find result.
 
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:
 
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.  
 
IGlobeHeightProperties.HasElevationValues, a Boolean that indicates whether the feature layer has Z values, is one of the properties that can be used to define a layer's Z placement. Feature layers (as vectors) can have extrusion factors to convert a 2D feature layer into a 3D object (multipatch) by applying a conversion factor via IGlobeHeightProperties.ExtrusionExpression or IGlobeHeightProperties.ExtrusionExpressionString

GlobeAdvancedOptions

The GlobeAdvancedOptions object is used to manipulate ArcGlobe’s advanced visualization and cache data management options.
 
Using the IGlobeAdvancedOptions interface, you can access the following properties and methods:

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:
  1. 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.

  1. 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.