|
本帖最后由 zhtleon 于 2013-12-5 23:25 编辑
自制将多个mxd文件导出成PDF文件的脚本工具
级别不够不能发软件,不能发图片,需要的留下邮箱。
功能:某目录下有多个mxd文件需要导出成PDF(或者JPG等格式),一个一个点太慢,做个脚本工具可以批量一次全部导出到目录下的PDF子目录下。
用法:脚本arcpy工具的版本参考添加pytong工具的教程,添加好后只需设置两个参数,在添加的脚本上按右键进入属性对话框,在参数(paramaters)选项卡下设置显示名称(display name)和数据类型(data type)先设置第一行为数据目录,数据类型是文件夹(folder),第二行设置输出目录,数据类型也为文件夹(folder),不同的是第一行下方要设置为input型,第二行下方要设置为output型,设好后脚本就能用了。
(现在的版本只需要设置输入目录就行了),使用方法是代码复制到文本编辑器里,然后把后缀名改为py,然后在arcgis我的工具箱中添加就行了。然后按上面说的设置一行参数。
代码:
import arcpy, os, time, shutil, sys
arcpy.env.overwriteOutput = True
path = arcpy.GetParameterAsText(0)
outfoder = 'PDF'
res = 300
mode1 = 1
mode2 = 1
mode3 = 0
arcpy.env.workspace = path
fcs = arcpy.ListFiles("*.mxd")
fc_count = len(fcs)
arcpy.AddMessage(fc_count)
arcpy.SetProgressor("default", "MXD导出PDF",0, fc_count, 1)
if not os.path.isdir(path):
print ur'没有找到文件夹!'
quit()
else:
arcpy.AddMessage("开始导出:")
def main():
if not os.path.isdir(path + '//' +outfoder):
os.mkdir(path + '//' +outfoder)
else:
shutil.rmtree(path + '//' +outfoder)
os.mkdir(path + '//' +outfoder)
for root, dirs, files in os.walk(path):
if mode2 == 0:
temp_path = root
else:
temp_path = path + '//' +outfoder
for afile in files:
if afile[-4:].lower() == '.mxd':
mxd = arcpy.mapping.MapDocument(os.path.join(root,afile))
arcpy.mapping.ExportToPDF(mxd, os.path.join(temp_path,afile[:-3] + 'pdf'), resolution = res)
del mxd
arcpy.AddMessage(" 成功导出文件")
if mode3 != 0:
os.system('shutdown -s -t 120')
else:
arcpy.AddMessage("成功导出全部文件!")
if __name__ == "__main__":
main()
|
评分
-
查看全部评分
|