有没有办法在python中使用新添加的图层刷新ArcMap(.mxd)文档而不保存文档?
我使用python来完成一系列任务的自动化,最后一步是将输出转储到arcmap文档中并弹出文档,以便脚本用户可以查看输出数据并决定是否/他们想要保存.mxd。
我创建了一个Default.mxd文档,我在脚本中引用了该文档,但我想将其保持为“只读”,以便用户手动保存自己的文档。但是使用arcpy.mapping模块我不能“看到”mxd中的数据,除非我保存它。有没有办法解决这个问题?
下面是我想要完成的脚本示例。
# Import arcpy module
import os
import arcpy
FGDB = "C:\...\SomeFGDB.gdb"
arcpy.env.workspace = FGDB
RASTER1 = FGDB+"\\RASTER1"
RASTER2 = FGDB+"\\RASTER2"
DefaultMXD = r"C:\...\Default.mxd"
mxd = arcpy.mapping.MapDocument(DefaultMXD)
df = arcpy.mapping.ListDataFrames(mxd, "*")[0]
RASTER1_LYR = arcpy.mapping.Layer(RASTER1)
RASTER2_LYR = arcpy.mapping.Layer(RASTER2)
mxd.activeView = df.name
arcpy.mapping.AddLayer(df, RASTER2_LYR,"TOP")
arcpy.mapping.AddLayer(df, RASTER1_LYR,"TOP")
extent = RASTER1.getExtent()
df.extent = extent
mxd.activeView = df.name
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
##########################################
#I would rather not save the default MXD
#mxd.save()
##########################################
del mxd, df
os.startfile(DefaultMXD)
答案 0 :(得分:1)
如果不以某种方式保存更改,这将无法运行。想一想。您正在使用脚本执行的操作是更改mxd的内存中副本。没有写出来就没有办法打开这个副本的另一个实例。我会首先使用以下内容复制默认值:
DefaultMXD = r"C:\...\Default.mxd"
newmxd = r'c:\temp\temp.mxd'
shutil.copy2(DefaultMXD, newmxd)
然后对newmxd进行更改,保存并使用os.startfile或subprocess.Popen将其打开。这样可以保持Default.mxd不变,这就是我想你想要的。
祝你好运,迈克