在控制程序进行地图服务更新时,如果只是修改MXD中的渲染是不行的,需要写脚本将MXD转换为MSD,替换原有的MSD文件,并重新启动地图服务,这样才能读取到新的渲染方式。
附上Python代码:
1 # -*- coding: utf-8 -*- 2 # nightroad 3 import arcpy, os 4 5 def Mxd2Msd(mxdPath): 6 #检查mxd和msd文件是否存在 7 arcpy.AddMessage("CheckPath") 8 if os.path.exists(mxdPath) == False: 9 return 10 11 # 打开mxd文档 12 try: 13 arcpy.AddMessage("CheckMxdFile") 14 mxd = arcpy.mapping.MapDocument(mxdPath) 15 except Exception, e: 16 arcpy.AddMessage("open mxd error: ", e) 17 return 18 else: 19 arcpy.AddMessage("mxd Open Success") 20 21 # 获取默认的数据框 22 arcpy.AddMessage("mxdRead") 23 df = "" 24 try: 25 frames = arcpy.mapping.ListDataFrames(mxd, "图层") 26 if len(frames) == 0: 27 frames = arcpy.mapping.ListDataFrames(mxd, "Layers") 28 df = frames[0] 29 except Exception, e: 30 arcpy.AddMessage("MxdFrameReadFail:", e) 31 return 32 33 # 构造msd文档名称 34 msdPath = mxdPath.replace(".mxd", ".msd") 35 # 将mxd转为msd 36 arcpy.AddMessage("Mxd2Msd") 37 arcpy.mapping.ConvertToMSD(mxd, msdPath, df, "NORMAL", "NORMAL") 38 39 mxdPath=arcpy.GetParameter(0) 40 Mxd2Msd(mxdPath)