Create Map Server Cache (Server)
Summary
Creates the tiling scheme and preparatory folders for a map service cache. After running this tool, run Manage Map Server Cache Tiles to add tiles to the cache.
Usage
-
This tool only works with ArcGIS Server map services.
-
Only one data frame can be cached at a time. If you need maps from multiple data frames, you must create separate map services and caches for each data frame.
-
Once you create the tiling scheme you cannot modify it. However, you can add or delete scales using the Manage Map Server Cache Scales tool.
-
For best performance, use fused caches. Always use fused caches for tiles that will be consumed in Web applications.
-
Raster data is best served with JPEG or MIXED image format. When using JPEG or MIXED with vector maps, use a high compression quality value (such as 90) to reduce blurring of lines and text. Vector data can also be served in PNG format, although PNG 24 should be avoided for caches that will be used in Web applications.
-
JPEG file format is not supported for multilayer caches.
-
The cache image format cannot be changed once the cache is generated. The cache must first be deleted before switching to a different format.
-
The Antialiasing option smoothes out the edges of lines and text, but offers little enhancement for raster images.
Syntax
Parameter | Explanation | Data Type |
server_name |
The ArcGIS Server machine hosting the service to be cached. | String |
object_name |
The map service to be cached. | String |
data_frame |
The map data frame to be cached. | String |
out_folder |
The parent directory for the cache. This must be a registered ArcGIS Server cache directory. | String |
tiling_scheme_type | Choose to use a NEW or PREDEFINED tiling scheme. You can define a new tiling scheme with this tool or browse to a predefined tiling scheme file (.xml). A predefined scheme can be created by running the Generate Map Server Cache Tiling Scheme tool.
| String |
scales_type |
Specify how you will define the scales for the tiles.
| String |
num_of_scales |
The number of scale levels to create in the cache. This option is disabled if you create a custom list of scales. | Long |
dpi |
The dots per inch of the intended output device. If a DPI is chosen that does not match the resolution of the output device, the scale of the map tile will appear incorrect. The default value is 96. | Long |
tile_width |
The width of the cache tiles in pixels. The default is 256. For the best balance between performance and manageability, avoid deviating from standard widths of 256 or 512. | Long |
tile_height |
The height of the cache tiles in pixels. The default is 256. For the best balance between performance and manageability, avoid deviating from standard widths of 256 or 512. | Long |
map_or_layers (Optional) |
Choose to generate a FUSED or MULTI_LAYER cache:
| String |
tiling_schema (Optional) |
Path to a predefined tiling scheme file (usually named conf.xml). | File |
tile_origin (Optional) |
The origin (upper left corner) of the tiling scheme in the coordinates of the spatial reference of the source map document. The extent of the source map document must be within (but does not need to coincide) with this region. | Point |
levels [levels,...] (Optional) |
Scale levels available for the cache. These are not represented as fractions. Instead, use 500 to represent a scale of 1:500, and so on. | String |
Layer [Layer,...] (Optional) |
Layers to include in the cache if MULTI_LAYER cache type is chosen. | String |
Antialiasing (Optional) | Specifies whether to use antialiasing when rendering the tiles. If antialiasing is chosen, edges of lines, borders, and text will be smoothed. There is a performance cost for this option. The performance cost is greater when using MXD-based map services (as opposed to MSD-based map services that have antialiasing defined in the MSD file). Antialiasing provides no benefit with raster imagery. If the source for your map service is an MSD file and you defined antialiasing within the MSD, antialiasing will be applied in your cache whether or not you choose the option in this tool.
| Boolean |
cache_format (Optional) |
Choose either PNG8, PNG24, PNG32, JPEG, or MIXED file format for the tiles in the cache. PNG8 is the default.
| String |
tile_compression_quality (Optional) |
Enter a value between 1 and 100 for the JPEG compression quality. The default value is 75 for JPEG tile format and zero for other formats. Compression is supported only for JPEG format. Choosing a higher value will result in a larger file size with a higher-quality image. Choosing a lower value will result in a smaller file size with a lower-quality image. | Long |
storage_format (Optional) |
Choose whether to group your tiles into large .bundle files using "Compact" storage format, instead of storing each tile as a separate file using "Exploded" format. Compact storage format is more efficient in terms of storage and mobility. | String |
use_local_cache_dir | Choose whether bundle files should be written into a local directory on the server when creating a compact cache, instead of being written directly into the shared cache directory. If you choose this option, the bundle files will be copied into the shared cache directory as they are completed. This option improves performance when multiple machines are working on the caching job.
| Boolean |
Code Sample
This example creates a map cache using the "standard" scale type.
# CreateMapServerCache example (stand-alone script) # Name: CreateMapServerCache.py # Description: The following stand-alone script demonstrates how to create map # using Custom scales & jpg image format with Antialiasing feature turned on # Requirements: os, sys, time & traceback modules # Author: ESRI # Any line that begins with a pound sign is a comment and will not be executed # Empty quotes take the default value. # To accept arguments from the command line replace values of variables to # "sys.argv[]" # Import system modules import arcpy from arcpy import env import os, sys, time, string, datetime, traceback # Set environment settings env.workspace = "C:/data" # List of input variables for map service properties server = "MyServer" service = "Rainfall" dataFrame = "" cacheDir = "C:\\arcgisserver\\arcgiscache\\" tilingScheme = "NEW" scalesType = "CUSTOM" extents = "" tileOrigin = "" scales = "4" dpi = "96" scaleValues = "600265;350200;225400;44000" tileWidth = "256" tileHeight = "256" cacheType = "FUSED" inputLayers = "" pathToXML = "" antialiasing = "ANTIALIASING" tileFormat = "JPEG" tileCompressionQuality = "75" storageFormat = "Compact" useLocalCacheDir = "True" currentTime = datetime.datetime.now() arg1 = currentTime.strftime("%H-%M") arg2 = currentTime.strftime("%Y-%m-%d %H:%M") file = 'C:/data/report_%s.txt' % arg1 # print results of the script to a report report = open(file,'w') try: starttime = time.clock() result = arcpy.CreateMapServerCache_server(server, service, dataFrame, cacheDir, tilingScheme, scalesType, scales, dpi, tileWidth, tileHeight, cacheType, pathToXml, tileOrigin, scaleValues, inputLayers, antialiasing, tileFormat, tileCompressionQuality, storageFormat, useLocalCacheDir) finishtime = time.clock() elapsedtime = finishtime - starttime #print messages to a file while result.status < 4: time.sleep(0.2) resultValue = result.getMessages() report.write ("completed " + str(resultValue)) print "Created cache schema with custom scales successfully for " + service + " in " + str(elapsedtime) + " sec \n on " + arg2 except Exception, e: # If an error occurred, print line number and error message tb = sys.exc_info()[2] report.write("Failed at step 1 \n" "Line %i" % tb.tb_lineno) report.write(e.message) print "Executed creation of map server Cache schema using custom scales" report.close()
This example creates a map cache using "custom" scales.
# CreateMapServerCache example (stand-alone script) # Name: CreateMapServerCache.py # Description: The following stand-alone script demonstrates how to create map # using Custom scales & jpg image format with Antialiasing feature turned on # Requirements: os, sys, time & traceback modules # Author: ESRI # Any line that begins with a pound sign is a comment and will not be executed # Empty quotes take the default value. # To accept arguments from the command line replace values of variables to # "sys.argv[]" # Import system modules import arcpy from arcpy import env import os, sys, time, string, datetime, traceback # Set environment settings env.workspace = "C:/data" # List of input variables for map service properties server = "MyServer" service = "Rainfall" dataFrame = "" cacheDir = "C:\\arcgisserver\\arcgiscache\\" tilingScheme = "NEW" scalesType = "CUSTOM" extents = "" tileOrigin = "" scales = "4" dpi = "96" scaleValues = "600265;350200;225400;44000" tileWidth = "256" tileHeight = "256" cacheType = "FUSED" inputLayers = "" pathToXML = "" antialiasing = "ANTIALIASING" tileFormat = "JPEG" tileCompressionQuality = "75" storageFormat = "Compact" useLocalCacheDir = "True" currentTime = datetime.datetime.now() arg1 = currentTime.strftime("%H-%M") arg2 = currentTime.strftime("%Y-%m-%d %H:%M") file = 'C:/data/report_%s.txt' % arg1 # print results of the script to a report report = open(file,'w') try: starttime = time.clock() result = arcpy.CreateMapServerCache_server(server, service, dataFrame, cacheDir, tilingScheme, scalesType, scales, dpi, tileWidth, tileHeight, cacheType, pathToXml, tileOrigin, scaleValues, inputLayers, antialiasing, tileFormat, tileCompressionQuality, storageFormat, useLocalCacheDir) finishtime = time.clock() elapsedtime = finishtime - starttime #print messages to a file while result.status < 4: time.sleep(0.2) resultValue = result.getMessages() report.write ("completed " + str(resultValue)) print "Created cache schema with custom scales successfully for " + service + " in " + str(elapsedtime) + " sec \n on " + arg2 except Exception, e: # If an error occurred, print line number and error message tb = sys.exc_info()[2] report.write("Failed at step 1 \n" "Line %i" % tb.tb_lineno) report.write(e.message) print "Executed creation of map server Cache schema using custom scales" report.close()
This example creates a map cache using a predefined tiling scheme.
# CreateMapServerCache example (stand-alone script) # Name: CreateMapServerCache.py # Description: The following stand-alone script demonstrates how to create map # using Custom scales & jpg image format with Antialiasing feature turned on # Requirements: os, sys, time & traceback modules # Author: ESRI # Any line that begins with a pound sign is a comment and will not be executed # Empty quotes take the default value. # To accept arguments from the command line replace values of variables to # "sys.argv[]" # Import system modules import arcpy from arcpy import env import os, sys, time, string, datetime, traceback # Set environment settings env.workspace = "C:/data" # List of input variables for map service properties server = "MyServer" service = "Rainfall" dataFrame = "" cacheDir = "C:\\arcgisserver\\arcgiscache\\" tilingScheme = "NEW" scalesType = "CUSTOM" extents = "" tileOrigin = "" scales = "4" dpi = "96" scaleValues = "600265;350200;225400;44000" tileWidth = "256" tileHeight = "256" cacheType = "FUSED" inputLayers = "" pathToXML = "" antialiasing = "ANTIALIASING" tileFormat = "JPEG" tileCompressionQuality = "75" storageFormat = "Compact" useLocalCacheDir = "True" currentTime = datetime.datetime.now() arg1 = currentTime.strftime("%H-%M") arg2 = currentTime.strftime("%Y-%m-%d %H:%M") file = 'C:/data/report_%s.txt' % arg1 # print results of the script to a report report = open(file,'w') try: starttime = time.clock() result = arcpy.CreateMapServerCache_server(server, service, dataFrame, cacheDir, tilingScheme, scalesType, scales, dpi, tileWidth, tileHeight, cacheType, pathToXml, tileOrigin, scaleValues, inputLayers, antialiasing, tileFormat, tileCompressionQuality, storageFormat, useLocalCacheDir) finishtime = time.clock() elapsedtime = finishtime - starttime #print messages to a file while result.status < 4: time.sleep(0.2) resultValue = result.getMessages() report.write ("completed " + str(resultValue)) print "Created cache schema with custom scales successfully for " + service + " in " + str(elapsedtime) + " sec \n on " + arg2 except Exception, e: # If an error occurred, print line number and error message tb = sys.exc_info()[2] report.write("Failed at step 1 \n" "Line %i" % tb.tb_lineno) report.write(e.message) print "Executed creation of map server Cache schema using custom scales" report.close()