一、需要实现的功能 批量的遍历文件夹下的MXD工作空间,并且获取其名字,并查询数据库中与之同名的图层,之后将同名的图层添加到MXD工作空间中。 二、实现思路 1、首先是使用listdir函数,遍历文件夹下的所有MXD工作空间 2、遍历数据库中的所有要素图层 3、将MXD工作空间的名称和要素图层的名称进行对比,当名称相同时,将对应的要素图层添加到MXD工作空间中。 三、代码解释 import arcpy,os, time import string import sys reload(sys) sys.setdefaultencoding( "utf-8" ) #以上五句代码是导入相应的模块 path = arcpy.GetParameterAsText(0) #获取MXD工作空间文件夹路径 Fpath = arcpy.GetParameterAsText(1)#获取要素图层所在数据库的路径 for afile in os.listdir(path): #遍历文件夹下 if afile[-3:].lower() == 'mxd': #遍历文件夹下的MXD工作空间 mxdname = afile[0:-4] #获取MXD工作空间的名称 arcpy.AddMessage(str(afile[0:-4])) arcpy.env.workspace = Fpath #设置数据库为当前操作空间 fclist = arcpy.ListFeatureClasses() #使用ListFeatureClasse函数遍历数据库的图层 for fc in fclist:#对要素图层进行循环遍历 if mxdname==fc: #进行MXD工作空间名称和要素图层名称对比 qspmxd = arcpy.mapping.MapDocument(os.path.join(path,afile)) #打开当前MXD工作空间 df = arcpy.mapping.ListDataFrames(qspmxd, "图层")[0]#查询第一个数据框 lyrB = Fpath + "\\"+fc #设置当前要素图层路径 lyrA=arcpy.mapping.Layer(lyrB) arcpy.AddMessage(str(lyrB)) arcpy.mapping.AddLayer(df,lyrA,"TOP")#插入要素图层到当前工作空间的顶部 qspmxd.save() del qspmxd
|