描述
为 ArcGIS Server 地图服务生成静态图像切片的缓存。
使用方法
此工具只适用于 ArcGIS Server 地图服务。
运行此工具之前,先配置地图服务以使用尽可能多的实例。这会大幅缩短缓存的生成时间。
一次只能缓存一个数据框。如果需要对其他数据框创建缓存,则必须为各数据框分别生成与各独立的地图服务相关联的缓存。
切片方案决定着客户端如何引用缓存中的切片。您可以创建新的切片方案,也可以使用由“生成地图服务器缓存切片方案”工具创建的现有切片方案。
大多数情况下将使用“融合”缓存。对于每个指定的比例级别,地图中的所有图层都将合成为单个图像,然后再分割成许多切片。
如果需要切换图层的打开和关闭状态,请使用“多图层”缓存。
“比例级数”参数表示缓存中工具创建图层时使用的不同地图比例的数量。
为超大型地图范围(例如面积广阔的州、省或国家/地区)计算较大的地图比例级别时,缓存创建的时间可能较长。例如,为整个北美洲计算地图比例大于 1:100,000 的切片大小。
在缓存中应用图像压缩的主要优点是可以减小图像切片的大小,从而提高它们在网络中传输的性能。由于客户端和服务器之间传输的数据减少,因此可以缓存大型、无缝栅格数据集(可达几兆兆字节),从而得以在客户端快速显示。另一个优点是磁盘上缓存的大小将大幅减小。
注意,如果使用此工具将其他级别(比例)添加到现有缓存中,请确保将压缩系数指定为与原始级别中使用的压缩系数相同。
JPEG 最适用于栅格数据。如果用于矢量数据,行和文本则可能会变得模糊。
多图层缓存不支持 JPEG 文件格式。
缓存一旦生成,就无法对缓存切片格式进行更改。要切换至其他文件格式,则必须删除现有缓存。
如果希望缓存切片到客户端的传输性能达到最佳,请选择 JPEG 图像格式。如果希望传送性能和透明度支持能够更好的结合,请选择 PNG8 图像格式。
抗锯齿选项用于对线和文本的边缘进行平滑处理,但对栅格图像的质量增强效果并不明显。
此工具不接受任何已指定的环境设置参数。
语法
arcpy.server.GenerateMapServerCache(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}, {thread_count}, {Antialiasing}, {cache_format}, {tile_compression_quality})
参数 | 说明 | 数据类型 |
server_name | 用于生成缓存的 ArcGIS Server 的主机名。 | String |
object_name | 用于生成缓存的地图服务的名称。 | String |
data_frame | 要缓存的地图文档数据框。请确保选择的数据框与为地图服务选择的数据框相同。 | String |
out_folder | 此地图服务缓存的父目录。 | String |
tiling_scheme_type | 选择采用 NEW 还是 PREDEFINED 切片方案。可自定义新的切片方案,也可加载预定义的方案文件 (.xml)。预定义方案的创建可以通过运行“生成地图服务器缓存切片方案 GP”工具来实现。 默认设置为 NEW。 | Boolean |
scales_type | 设置比例级别
| Boolean |
num_of_scales | 要在缓存中创建的比例级数。 | Long |
dpi | 专用输出设备的每英寸点数。如果所选择的 DPI 与输出设备的分辨率不匹配,则地图切片将显示错误比例。默认值为 96。 | Long |
tile_width | 输出地图切片的宽度(以像素为单位)。较小的宽度可提高从缓存请求切片的应用程序的性能,这是因为只有较少的数据通过网络。但切片越小,缓存越大且创建时间越长。默认切片宽度为 512。 | Long |
tile_height | 输出地图切片的高度(以像素为单位)。较小的高度可提高从缓存请求切片的应用程序的性能,这是因为只有较少的数据通过网络。但切片越小,缓存越大且创建时间越长。默认切片高度为 512。 | Long |
map_or_layers (可选) | 选择生成FUSED 或 MULTI_LAYER 缓存:
| Boolean |
tiling_schema (可选) | 预定义切片方案文件的路径。 | String |
tile_origin (可选) | 指定在源地图文档空间参考的坐标中切片方案的原点(左上角)。源地图文档的范围必须在此原点范围内(但不必与原点重合)。 | String |
levels [Scale; Scale...,...] (可选) | 缓存地图服务时所使用的比例。 | String |
Layer [Layer; Layer...,...] (可选) | 选择 MULTI_LAYER 缓存类型时要包含在缓存中的图层。 | String |
thread_count (可选) | 生成缓存时所使用的 MapServer 实例数。 | Long |
Antialiasing (可选) | 选择是否在渲染切片时使用抗锯齿功能。如果选择了 ANTIALIASING,则会对线、边框和文本的边缘进行平滑处理。此选项会带来性能开销。栅格数据不会获得任何益处。 | Boolean |
cache_format (可选) | 为缓存中的切片选择 PNG8、PNG24、PNG32 或 JPEG 文件格式。PNG24 为默认选项。
| String |
tile_compression_quality (可选) | 针对 JPEG 压缩质量输入一个介于 1 和 100 之间的值。对于 JPEG 切片格式,默认值为 75;对于其他切片格式,默认值为 0。 仅 JPEG 格式支持压缩。压缩等级取决于数据,但也可通过更改压缩质量进行控制。选择较高的值,则生成的图像的压缩程度较低,但质量较高。如果选择了较低的值,则生成的图像的压缩程度较高,但质量较低。 | Long |
代码示例
# Script Name: Generate Fused Map Server Cache
# Description: Generates a fused map server cache using PNG8 image format
# Uncomment sys.argv[] lines to accept arguments from the command line.
# Import standard library modules
import sys, string, os, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
# Set the path to the cache.
# Example: \\\\myServer\\arcgiscache\\MyServiceFolder_MyService\\
out_folder = "\\\\myServer\\arcgiscache\\MyServiceFolder_MyService\\"
#out_folder = sys.argv[1]
# Set the SOM server name
# Example: "mySOM"
server_name = "mySOM"
#server_name = sys.argv[2]
# Set the object_name
# Example: "MyServiceFolder/MyService"
object_name = "MyServiceFolder/MyService"
#object_name = sys.argv[3]
# Set the data frame
# Example: "Layers"
data_frame = "Layers"
#data_frame = sys.argv[4]
# Set the map cache tiling origin
# Example: "-180 90"
tile_origin = "-180 90"
#tile_origin = sys.argv[5]
# Set the scale levels for the cache.
# Example: "2000000;500000;250000"
scales = "2000000;500000;250000"
#scales = sys.argv[6]
# Set the layers to cache.
# Example: "My First Layer;My Second Layer;My Third Layer"
layers = "My First Layer;My Second Layer;My Third Layer"
#layers = sys.argv[7]
# Set number of instances to use while updating the cache
# Example: "3"
thread_count = "3"
#thread_count = sys.argv[8]
# Set cache tile image format.
# Example: "PNG8"
cache_format = "PNG8"
#layers = sys.argv[9]
# Non-argument variable declarations
tiling_scheme_type = "NEW"
tiling_schema = ""
scales_type = "STANDARD"
num_of_scales = "3"
dpi = "96"
tile_width = "512"
tile_height = "512"
map_or_layers = "FUSED"
antialiasing = "ANTIALIASING"
tile_compression_quality = "0"
try:
print 'Starting Cache Generation'
gp.GenerateMapServerCache(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, scales, layers, thread_count, antialiasing, cache_format, tile_compression_quality)
print 'Finished Cache Generation'
except:
gp.AddMessage(gp.GetMessages(2))
print gp.GetMessages(2)
环境
此工具不使用任何地理处理环境。
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是