创建地图服务器缓存 (服务器)

摘要

为地图服务缓存创建切片方案和预备文件夹。运行此工具后,运行管理地图服务器缓存切片以将切片添加到缓存。

用法

语法

CreateMapServerCache_Server (server_name, object_name, data_frame, out_folder, tiling_scheme_type, scales_type, num_of_scales, dpi, tile_width, tile_height, {map_or_layers}, {tiling_schema}, {tile_origin}, {levels}, {Layer}, {Antialiasing}, {cache_format}, {tile_compression_quality}, {storage_format}, use_local_cache_dir)
参数说明数据类型
server_name

对要建立缓存的服务进行托管的 ArcGIS Server 计算机。

String
object_name

要建立缓存的地图服务。

String
data_frame

要建立缓存的地图数据框。

String
out_folder

用于缓存的父目录。此目录必须是已注册的 ArcGIS Server 缓存目录。

String
tiling_scheme_type

选择采用 NEW 还是 PREDEFINED 切片方案。可以使用此工具定义一个新的切片方案,也可以浏览到一个预定义的切片方案文件 (.xml)。预定义方案的创建可以通过运行“生成地图服务器缓存切片方案”工具来实现。

  • NEW将使用此工具中的其他各种参数来定义一个新的切片方案,从而对比例级别、图像格式和存储格式等设置加以定义。这是默认设置。
  • PREDEFINED将指定一个已存在于磁盘中的切片方案 (.xml) 文件。也可使用“生成地图服务器缓存切片方案”工具创建一个切片方案。
String
scales_type

指定将如何定义切片的比例。

  • STANDARD根据“比例级数”字段中定义的级数自动生成比例。该比例将采用从 1:1000000 递增或递减一半的级别,并将最接近于源地图文档范围的级别作为起始比例。例如,如果源地图文档的范围是 1:121,000,000,并且定义了 3 个比例级别,则该地图服务将创建一个比例级别为 1:128,000,000、1:64,000,000 和 1:32,000,000 的缓存。这是默认设置。
  • CUSTOM允许缓存设计器输入任何所需比例。
String
num_of_scales

要在缓存中创建的比例级数。如果要创建比例的自定义列表,则此选项不可用。

Long
dpi

专用输出设备的每英寸点数。如果所选择的 DPI 与输出设备的分辨率不匹配,则地图切片将显示错误比例。默认值为 96。

Long
tile_width

缓存切片的宽度(以像素为单位)。默认值为 256。为在性能和可管理性之间寻求最佳平衡,应避免偏离标准宽度 256 或 512。

Long
tile_height

缓存切片的高度(以像素为单位)。默认值为 256。为在性能和可管理性之间寻求最佳平衡,应避免偏离标准宽度 256 或 512。

Long
map_or_layers
(可选)

选择生成FUSED 或 MULTI_LAYER 缓存:

  • FUSED 如果想要以源地图文档中所有图层的融合图像的形式创建每个切片,请选择此选项。这是最有效的缓存地图方法并且是默认选项。由于所有图层被融合成了一个图像,因而此服务的客户端应用程序无法打开或关闭单个图层。如果需要切换图层的可见性,则必须将其分离到自身的服务和缓存中。
  • MULTI_LAYER如果要将切片组织到子缓存中(每个子缓存表示源地图文档中的一个图层),请选择此选项。此缓存方法允许此服务的客户端应用程序打开或关闭单个图层。但是,这将创建大量切片,并且客户端将需要对各个图像执行检索和叠加操作。对于将在 Web 客户端中使用的缓存,应避免选择此选项。
String
tiling_schema
(可选)

预定义切片方案文件(通常名为 conf.xml)的路径。

File
tile_origin
(可选)

源地图文档空间参考的坐标中的切片方案原点(左上角)。源地图文档的范围必须在此原点范围内(但不必与原点重合)。

Point
levels
[levels,...]
(可选)

可用于缓存的比例级别。不使用分数表示比例级别,而使用 500 表示比例 1:500,依此类推。

String
Layer
[Layer,...]
(可选)

选择 MULTI_LAYER 缓存类型时要包含在缓存中的图层。

String
Antialiasing
(可选)

