合并不同gdb下的相同要素_多GDB内同名文件合并至新GDB小工具

该博客介绍了如何使用Python的arcpy模块遍历多个Geodatabase(GDB)并合并其中名称相同的要素类。首先通过arcpy.da.Walk遍历所有GDB中的要素类,然后收集同名要素类并使用arcpy.Merge_management进行合并。最后,作者将此过程封装成一个GIS GP工具,方便用户操作。
摘要由CSDN通过智能技术生成

接到朋友的小需求,文件夹下有多个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 importarcpy2 importxlrd3 importxlwt4 importos5

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 inwalk:15 for filename infilenames:16 evefeature.append(os.path.join(dirpath, filename))17 if filename not infeature_classes:18 feature_classes.append(filename)19 printfilename20

21 for featurename infeature_classes:22 ls1 =[] #存储同名要素路径+要素名23 for evefeatures inevefeature:24 int1 =len(featurename)25 int1 = int1 - int1 -int126 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值