多GDB內同名文件合併至新GDB小工具

接到朋友的小需求,文件夾下有多個GDB,各個GDB下又分別有各自的要素文件。app

思路上的核心方法是函數

walk = arcpy.da.Walk(workspace, datatype="FeatureClass")工具

arcpy.da.Walk函數可便利workspace下全部的文件路徑、文件名、文件夾。spa

相比os模塊的walk函數不支持讀取GDB,arcpy的Walk支持GDB下的要素類讀取。.net

 

1. 用walk讀取全部要素類後,將全部要素類名添加到一個LIST裏,將全部要素類路徑+文件名添加到另外一個LIST裏。code

2. 在文件名的for循環下將全部同名要素類添加到一個LIST裏。blog

3. 使用 arcpy.Merge_management合併LIST並輸出。get

4. 包裝成GP工具。for循環

 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工具參數class

 

 GP工具界面

 

GP工具下載(ARCGIS版本爲10.4):

https://download.csdn.net/download/qq_39755485/10499571

相關文章
相關標籤/搜索