使用地理处理脚本自动执行缓存的创建和更新
如果您使用的底图不太可能发生更改,则您可能只需创建一次缓存。可以使用 ArcCatalog 缓存界面(即,服务属性 对话框的缓存 选项卡)创建缓存。如果数据不经常更改,这也是更新缓存的最适合的方法。
如果您的数据经常更改,也仍然可以使用缓存功能。缓存工具使您可以通过编写脚本来更新缓存并只针对缓存的特定部分进行更新。例如,您可以:
- 仅针对已更改的比例级别更新缓存。
- 仅更新位于某要素类边界内的区域更新缓存。
- 使用 Windows 计划任务 等工具自动完成缓存维护。
自动执行缓存过程的方法是编写使用服务器工具(可从地理处理菜单访问)的脚本。在 Linux/Solaris 中,已为您创建了缓存脚本,这些脚本与 ArcGIS Server SOC 组件一同安装,安装位置为 <ArcGIS Server 安装目录>/arcgis/server<10.0>/java/tools/caching。本帮助主题列出了可供您使用的工具,并列举了一些示例以帮助您编写脚本。此外,本帮助还介绍了如何将 ArcGIS Server 9.2 中的早期脚本迁移到后期版本中。
缓存工具
服务器工具工具箱既包含地图缓存工具,也包含 Globe 缓存工具。
地图缓存工具
以下工具专门用于地图缓存。这些工具反映了创建切片方案以及用切片填充缓存的模式。
- 创建地图服务器缓存 - 初始化缓存并设置切片方案。此工具不会创建任何切片。要创建切片,应使用管理地图服务器缓存切片。
- 管理地图服务器缓存切片 - 创建新切片、更换旧切片,或者从缓存删除切片。
- 管理地图服务器缓存比例 - 在现有缓存中添加比例或从中删除比例。
- 删除地图服务器缓存 - 删除所有缓存切片和缓存的文件夹结构。
常用的脚本工作流程是:使用创建地图服务器缓存创建新的空缓存,然后使用管理地图服务器缓存切片以切片填充缓存并定期运行更新。
地图缓存标准化工具
如果要建立多个地图缓存以在组织中使用,建议对每个缓存都使用相同的切片方案。使用标准切片方案可以提高缓存的叠加效率。
您所选的切片方案可以是 ArcGIS Online、Google 地图或 Bing 地图等在线地图服务所使用的切片方案,也可以是仅供您的组织内部使用的切片方案。您所在组织的制图标准或常规惯例可能会影响您对切片方案的选择。例如,如果要求您的所有地图都使用极方位立体投影,则不能使用 ArcGIS Online、Google 地图或 Bing 地图的切片方案,而是需要创建您自己的切片方案。
服务器工具工具箱中的生成地图服务器缓存切片方案工具可帮助您创建一个可在整个组织内共享的切片方案。此工具将创建一个 XML 切片方案文件,您可以将其放置在共享位置并在运行创建地图服务器缓存时予以参考。
地图缓存维护和协作工具
缓存工具集中提供了几种工具用于维护缓存并以协作方式建立缓存。
转换地图服务器缓存存储格式工具可将原来的缓存转换为 ArcGIS Server 10 中采用的新的紧凑型格式。实际上,此工具可以在松散(ArcGIS 10 之前的版本)格式和紧凑格式间进行双向转换。
导出地图服务器缓存和导入地图服务器缓存工具可帮助您在各缓存间移动一小部分的切片。当几个组织协作建立一个大型缓存,或者拥有大型缓存的某组织想要与其他组织共享某些切片时,导出和导入缓存会提供很大的帮助。
Globe 缓存工具
以下工具专门用于 Globe 缓存。
- 管理 Globe 服务器缓存切片 - 创建新切片、更换旧切片,或者从 Globe 缓存删除切片
- 删除 Globe 服务器缓存 - 删除缓存
请注意,只有两个工具适用于 Globe 缓存。从本质上讲,所有 Globe 服务都有一个在启动服务时就自动创建的缓存。此缓存使用一个内置的切片方案,该方案对于所有 Globe 服务都是相同的。因此,没有任何工具用于创建新 Globe 缓存或切片方案。
您可以使用管理 Globe 服务器缓存切片以切片完全填满缓存,也可以使用该选项仅对选定的区域和细节级别进行缓存。
在脚本中使用缓存工具
尽管可以从目录 或搜索 窗口手动打开缓存工具,但是更高效的做法是编写一个地理处理脚本并将一个或多个要运行的工具包含在其中。然后可以设置此脚本自动运行。
脚本示例:更新地图缓存
如果您的数据频繁更改,建议通过编写脚本来更新缓存。您可以创建一个运行更新工具的 Python 脚本。您可以在记事本内编写 Python,也可以使用 IDLE 或 PythonWin 之类的开发环境。
该脚本不必很复杂。它只需要定义工具的参数并运行工具即可。下面的 Python 脚本将运行管理地图服务器缓存切片工具以重新创建整个缓存:
# This script updates a map cache containing changing data # Any line that begins with a pound sign is a comment and will not be executed # These lines are used to access ArcGIS geoprocessing tools import arcpy, sys from arcpy import env # Here is where you define the input parameter values for the update tool. # Empty quotes take the default value. server = "MyServer" service = "Precipitation" dataFrame = "Layers" inputLayers = "" extent = "" scales = "128000;64000;32000;16000" updateMode = "Recreate All Tiles" threadCount = "2" antialiasing = "NONE" pathToFeatureClass = "" ignoreStatus = "" # These lines run the update tool try: print 'Starting Cache Update' result = arcpy.ManageMapServerCacheTiles_server(server, service, dataFrame, inputLayers, scales, updateMode, extent, threadCount, antialiasing, pathToFeatureClass, ignoreStatus) while result.status < 4: time.sleep(0.2) resultValue = result.getMessages() print str(resultValue) print 'Finished Cache Update' # If there's a failure, these lines get the messages except Exception, e: tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno
请确保对所有输入参数使用正确的语法,这一点很重要。有关每种工具的各参数说明和示例,请查阅 ArcGIS Desktop 帮助的地理处理工具参考手册。例如,上面所使用的管理地图服务器缓存切片工具的参考主题为:管理地图服务器缓存切片(服务器)。
如果您是 Python 的初学者,下面的资源可以帮助您了解更多知识:
- 什么是 Python?- ArcGIS Desktop 帮助以该主题为入手点对 Python 脚本进行了介绍。
- 导出模型 - 如果您已在 ModelBuilder 中创建了模型,可以将它们导出到 Python 以查看对应脚本的具体内容。
设置脚本定期运行
您可以将脚本保存为 Python 脚本文件 (.py)。在 Windows Explorer 中双击脚本即会让其运行。这种方法可用于测试,但在多数情况下,最好设置脚本定期自动运行。
您的操作系统中有几个工具可以帮助您计划像运行脚本这样的任务。在 Windows 中,可以使用计划任务 或 schtasks 命令。您需要提供脚本文件的位置、所期望的脚本运行频率以及该任务在运行时使用的名称和密码。有关计划任务的详细信息,请参阅以下资源:
- 设置 Python 脚本在规定时间运行
- 设置脚本在规定时间运行(Unix 文档)
- 计划新任务(Microsoft 文档)
- Schtasks 命令行参考(Microsoft 文档)
Linux 用户注意事项
在 Linux 中,在运行用于处理缓存的 Python 脚本前,必须执行命令源 /arcgis/server10.0/servercore/.Server/init_server.sh(详见在 Linux/Solaris 上查看和管理网络端口的步骤 2)。
如果您曾使用过 ArcGIS Server 9.2 的服务器工具工具箱,则会注意到 9.3 版以及后期版本中的某些变更。ArcGIS Server 9.2 中的某些工具已被弃用。之所以仍将它们包含在软件中,是为了便于您的现有脚本能够继续运行,但您不能将它们添加到工具箱,也无法通过命令行获取它们。您只能在脚本环境中使用它们。
下表列出了已弃用的工具以及它们在 9.3 版及后期版本中的替代工具:
9.2 版中的弃用工具 |
替代工具 |
生成地图服务器缓存 |
|
更新地图服务器缓存 |
管理地图服务器缓存切片 |
生成 Globe 服务器缓存 |
管理 Globe 服务器缓存切片 |
更新 Globe 服务器缓存 |
管理 Globe 服务器缓存切片 |
- 生成地图服务器缓存 - 此工具用于初始化地图缓存、设置切片方案并在缓存中创建所有切片。在 9.3 以及后期版本中,可使用创建地图服务器缓存初始化缓存和设置切片方案。然后,使用管理地图服务器缓存切片为缓存创建部分或全部切片。
- 更新地图服务器缓存 - 此工具用于创建切片、更换切片或从地图缓存中删除切片。在 9.3 以及后期版本中,可使用管理地图服务器缓存切片,它的作用与前者相同,但具有更大的灵活性,能够仅更新选定的缓存区域。
- 生成 Globe 服务器缓存 - 此工具用于在 Globe 缓存中生成所有切片。在 9.3 以及后期版本中,可使用管理 Globe 服务器缓存切片来为 Globe 缓存创建部分或全部切片。
某些新工具中的参数顺序已改变。例如,在 ManageMapServerCacheTiles 中,constraining_extent 目前是一个必需参数,在参数列表中紧跟在 update_mode 后面。在更新脚本时,请始终查阅最新的地理处理工具参考文档。