生成地图服务器缓存切片方案 (服务器)
摘要
可以生成用于定义比例级别、切片尺寸以及地图服务缓存其他属性的 XML 切片方案文件。如果要创建在多个缓存中使用的切片方案,此工具非常有用。在 ArcCatalog 或管理器中创建缓存时可加载切片方案文件,也可以运行创建地图服务器缓存将切片方案文件作为参数传入。
切片方案是一种源地图文档空间参考与切片格网之间的映射,用于说明客户端如何引用缓存中的切片。切片格网将使用细节等级(比例级别)、行和列参考方案。方案中还将定义缓存中切片的比例级别(细节等级)、切片大小(以像素为单位)以及显示切片时最常用的屏幕分辨率。要生成地图缓存便需要定义切片方案。
用法
如果已在 ArcCatalog 或管理器中定义过缓存,则不必再运行此工具。这表示缓存文件夹中已存在一个切片方案 (conf.xml),因此创建其他缓存时可以参考此方案。
-
默认情况下,切片原点起始于服务的源地图文档所用坐标系的左上角。
-
缓存一经创建,比例级别将成为切片方案中唯一可以更改的部分。使用管理地图服务器缓存比例添加或移除比例级别。
语法
参数 | 说明 | 数据类型 |
map_document |
切片方案中将用到的源地图文档。 | File |
data_frame |
切片方案中将用到的数据框。 | String |
tile_origin |
源数据框空间参考的坐标中切片方案的左上角。 | Point |
tiling_schema |
要创建的切片方案文件的路径和文件名。 | File |
cache_levels |
切片方案中的比例级数。 | Long |
levels [levels,...] |
要包含在切片方案中的比例级别。不使用分数表示比例级别,而使用 500 表示比例 1:500,依此类推。 | Value Table |
dpi |
专用输出设备的每英寸点数。如果所选择的 DPI 与输出设备的分辨率不匹配,则地图切片将显示错误比例。默认值为 96。 | Long |
tile_width |
缓存切片的宽度(以像素为单位)。默认值为 256。为在性能和可管理性之间寻求最佳平衡,应避免偏离标准宽度 256 或 512。 | Long |
tile_height |
缓存切片的高度(以像素为单位)。默认值为 256。为在性能和可管理性之间寻求最佳平衡,应避免偏离标准宽度 256 或 512。 | Long |
代码示例
在本例中,将创建具有四种比例的地图缓存切片方案。
# GeneateMapServerCacheTilingScheme example (stand-alone script) # Name: GeneateMapServerCacheTilingScheme.py # Description: The following stand-alone script demonstrates how to create map # server cache schema using a given map document at a given # "pathForOutputXml" # 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, datetime, traceback, string # Set environment settings env.workspace = "C:/data" # List of input variables for map service properties pathToMapDocument = "C:/data/94/Portland/mxd/_M_Portland_classic_FGDB_Local.mxd" dataFrame = "" pathForXml = "C:/data/port.xml" tileOrigin = "" scales = "4" scaleValues = "500000,250000,125000,64000" tileWidth = "256" tileHeight = "256" dpi = "96" 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.GenerateMapServerCacheTilingScheme_server( pathToMapDocument, dataFrame, tileOrigin, pathForXml,scales, scaleValues, dpi, tileWidth, tileHeight) 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 MapServer cache tiling schema successfully using" + pathToMapDocument + " at "+ pathForXml + " 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 "Created Map server Cache Tiling schema " report.close()