指定是否在渲染切片时使用抗锯齿功能。如果选择了抗锯齿功能,则会对线、边框和文本的边缘进行平滑处理。此选项会带来性能开销。使用基于 MXD 的地图服务时(相对于已在 MSD 文件中定义了抗锯齿功能的基于 MSD 的地图服务而言),性能开销较大。抗锯齿功能不会给栅格影像带来任何益处。

如果地图服务源是 MSD 文件且已在 MSD 中定义了抗锯齿功能,则无论是否选择此工具中的该选项,抗锯齿功能都会应用到缓存中。

  • NONE将不会应用抗锯齿功能。这是默认设置。
  • ANTIALIASING将应用抗锯齿功能。
Boolean
cache_format
(可选)

为缓存中的切片选择 PNG8、PNG24、PNG32、JPEG 或 MIXED 文件格式。PNG8 为默认选项。

  • PNG8一种无损 8 位彩色图像格式,使用索引调色板和 alpha 表。每个像素存储一个用于查看调色板中的颜色和 alpha 表中的透明度的值 (0-255)。8 位 PNG 类似于 GIF 图像,并对多数 Web 浏览器的透明背景提供最佳支持。
  • PNG24一种无损三通道图像格式,支持很大的颜色变化(1600 万个颜色),并对透明度提供有限的支持。每个像素包含三条 8 位颜色通道,并且文件头中包含用于表示透明背景的单一颜色。可在 ArcMap 中对表示透明背景颜色的颜色进行设置。低于版本 7 的 Internet Explorer 版本不支持此透明类型。采用 PNG24 的缓存比采用 PNG8 或 JPEG 的缓存大得多,并且需要占用更多磁盘空间和更大带宽才能为客户端提供服务。
  • PNG32一种无损四通道图像格式,支持很大的颜色变化(1600 万个颜色),并支持透明度。每个像素包含三条 8 位颜色通道和一条表示每个像素的透明度级别的 8 位 alpha 通道。虽然 PNG32 格式允许部分透明像素位于范围 0 到 255 之间,但是 ArcGIS Server 缓存生成工具仅将完全透明值 (0) 或完全不透明值 (255) 写入透明度通道。采用 PNG32 的缓存比采用其他受支持格式的缓存大得多,并且需要占用更多磁盘空间和更大带宽才能为客户端提供服务。
  • JPEG一种有损三通道图像格式,支持很大的颜色变化(1600 万个颜色),但不支持透明度。每个像素包含三条 8 位颜色通道。采用 JPEG 的缓存可对输出质量和大小加以控制。
  • MIXED在检测到透明度的所有位置(也就是数据框背景可见的所有位置)创建 PNG 32。为其余切片创建 JPEG。这可降低平均文件大小,同时可在其他缓存上进行完全叠加。
String
tile_compression_quality
(可选)

针对 JPEG 压缩质量输入一个介于 1 和 100 之间的值。对于 JPEG 切片格式,默认值为 75;对于其他切片格式,默认值为 0。

仅 JPEG 格式支持压缩。如果选择较高的值,则生成的文件较大,但图像质量较好。如果选择较低的值,则生成的文件较小,但图像质量较差。

Long
storage_format
(可选)

选择是否使用“紧密”存储格式将切片分组到大型 .bundle 文件中,而不选择使用“松散”格式将每个切片存储为单独的文件。紧密存储格式在存储和移动性方面更为有效。

String
use_local_cache_dir

选择 bundle 文件是否应在创建紧密缓存时写入服务器上的本地目录,而不是直接写入共享的缓存目录。如果选择此选项,bundle 文件在完成后将写入共享的缓存目录。当多台计算机处理缓存作业时,此选项可提升性能。

  • TRUE包中存储的切片将写入本地目录,然后在完成包后复制到共享的缓存目录。这是存储格式为“紧密”时的默认设置。
  • FALSE切片将直接写入共享的缓存目录。存储格式为“松散”时,这是唯一有效的选项。
Boolean

代码示例

在本例中,创建了一个采用“标准”比例类型的地图缓存。

# 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

# 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()

在本例中,创建了一个采用“自定义”比例的地图缓存。

# 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

# 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()

在本例中,创建了一个采用预定义切片方案的地图缓存。

# 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

# 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()

环境

此工具不使用任何地理处理环境

相关主题

许可信息

ArcView: 是
ArcEditor: 是
ArcInfo: 是

7/10/2012