com.esri.arcgis.carto
Interface IDynamicCacheLayerManager

All Superinterfaces:
Serializable
All Known Implementing Classes:
DynamicCacheLayerManager

public interface IDynamicCacheLayerManager
extends Serializable

Provides access to dynamic layers cache management.

Description

This interface is new at ArcGIS 9.3.

Remarks

Using this cache management interface, one can pre-generate caches, invalidate regions in existing caches which allow users to update cache as its underlying layer changes without having to rebuild a new cache. Also, it provides for control over the drawing characteristics of the cache.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.


Method Summary
 void connect(String newFolderPath, String newFolderName)
          Try to connect the given layer to a cache.
 void delete()
          Delete the cache structure and tiles from the disk.
 double getDetailsThreshold()
          The threshold to determine the level of detail to use.
 String getFolderName()
          If cache exists, returns the layername plus guid.
 String getFolderPath()
          The full path of the cache parent directory if the the cache exists.
 String getFormat()
          The name of the tile format which is used by the cache.
 double getMaxCacheScale()
          The maximum scale by which tiles are to be generated.
 int getProgressiveDrawingLevels()
          Number of coarse level data to draw while the current LOD tiles are being processed.
 int getProgressiveFetchingLevels()
          Number of coarse level data to fetch while the current LOD tiles are being processed.
 void init(IMap map, ILayer layer)
          Initialize the cache manager with the given map and layer.
 void invalidate(IEnvelope extent, boolean doubleBuffer)
          Invalidate a certain area of the cache, according to the given extent.
 boolean isAlwaysDrawCoarsestLevel()
          Indicates whether to use the default coarse texture while the requested tile is being processed.
 boolean isCacheable()
          Indicates whether the layer can have a dynamic cache.
 boolean isConsolidatedGroupLayer()
          Indicates whether the given composite layer cache is consolidated.
 boolean isStrictOnDemandMode()
          Indicates whether to use a coarse grained drawing in case where there is nothing else to render while waiting for the current map scale data to be cooked.
 void setAlwaysDrawCoarsestLevel(boolean alwaysDrawCoarsestLevel)
          Indicates whether to use the default coarse texture while the requested tile is being processed.
 void setConsolidatedGroupLayer(boolean consolidated)
          Indicates whether the given composite layer cache is consolidated.
 void setDetailsThreshold(double threshold)
          The threshold to determine the level of detail to use.
 void setFolderPath(String folderPath)
          The full path of the cache parent directory if the the cache exists.
 void setFormat(String format)
          The name of the tile format which is used by the cache.
 void setMaxCacheScale(double maxScale)
          The maximum scale by which tiles are to be generated.
 void setProgressiveDrawingLevels(int numOfProgressiveLevels)
          Number of coarse level data to draw while the current LOD tiles are being processed.
 void setProgressiveFetchingLevels(int numOfProgressiveLevels)
          Number of coarse level data to fetch while the current LOD tiles are being processed.
 void setStrictOnDemandMode(boolean strictOnDemandMode)
          Indicates whether to use a coarse grained drawing in case where there is nothing else to render while waiting for the current map scale data to be cooked.
 void update(IEnvelope extent, double fromMapScale, double targetMapScale, int updateMode)
          Update the cache associated with the layer according to the given extent, between the from-scale to the target-scale and according to the update-mode.
 

Method Detail

init

void init(IMap map,
          ILayer layer)
          throws IOException,
                 AutomationException
Initialize the cache manager with the given map and layer.

Remarks

