生成地图服务器缓存 (服务器)
摘要
为 ArcGIS Server 地图服务生成静态影像切片的缓存。
此工具已被废弃。新的工作流是先通过“创建地图服务器缓存”对缓存进行初始化,然后再使用“管理地图服务器缓存切片”将切片添加到缓存中。
用法
-
此工具只适用于 ArcGIS Server 地图服务。
-
运行此工具之前,请将地图服务配置为尽可能多地使用实例。这会大幅缩短缓存生成时间。
-
一次只能缓存一个数据框。如果还需要其他数据框,则必须为各数据框分别生成与各地图服务相关联的缓存。
-
切片方案决定着客户端如何引用缓存中的切片。您可以创建新的切片方案,还可以使用由“生成地图服务器缓存切片方案”工具创建的现有切片方案。
-
大多数情况下将使用融合缓存。对于每个指定的比例级别,地图中的所有图层都将合成为单个图像,然后再分割成许多切片。
-
如果需要切换图层的打开和关闭状态,请使用多图层缓存。
-
“比例级数”参数表示缓存中工具创建图层时使用的不同地图比例的数量。
-
为超大型地图范围(例如面积广阔的州、省或国家/地区)计算较大的地图比例级别时,创建时间可能较长。例如,为整个北美洲计算地图比例超过 1:100,000 的切片大小。
-
在缓存中应用影像压缩的主要优点是可以减小影像切片的大小,从而提高它们在网络中传输的性能。由于客户端和服务器之间传输的数据减少,因此可以缓存大型、无缝栅格数据集(可达几兆兆字节),从而得以在客户端快速显示。另一个优点是磁盘上缓存的大小将大幅减小。
-
如果使用此工具将其他级别(比例)添加到现有缓存中,请确保将压缩系数指定为与原始级别中使用的压缩系数相同。
-
JPEG 最适用于栅格数据。如果用于矢量数据,行和文本可能会变得模糊。
-
多图层缓存不支持 JPEG 文件格式。
-
一旦生成缓存,就无法对缓存切片格式进行更改。必须先删除缓存,然后才能将其切换到其他文件格式。
-
如果希望缓存切片到客户端的传送性能达到最佳,请选择 JPEG 图像格式。如果希望传送性能和透明度支持能够更好的结合,请选择 PNG8 图像格式。
-
抗锯齿选项用于对线和文本的边缘进行平滑处理,但对栅格图像的质量增强效果并不明显。
-
此工具不接受任何已指定的环境设置。
语法
参数 | 说明 | 数据类型 |
server_name |
生成缓存时所使用的 ArcGIS Server 的主机名。 | String |
object_name |
生成缓存时所使用的地图服务的名称。 | String |
data_frame |
要缓存的地图文档数据框。请确保选择的数据框与为地图服务选择的数据框相同。 | String |
out_folder |
此地图服务缓存的父目录。 | String |
tiling_scheme_type |
选择采用“新建”还是“预定义”切片方案。您可以通过此工具定义新的切片方案,也可以加载预定义的方案文件 (.xml)。预定义方案的创建可以通过运行“生成地图服务器缓存切片方案 GP”工具来实现。 默认设置为“新建”。 | Boolean |
scales_type |
设置比例级别
| Boolean |
num_of_scales |
要在缓存中创建的比例级数。 | Long |
dpi |
专用输出设备的每英寸点数。如果所选择的 DPI 与输出设备的分辨率不匹配,则地图切片将显示错误比例。默认值为 96。 | Long |
tile_width |
输出地图切片的宽度(以像素为单位)。较小的宽度可提高从缓存请求切片的应用程序的性能,这是因为只有较少的数据通过线路。但切片越小,缓存越大且创建时间越长。默认切片宽度为 512。 | Long |
tile_height |
输出地图切片的高度(以像素为单位)。较小的高度可提高从缓存请求切片的应用程序的性能,这是因为只有较少的数据通过线路。但切片越小,缓存越大且创建时间越长。默认切片高度为 512。 | Long |
map_or_layers (可选) |
选择生成“融合”或“多图层”缓存:
| Boolean |
tiling_schema (可选) |
预定义切片方案的路径。 | String |
tile_origin (可选) |
在源地图文档空间参考的坐标中指定切片方案原点(左上角)。源地图文档的范围必须在此原点范围内(但不必与原点重合)。 | String |
levels Scale; Scale... (可选) |
缓存地图服务使用的比例。 | String |
layer Layer; Layer... (可选) |
选择 MULTI_LAYER 缓存类型时要包含在缓存中的图层。 | String |
thread_count (可选) |
生成缓存时所使用的地图服务实例数。 | 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)