多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并输出。

扫描二维码关注公众号,回复: 1766033 查看本文章

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

猜你喜欢

转载自www.cnblogs.com/EVELE/p/9227871.html
GDB