批量导出mxd至jpg
原来的时候分别写了两个脚本来用不同的方式来导出图片,后来觉得合成一个为好,于是就对原来的脚本做了一下修改。新功能是可以设定是否遍历子目录以导出其中的mxd成jpg图片(可以设定导出的jpg放到各自mxd相应的文件夹或最顶级文件夹),还可以设定导出图后关机,这样我们就可以下班之后来让电脑来处理这样乏味的工作了。
使用方法是将脚本放到文本文件中,更改后缀为py,用IDLE打开,File - >Open -> run -> run Module。
-----------------------------------------------------------------------------------------------------------------------------------------------
#-*- coding: UTF-8 -*-
##########################################################################################
#Author:mtl
#用途:将一个文件夹中的所有mxd文件(包括所有子目录中的mxd文件)导出成jpg图片,并放到各自的目录下。
#用法:用记事本打开,将参数path更改成指定的文件路径,注意将反斜杠“\”改成正斜杠“/”;res是设定的dpi值。
#运行方法:打开Python2.6中的IDLE,File - >Open -> run -> run Module。
##########################################################################################
import arcpy, os, time
#存放mxd文件的目录,也可以是存放mxd文件的上一级目录。
path = ur'C:\Documents and Settings\Administrator\桌面\导图'
#导出jpg文件的分辨率。
res = 100
#mode1可选值为0或1,0表示导出path这个目录及其所有层次子目录中的mxd,1表示只导出path这个目录的mxd文件。
mode1 = 0
#mode2可选值为0或1,0表示mxd导出的图片放到与mxd相同的文件夹下,1表示放到path下面。
mode2 = 0
#mode3可选值为0或1,0表示导图结束后不关机,1表示结束后关机。
mode3 = 0
def main():
for root, dirs, files in os.walk(path):
if mode2 == 0:
temp_path = root
else:
temp_path = path
for afile in files:
if afile[-4:].lower() == '.mxd':
mxd = arcpy.mapping.MapDocument(os.path.join(root,afile))
arcpy.mapping.ExportToJPEG(mxd, os.path.join(temp_path,afile[:-3] + 'jpg'), resolution = res)
del mxd
print ur'succeed in exporting file ' + afile[:-3] + ur'jpg'
if mode1 != 0:
break
if mode3 != 0:
os.system('shutdown -s -t 120')
if __name__ == "__main__":
main()