多GDB内同名文件合并至新GDB小工具
接到朋友的小需求,文件夹下有多个GDB,各个GDB下又分别有各自的要素文件。
思路上的核心方法是
walk = arcpy.da.Walk(workspace, datatype="FeatureClass")
arcpy.da.Walk函数可便利workspace下所有的文件路径、文件名、文件夹。
相比os模块的walk函数不支持读取GDB,arcpy的Walk支持GDB下的要素类读取。
1. 用walk读取所有要素类后,将所有要素类名添加到一个LIST里,将所有要素类路径+文件名添加到另一个LIST里。
2. 在文件名的for循环下将所有同名要素类添加到一个LIST里。
3. 使用 arcpy.Merge_management合并LIST并输出。
4. 包装成GP工具。
1 import arcpy 2 import xlrd 3 import xlwt 4 import os 5 6 7 workspace = arcpy.GetParameterAsText(0) 8 out = arcpy.GetParameterAsText(1) 9 10 11 evefeature = [] #存储所有要素要素路径+要素名 12 feature_classes = [] #存储所有要素名 13 walk = arcpy.da.Walk(workspace, datatype="FeatureClass") 14 for dirpath, dirnames, filenames in walk: 15 for filename in filenames: 16 evefeature.append(os.path.join(dirpath, filename)) 17 if filename not in feature_classes: 18 feature_classes.append(filename) 19 print filename 20 21 for featurename in feature_classes: 22 ls1 = [] #存储同名要素路径+要素名 23 for evefeatures in evefeature: 24 int1 = len(featurename) 25 int1 = int1 - int1 - int1 26 if evefeatures[int1:] == featurename: 27 ls1.append(evefeatures) 28 arcpy.Merge_management(ls1,out+ "/%s"%featurename) 29 get = featurename + "get" 30 arcpy.AddMessage(get)
GP工具参数
GP工具界面
GP工具下载(ARCGIS版本为10.4):
https://download.csdn.net/download/qq_39755485/10499571