迭代文件夹并将shapefile提取到python中的地理数据库

时间:2014-04-08 18:30:41

标签: merge arcpy

您好我正在使用样本数据。在一个名为Shapefile的文件夹中,我有3个文件夹;每个都有3个名为Hazard1.shp的形状文件,Hazard2.shp,Hazard3.shp(每个大约有3000条记录)。我试图遍历每个文件夹并从每个文件夹中提取Hazard1.shp并将其合并到名为totals的地理数据库中的要素类中。这段代码适用于数百个文件夹,但我使用的是3的样本。我运行我的代码,没有错误但是当我检查总数时只有3000条记录 - 从合并中应该有12,000条。我做错了什么?

import os, arcpy.da

print os.getcwd()


for dirname, dirnames, filenames in os.walk('.'):
    for subdirname in dirnames:
        current_dir =  os.path.join(dirname, subdirname)
        arcpy.env.workspace = current_dir
        fcList = arcpy.ListFeatureClasses("Hazard1.shp")
        destination = r"F:\Extraction\GeoDatabase\Total.gdb\totals"
        for fc in fcList:
            print fc
            arcpy.Merge_management(fc,destination)
        break

2 个答案:

答案 0 :(得分:0)

你正在覆盖你的总数'每次迭代文件夹时都会显示要素类。你应该:

  • 在循环外创建一个空列表,并在每次迭代时向其附加fc,然后合并此列表中的所有项目。
  • 或者,更简单地说,使用Append代替Merge(如果'总计已经存在)。

答案 1 :(得分:0)

添加:

Merge = r"F:\Extraction\GeoDatabase\Total.gdb\totals_Merge"

然后你的for循环应该是:

    for fc in fcList:
        print fc
        arcpy.Merge_management([fc,destination],Merge)
        arcpy.Delete_management(destination)
        arcpy.Rename_management(Merge, destination)