2012-07-20 2 views
1

문서를 저장하지 않고 파이썬에서 새로 추가 된 레이어로 ArcMap (.mxd) 문서를 새로 고치는 방법이 있습니까?Python arcpy.mapping 및 문서 새로 ​​고침

필자는 일련의 작업을 자동화하기 위해 파이썬을 사용했으며, 마지막 단계는 출력을 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) 

답변

1

변경 사항을 저장하지 않으면 작동하지 않습니다. 그것에 대해 생각해보십시오. 스크립트로하고있는 일은 mxd의 메모리 내 사본을 변경하는 것입니다. 이 사본을 쓰지 않고 다른 인스턴스를 여는 방법은 없습니다. ,

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

는 그 다음 newmxd에 변경 사항을 저장하고 열어 os.startfile 또는 subprocess.Popen을 사용 : 내가 처음이 같은과 기본의 사본을 만들 것입니다. 이렇게하면 Default.mxd가 변경되지 않은 상태로 유지됩니다.

행운을 빌어 Mike