ArcPy创建地图服务器缓存

来源:互联网 发布:中国自然灾害的数据 编辑:程序博客网 时间:2024/06/06 08:26

ArcPy将地图文档 (.mxd) 文件转换为服务定义草稿 (.sddraft) 文件,此时的地图服务是没有缓存的,如果需要创建缓存需要使用ArcToolBox里面的“创建地图服务器缓存”工具。
可以在ArcCatalog里的“系统工具箱->Server Tools->缓存->创建地图服务器缓存”,在“地图服务器缓存”工具右键->帮助,就可以看到ArcGIS 帮助文档对工具的介绍以及ArcPy的使用。


具体的使用可以参考ArcGIS帮助文档,在这里贴出代码和简单介绍参数的含义:

import arcpyfrom arcpy import envimport os, sys, time, datetime, traceback, string# Set environment settingsenv.workspace = "D:/Project" #工作目录# List of input variables for map service propertiesconnectionFile = env.workspaceserver = "test163"   #ArcPy创建的连接文件,放在工作目录下serviceName = "WuHanTest.MapServer"  #发布地图服务的名称inputService = connectionFile + "\\" + server + "\\" + serviceNameserviceCacheDirectory = "D:\\arcgisserver\\directories\\arcgiscache" #ArcGIS缓存位置tilingSchemeType = "PREDEFINED"  #采用预定义的方案scalesType = "CUSTOM"numOfScales = "13"   #切片等级数,13级dotsPerInch = "96"tileSize = "256 x 256"predefinedTilingScheme = "D:/Project/conf.xml" #切片方案文件tileOrigin = "-20037508.3427892 20037508.3430388"  #切图原点scales = "73957338.86;36978669.43;18489334.72;9244667.36;4622333.68;2311166.84;1155583.42;577791.71;288895.85;144447.93;72223.96;36111.98;18055.99"  #分辨率cacheTileFormat = "PNG"  tileCompressionQuality = "0"storageFormat = "EXPLODED"  #松散型切片currentTime = datetime.datetime.now()arg1 = currentTime.strftime("%H-%M")arg2 = currentTime.strftime("%Y-%m-%d %H:%M")file = 'D:/Project/report_%s.txt' % arg1# print results of the script to a reportreport = open(file,'w')try:    starttime = time.clock()    result = arcpy.CreateMapServerCache_server (inputService,                                                serviceCacheDirectory,                                                tilingSchemeType, scalesType,                                                numOfScales, dotsPerInch,                                                tileSize, predefinedTilingScheme,                                                tileOrigin, scales,                                                cacheTileFormat,                                                tileCompressionQuality,                                                storageFormat)    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 ")    print "Created cache schema using predefined tiling schema for "    serviceName + " 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 tiling scheme"report.close()

参数说明:
server:ArcGIS的连接文件,后缀为ags,不知道怎么生成的,请看我之前的博客。
serviceName:发布的地图服务的名称,不记得发布名称的可以在ArcCatalog里面找到。
这里写图片描述
serviceCacheDirectory:ArcGIS缓存的位置,我这里使用的是安装默认的位置。
tilingSchemeType:因为要创建的缓存是png的自己的切片,所以这里使自定义方案。
predefinedTilingScheme:采用的切片方案文件,最好是自己的切片就带有这个文件,没有的话也可以自己生成。跟“创建地图服务器缓存”在同一个位置下,“生成地图服务器缓存切片方案”。使用这个就可以制作xml文件。
tileOrigin:切片原点,在xml文件里面可以找到。找到TileOrigin标签,里面的就是原点。
这里写图片描述
Scale:地图等级的分辨率,也可以在xml文件中找到。

大致需要修改的参数就这么多,不明白的请仔细阅读ArcGIS的帮助文档,比我讲的详细多了。说句良心话,ArcGIS帮助文档真的是我见过最好的帮助文档,没有之一!里面都讲的很详细很清楚,还附带有示例,好好利用帮助文档。