如果这是一个简单的解决方案,我很擅长编码任何内容,很抱歉。
当我导出我的地图时,一切都很好,我的脚本完全取代了文本。但是,当我手动打开地图文档以使其可视化时,文本仍然与我更换之前的文本相同。我甚至从该文件夹导出了一个地图而没有替换文本,它显示文本已被替换。我不确定发生了什么。我也使用了arcpy.RefreshActiveView,在mxd.save()之前它仍然不起作用。任何帮助将不胜感激。
import arcpy
import os
import glob
folder = r"C:\Workspace\MapTest"
oldtext = '7351'
newtext = '7352'
mxds = glob.glob(folder + '\\' + '*.mxd')
arcpy.gp.overwriteOutput = True
for mxdFile in mxds:
mxd = arcpy.mapping.MapDocument(mxdFile)
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.text ==oldtext:
elm.text = newtext
eps = mxdFile.replace('mxd', 'eps')
arcpy.mapping.ExportToEPS(mxd,eps)
mxd.save()
del mxd
另外,我不太确定如何将我的eps文档导出到另一个文件夹中。我也很感激你的帮助。
答案 0 :(得分:1)
好吧,我无法解决mxd保存问题 - 你的脚本对我来说非常适合。要将eps保存到另一个文件夹,请执行以下操作:
bn = os.path.basename(mxdFile)[:-3]
eps = os.path.join('C:\\temp', bn + 'eps')
arcpy.mapping.ExportToEPS(mxd, eps)
mxd.save()
对不起,我对保存业务无能为力。 ESRI产品有时会做一些奇怪的事情,一段代码在一台机器上工作而在另一台机器上运行并不常见。你的代码看起来对我很好,并且在我的测试中做了它应该做的事情。
祝你好运,麦克