在控制程序进行地图服务更新时,如果只是修改MXD中的渲染是不行的,需要写脚本将MXD转换为MSD,替换原有的MSD文件,并重新启动地图服务,这样才能读取到新的渲染方式。

附上Python代码:

 # -*- coding: utf-8 -*-
# nightroad
import arcpy, os def Mxd2Msd(mxdPath):
#检查mxd和msd文件是否存在
arcpy.AddMessage("CheckPath")
if os.path.exists(mxdPath) == False:
return # 打开mxd文档
try:
arcpy.AddMessage("CheckMxdFile")
mxd = arcpy.mapping.MapDocument(mxdPath)
except Exception, e:
arcpy.AddMessage("open mxd error: ", e)
return
else:
arcpy.AddMessage("mxd Open Success") # 获取默认的数据框
arcpy.AddMessage("mxdRead")
df = ""
try:
frames = arcpy.mapping.ListDataFrames(mxd, "图层")
if len(frames) == 0:
frames = arcpy.mapping.ListDataFrames(mxd, "Layers")
df = frames[0]
except Exception, e:
arcpy.AddMessage("MxdFrameReadFail:", e)
return # 构造msd文档名称
msdPath = mxdPath.replace(".mxd", ".msd")
# 将mxd转为msd
arcpy.AddMessage("Mxd2Msd")
arcpy.mapping.ConvertToMSD(mxd, msdPath, df, "NORMAL", "NORMAL") mxdPath=arcpy.GetParameter(0)
Mxd2Msd(mxdPath)
05-11 17:57