Calling any of the DynamicCacheLayerManager methods or properties before calling Init will result in an exception!

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
map - A reference to a com.esri.arcgis.carto.IMap (in)
layer - A reference to a com.esri.arcgis.carto.ILayer (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getFolderName

String getFolderName()
                     throws IOException,
                            AutomationException
If cache exists, returns the layername plus guid. If cache does not exists, returns nothing.

Remarks

The folder name is composed of a clean layer name (layer name without special characters) plus a global unique identifier (GUID).

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The cacheFolderName
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getFolderPath

String getFolderPath()
                     throws IOException,
                            AutomationException
The full path of the cache parent directory if the the cache exists.

Remarks

Returns the full Path of the Parent Folder of the cache that is associated with the layer.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The folderPath
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setFolderPath

void setFolderPath(String folderPath)
                   throws IOException,
                          AutomationException
The full path of the cache parent directory if the the cache exists.

Remarks

The Dynamic Cache Layer Manager will first try to connect to the cache defined by the new Folder Path and the Layer’s cache name. If it can not connect, a new cache will be generated.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
folderPath - The folderPath (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isCacheable

boolean isCacheable()
                    throws IOException,
                           AutomationException
Indicates whether the layer can have a dynamic cache.

Remarks

Since consolidated group layers use caches, when any layer (including a non cacheable layer) is under a consolidated group layer, a cache for that layer will get generated, as part of the group layer’s cache.

Some type of layers, e.g. Raster layers, do not use a proprietary dynamic display cache, and therefore can not be cached.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The cacheable
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

delete

void delete()
            throws IOException,
                   AutomationException
Delete the cache structure and tiles from the disk.

Remarks

If the dynamic display is active, the cache will be recreated once the delete method is called.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

invalidate

void invalidate(IEnvelope extent,
                boolean doubleBuffer)
                throws IOException,
                       AutomationException
Invalidate a certain area of the cache, according to the given extent. If the input extent is null, invalidates the entire cache. Duoble-buffer does not show changes until new tiles are available.

Remarks

Passing a null extent will result in update of the cache for the entire layer (determined by the layer area of interest).

When double-buffer is false, the invalidated tiles will disappear from the display immediately.

When double-buffer is true, the invalidated tiles will keep being rendered, until the new tiles are ready, or until a defined max time (time out), which ever comes first.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
extent - A reference to a com.esri.arcgis.geometry.IEnvelope (in)
doubleBuffer - The doubleBuffer (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getFormat

String getFormat()
                 throws IOException,
                        AutomationException
The name of the tile format which is used by the cache.

Remarks

There are two compression formats which are supported by the dynamic display – PNG and JPEG. In both cases, the 32 bit image format is used (although JPEG only supports 24 bits out-of-the-box, ESRI has extended the format in order to support transparency).

When setting the input format it is best to explicitly specify JPEG32 or PNG32.

By their nature, the two compression formats are different from each other. PNG format is at best when it is compressing discrete colors and tends to bloat when a continuous image is being used (such as aerial photo). On the other hand, JPEG compression is usually better in terms of compression (takes less disk space) and is much better with continuous images; however when it comes to discrete colors, the result may be a bit twisted and can look blurry.

The default compression format is PNG.

At runtime, when the dynamic display is active, changing the compression format will result in regeneration of the cache. If the dynamic display is not active (or hasn’t been activated), the new format information will be written to the layer information and as soon as the dynamic display is activated, the existing cache will be rebuild.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The format
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setFormat

void setFormat(String format)
               throws IOException,
                      AutomationException
The name of the tile format which is used by the cache.

Remarks

There are two compression formats which are supported by the dynamic display – PNG and JPEG. In both cases, the 32 bit image format is used (although JPEG only supports 24 bits out-of-the-box, ESRI has extended the format in order to support transparency).

When setting the input format it is best to explicitly specify JPEG32 or PNG32.

By their nature, the two compression formats are different from each other. PNG format is at best when it is compressing discrete colors and tends to bloat when a continuous image is being used (such as aerial photo). On the other hand, JPEG compression is usually better in terms of compression (takes less disk space) and is much better with continuous images; however when it comes to discrete colors, the result may be a bit twisted and can look blurry.

The default compression format is PNG.

At runtime, when the dynamic display is active, changing the compression format will result in regeneration of the cache. If the dynamic display is not active (or hasn’t been activated), the new format information will be written to the layer information and as soon as the dynamic display is activated, the existing cache will be rebuild.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
format - The format (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

connect

void connect(String newFolderPath,
             String newFolderName)
             throws IOException,
                    AutomationException
Try to connect the given layer to a cache.

Remarks

Please note that in order to connect to an existing cache, you must know the folder path which contains the cache information you will connect to. The folder-name is composed from the layer name together with a global unique identifier assigned by the dynamic display when it got generated.

To get the name of an existing cache you can use property IDynamicCacheLayerManager.FolderName.

In addition to verify that the destination cache exists, the method connect checks the following before actually connecting to the cache:

  1. The cache structure matches the input layer.
  2. Spatial reference of the target cache matches the one of the map.
  3. The compression format of the cache matches the one set for the layer.
  4. Should the input layer have a reference scale, that matches the one set to the cache.
  5. Renderers and labels are identical.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
newFolderPath - The newFolderPath (in)
newFolderName - The newFolderName (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

update

void update(IEnvelope extent,
            double fromMapScale,
            double targetMapScale,
            int updateMode)
            throws IOException,
                   AutomationException
Update the cache associated with the layer according to the given extent, between the from-scale to the target-scale and according to the update-mode.

Remarks

Passing a null extent will result in update of the cache for the entire layer extent, according to the layer’s area of interest.

Normally, the values for both fromMapScale and targetMapScale are set to greater than zero. In case of extreme values such as zero or less, the following behaviors are expected:

The updateMode is to replace missing tiles, overwrite outdated tiles, or delete tiles for a given layer within a given extent and scale reange. There are three modes of operation:

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
extent - A reference to a com.esri.arcgis.geometry.IEnvelope (in)
fromMapScale - The fromMapScale (in)
targetMapScale - The targetMapScale (in)
updateMode - A com.esri.arcgis.carto.esriMapCacheUpdateMode constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isConsolidatedGroupLayer

boolean isConsolidatedGroupLayer()
                                 throws IOException,
                                        AutomationException
Indicates whether the given composite layer cache is consolidated.

Remarks

By default, the dynamic display creates a separate cache for each individual layer in the map. At runtime, each cache is translated into textures when it comes to displaying the cache in dynamic mode. This means that when displayed, each layer is rendered as a sequence of adjacent textures in the form of seamless tiles. Each of these textures eventually takes a certain amount of memory on the graphics card.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The consolidated
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setConsolidatedGroupLayer

void setConsolidatedGroupLayer(boolean consolidated)
                               throws IOException,
                                      AutomationException
Indicates whether the given composite layer cache is consolidated.

Remarks

By default, the dynamic display creates a separate cache for each individual layer in the map. At runtime, each cache is translated into textures when it comes to displaying the cache in dynamic mode. This means that when displayed, each layer is rendered as a sequence of adjacent textures in the form of seamless tiles. Each of these textures eventually takes a certain amount of memory on the graphics card.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
consolidated - The consolidated (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isStrictOnDemandMode

boolean isStrictOnDemandMode()
                             throws IOException,
                                    AutomationException
Indicates whether to use a coarse grained drawing in case where there is nothing else to render while waiting for the current map scale data to be cooked.

Remarks

When set to true, it restricts the dynamic display from setting requests for tiles o tiles other than the tiles of the current calculated level of detail (with the exception of the coarse level tile when it is required).

In order to give the user a better visual experience, the dynamic display can use several levels of coarse textures to be rendered while it waits for the background thread to finish processing the data for the current map scale (and therefore the appropriate level of detail). The user can control the number of coarse textures by setting properties ProgressiveDrawingLevels and ProgressiveFetchingLevels, where ProgressiveDrawingLevels sets the number of level of details the dynamic display will search in memory to get a coarse texture. The ProgressiveFetchingLevels property sets the number of level of details for which the dynamic display will set requests to actually fetch data on the background thread, incase this data was not found in memory. Setting StrictOnDemandMode forces the dynamic display to set tiles requests only for the current map scale and logically sets ProgressiveFetchingLevels to zero.

By default, all layers are set to work using StrictOnDemandMode equal to true, to give the best total drawing speed. When setting this property to false, especially with raster layers, the user experience is much better, although the total drawing time is about 30% longer.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The strictOnDemandMode
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setStrictOnDemandMode

void setStrictOnDemandMode(boolean strictOnDemandMode)
                           throws IOException,
                                  AutomationException
Indicates whether to use a coarse grained drawing in case where there is nothing else to render while waiting for the current map scale data to be cooked.

Remarks

When set to true, it restricts the dynamic display from setting requests for tiles o tiles other than the tiles of the current calculated level of detail (with the exception of the coarse level tile when it is required).

In order to give the user a better visual experience, the dynamic display can use several levels of coarse textures to be rendered while it waits for the background thread to finish processing the data for the current map scale (and therefore the appropriate level of detail). The user can control the number of coarse textures by setting properties ProgressiveDrawingLevels and ProgressiveFetchingLevels, where ProgressiveDrawingLevels sets the number of level of details the dynamic display will search in memory to get a coarse texture. The ProgressiveFetchingLevels property sets the number of level of details for which the dynamic display will set requests to actually fetch data on the background thread, incase this data was not found in memory. Setting StrictOnDemandMode forces the dynamic display to set tiles requests only for the current map scale and logically sets ProgressiveFetchingLevels to zero.

By default, all layers are set to work using StrictOnDemandMode equal to true, to give the best total drawing speed. When setting this property to false, especially with raster layers, the user experience is much better, although the total drawing time is about 30% longer.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
strictOnDemandMode - The strictOnDemandMode (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getMaxCacheScale

double getMaxCacheScale()
                        throws IOException,
                               AutomationException
The maximum scale by which tiles are to be generated.

Remarks

This property is very useful with raster layers that have a specified resolution (cell-size) and it is clear that beyond a certain map scale, there is no point in generating additional tiles.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The maxScale
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setMaxCacheScale

void setMaxCacheScale(double maxScale)
                      throws IOException,
                             AutomationException
The maximum scale by which tiles are to be generated.

Remarks

This property is very useful with raster layers that have a specified resolution (cell-size) and it is clear that beyond a certain map scale, there is no point in generating additional tiles.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
maxScale - The maxScale (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getDetailsThreshold

double getDetailsThreshold()
                           throws IOException,
                                  AutomationException
The threshold to determine the level of detail to use. Values range from 0 to 100, where 100 means always choose coarse data.

Remarks

The cache for non dynamic layers is composed of discrete levels of details. Each level of detail corresponds to a specific map scale. In order to draw the cached tiles in the map, the dynamic display has to choose an appropriate level of detail and resample it further in order to scale it to the current map scale (which might be slightly different from the one that corresponds to the given level of detail). For that reason, most given map scales will fall within two levels of detail of the cache. Choosing the coarsest level of detail (the one whose scale is smaller than the map scale) may result in a bit blurry display because of the stretching effect and on the other hand, choosing the more detailed level of detail may lead to too many tiles that are needed to be drawn in the display and eventually degrades performance. For that reason, the dynamic display is calculating a ‘normalized distance’ which is the normalized value of the scale difference between the maps’ current scale and the coarse level of detail scale divided by the difference between the coarse level of detail scale and the more detailed level of detail scale.

The threshold determines the normalized value by which the coarse level of detail will be preferred over the more detailed one. By default the threshold value is set to 0.85 which means that as long as the scale difference between the map and the coarse LOD is below 85% of the difference between the scale of the coarse LOD and the finer LOD, the coarse LOD will be chosen over the more detailed one.

In order to favor them more detailed LOD, you should decrease the threshold.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The threshold
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setDetailsThreshold

void setDetailsThreshold(double threshold)
                         throws IOException,
                                AutomationException
The threshold to determine the level of detail to use. Values range from 0 to 100, where 100 means always choose coarse data.

Remarks

The cache for non dynamic layers is composed of discrete levels of details. Each level of detail corresponds to a specific map scale. In order to draw the cached tiles in the map, the dynamic display has to choose an appropriate level of detail and resample it further in order to scale it to the current map scale (which might be slightly different from the one that corresponds to the given level of detail). For that reason, most given map scales will fall within two levels of detail of the cache. Choosing the coarsest level of detail (the one whose scale is smaller than the map scale) may result in a bit blurry display because of the stretching effect and on the other hand, choosing the more detailed level of detail may lead to too many tiles that are needed to be drawn in the display and eventually degrades performance. For that reason, the dynamic display is calculating a ‘normalized distance’ which is the normalized value of the scale difference between the maps’ current scale and the coarse level of detail scale divided by the difference between the coarse level of detail scale and the more detailed level of detail scale.

The threshold determines the normalized value by which the coarse level of detail will be preferred over the more detailed one. By default the threshold value is set to 0.85 which means that as long as the scale difference between the map and the coarse LOD is below 85% of the difference between the scale of the coarse LOD and the finer LOD, the coarse LOD will be chosen over the more detailed one.

In order to favor them more detailed LOD, you should decrease the threshold.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
threshold - The threshold (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getProgressiveDrawingLevels

int getProgressiveDrawingLevels()
                                throws IOException,
                                       AutomationException
Number of coarse level data to draw while the current LOD tiles are being processed.

Remarks

In order to give the user a better visual experience, the dynamic display can use several levels of coarse textures to be rendered while waiting for the background thread to finish processing the data for the current map scale (and therefore the appropriate level of detail). The user can control the number of coarse textures by setting properties ProgressiveDrawingLevels and ProgressiveFetchingLevels. ProgressiveDrawingLevels sets the number of level of details the dynamic display will search in memory to get a coarse texture.

In the case where the number set to ProgressiveDrawingLevels is smaller than the value set to ProgressiveFetchingLevels, it would limit ProgressiveFetchingLevels to the number set to ProgressiveDrawingLevels.

By default, for layers that use a default texture (AlwaysDrawCoarsestLevel is set to true), the value for ProgressiveDrawingLevels is set to 31, meaning that in the case where there is a missing texture, the dynamic display will search for a coarse texture starting from the level of detail above the calculated one and will continue searching all the way to the level of detail that defines the default texture for the layer.

For layers that do not use a default texture (point and line feature classes), the ProgressiveDrawingLevels value is set to one, meaning that in case where the texture for the requested level of detail is not ready, it will only search up one level in memory in order to find a coarse texture.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The numOfProgressiveLevels
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setProgressiveDrawingLevels

void setProgressiveDrawingLevels(int numOfProgressiveLevels)
                                 throws IOException,
                                        AutomationException
Number of coarse level data to draw while the current LOD tiles are being processed.

Remarks

In order to give the user a better visual experience, the dynamic display can use several levels of coarse textures to be rendered while waiting for the background thread to finish processing the data for the current map scale (and therefore the appropriate level of detail). The user can control the number of coarse textures by setting properties ProgressiveDrawingLevels and ProgressiveFetchingLevels . ProgressiveDrawingLevels sets the number of level of details the dynamic display will search in memory to get a coarse texture.

In the case where the number set to ProgressiveDrawingLevels is smaller than the value set to ProgressiveFetchingLevels, it would limit ProgressiveFetchingLevels to the number set to ProgressiveDrawingLevels.

By default, for layers that use a default texture (AlwaysDrawCoarsestLevel is set to true), the value for ProgressiveDrawingLevels is set to 31, meaning that in the case where there is a missing texture, the dynamic display will search for a coarse texture starting from the level of detail above the calculated one and will continue searching all the way to the level of detail that defines the default texture for the layer.

For layers that do not use a default texture (point and line feature classes), the ProgressiveDrawingLevels value is set to one, meaning that in case where the texture for the requested level of detail is not ready, it will only search up one level in memory in order to find a coarse texture.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
numOfProgressiveLevels - The numOfProgressiveLevels (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getProgressiveFetchingLevels

int getProgressiveFetchingLevels()
                                 throws IOException,
                                        AutomationException
Number of coarse level data to fetch while the current LOD tiles are being processed.

Remarks

In order to give the user a better visual experience, the dynamic display can be rendered with several levels of coarse textures to be rendered while waiting for the background thread to finish processing the data for the current map scale (and therefore the appropriate level of detail). The user can control the number of coarse textures by setting properties ProgressiveDrawingLevels and ProgressiveFetchingLevels, where ProgressiveDrawingLevels sets the number of level of details the dynamic display will search in memory to get a coarse texture. ProgressiveFetchingLevels sets the number of level of details for which the dynamic display will set requests to actually fetch data on the background thread incase this data is not found in memory.

Setting the StrictOnDemandMode property to true, forces the dynamic display to set tiles requests only for the current map scale and logically sets ProgressiveFetchingLevels to zero.

By default, all layers are set to work using StrictOnDemandMode = true, to give the best total drawing speed.

When this property is set to false, especially with raster layers, the user experience is much better, although the total drawing time is about 30% longer. Being overridden by ProgressiveDrawingLevels and StrictOnDemandMode.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The numOfProgressiveLevels
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setProgressiveFetchingLevels

void setProgressiveFetchingLevels(int numOfProgressiveLevels)
                                  throws IOException,
                                         AutomationException
Number of coarse level data to fetch while the current LOD tiles are being processed.

Remarks

In order to give the user a better visual experience, the dynamic display can be rendered with several levels of coarse textures to be rendered while waiting for the background thread to finish processing the data for the current map scale (and therefore the appropriate level of detail). The user can control the number of coarse textures by setting properties ProgressiveDrawingLevels and ProgressiveFetchingLevels, where ProgressiveDrawingLevels sets the number of level of details the dynamic display will search in memory to get a coarse texture. ProgressiveFetchingLevels sets the number of level of details for which the dynamic display will set requests to actually fetch data on the background thread incase this data is not found in memory.

Setting the StrictOnDemandMode property to true, forces the dynamic display to set tiles requests only for the current map scale and logically sets ProgressiveFetchingLevels to zero.

By default, all layers are set to work using StrictOnDemandMode = true, to give the best total drawing speed.

When this property is set to false, especially with raster layers, the user experience is much better, although the total drawing time is about 30% longer. Being overridden by ProgressiveDrawingLevels and StrictOnDemandMode.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
numOfProgressiveLevels - The numOfProgressiveLevels (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isAlwaysDrawCoarsestLevel

boolean isAlwaysDrawCoarsestLevel()
                                  throws IOException,
                                         AutomationException
Indicates whether to use the default coarse texture while the requested tile is being processed.

Remarks

AlwaysDrawCoarsestLevel determines whether to use a coarse texture in case that there is no other data to draw. This might happen when a layer is required to draw tile information which pertains to a certain map scale. In such case, if by the time that the dynamic display is supposed to draw that tile, its texture is not yet ready, the dynamic display will use a default texture instead. As soon as the requested texture for the given tile is ready, it will be used instead of the default texture.

The default texture is calculated according to the layers’ area of interest (it covers the entire layer and therefore can be used anywhere there’s a missing information).

By default, this property is set according to the type of the layer. Any layer except point and polyline feature layers (including CAD, SDC and coverage) sets this property to true.

For some types of layer it is difficult to determine the appropriate default value, since it might not contain point or line vector data. For an instance, internet layers such as ArcGIS Server or ArcIMS can actually serve images of vector data (such as highways, railways, rivers etc.). Since there is no way to figure the type of the information served by these layers beforehand, the default is to set AlwaysDrawCoarsestLevel to true. This can lead to less effective drawing effects. So by changing AlwaysDrawCoarsestLevel to false you can modify the default behavior.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
The alwaysDrawCoarsestLevel
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setAlwaysDrawCoarsestLevel

void setAlwaysDrawCoarsestLevel(boolean alwaysDrawCoarsestLevel)
                                throws IOException,
                                       AutomationException
Indicates whether to use the default coarse texture while the requested tile is being processed.

Remarks

AlwaysDrawCoarsestLevel determines whether to use a coarse texture in case that there is no other data to draw. This might happen when a layer is required to draw tile information which pertains to a certain map scale. In such case, if by the time that the dynamic display is supposed to draw that tile, its texture is not yet ready, the dynamic display will use a default texture instead. As soon as the requested texture for the given tile is ready, it will be used instead of the default texture.

The default texture is calculated according to the layers’ area of interest (it covers the entire layer and therefore can be used anywhere there’s a missing information).

By default, this property is set according to the type of the layer. Any layer except point and polyline feature layers (including CAD, SDC and coverage) sets this property to true.

For some types of layer it is difficult to determine the appropriate default value, since it might not contain point or line vector data. For an instance, internet layers such as ArcGIS Server or ArcIMS can actually serve images of vector data (such as highways, railways, rivers etc.). Since there is no way to figure the type of the information served by these layers beforehand, the default is to set AlwaysDrawCoarsestLevel to true. This can lead to less effective drawing effects. So by changing AlwaysDrawCoarsestLevel to false you can modify the default behavior.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
alwaysDrawCoarsestLevel - The alwaysDrawCoarsestLevel (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.