通常我们使用ArcCatalog或者ArcGIS Server Manager等图形界面工具来发布ArcGIS服务,然而有些情况下,比如需要发布的服务数量很多,而且需要不定期随时发布的时候,再使用这些工具进行人工操作就显得力不从心了。ArcGIS的强大之处就在于其为我们提供了多种选择,我们可以通过Python编写脚本,调用ArcPy模块中的功能来实现自动扫描文件夹并将其中的地图文档发布为地图服务。
本文将创建一个publishHelper.py文件,在其中编写两个方法,一个是PublishAll,用来遍历文件夹并调用另一个方法PublishMxd,后者完成具体的服务发布工作。
在服务发布之前,需要首先检查mxd文档路径,读取mxd文档,转为msd,分析文档等,最后才是发布服务。
# -*- coding: utf-8 -*-
import arcpy, os
__name__ = 'publishHelper'
# 将指定目录下所有的.mxd文档发布为地图服务
# folder:包含mxd文档的文件夹路径
# serviceDir:服务目录URL,例如http://localhost/arcgis/rest/services
# serviceFolder:服务所在文件夹,如果为空,则表示根目录
def PublishAll(folder,serviceDir,serviceFolder):
print "检查文件夹路径……"
if os.path.isdir(folder) == False:
print "输入的文件夹路径无效!"
return
print "遍历文件夹……"
files = os.listdir(folder)
for f in files:
if f.endswith(".mxd"):
mxdPath = os.path.join(folder, f)
print "publishing: " + f
PublishMxd(mxdPath, servi