Pythonarcpy.mapping.贴图刷新文件

2024-06-11 21:50:08 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法在不保存文档的情况下,用python中新添加的层刷新ArcMap(.mxd)文档?在

我使用python完成了一系列任务的自动化,最后一步是将输出转储到arcmap文档中并弹出文档,以便脚本用户可以查看输出数据并决定是否/在哪里保存.mxd。在

我创造了一个默认.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)

Tags: 数据用户文档脚本dfextentmappingarcpy
1条回答
网友
1楼 · 发布于 2024-06-11 21:50:08

如果不保存更改,这是行不通的。想想看。您对脚本所做的是更改mxd的内存副本。如果不写出来,就无法打开此副本的另一个实例。我会先复制一个默认值,如下所示:

DefaultMXD = r"C:\...\Default.mxd"
newmxd = r'c:\temp\temp.mxd'
shutil.copy2(DefaultMXD, newmxd)

然后对新的mxd进行更改,保存并使用操作系统启动文件或者子流程.Popen打开它。这让你默认.mxd不变,这是我想你想要的。在

祝你好运,迈克

相关问题 更多 >