2014-04-08 2 views
0

안녕하세요 샘플 데이터를 사용하고 있습니다. Shapefile이라는 폴더에는 3 개의 폴더가 있습니다. 각 파일에는 Hazard1.shp, Hazard2.shp, Hazard3.shp이라는 3 개의 shapefile이 있습니다 (각각에 약 3000 개의 레코드가 있습니다). 이 폴더 각각을 반복하고 각 폴더에서 Hazard1.shp을 추출하여 합계라고하는 지오 데이터베이스의 피쳐 클래스에 병합하려고합니다. 이 코드는 수백 개의 폴더를 의미하지만 샘플링 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 

답변

0

폴더를 반복 할 때마다 '합계'기능 클래스를 덮어 쓰고 있습니다.

  • 루프 밖에서 빈 목록을 만들고 반복 할 때마다 fc를 추가 한 다음이 목록의 모든 항목을 병합해야합니다.
  • Merge 대신 Append을 사용하십시오 ('totals'이 이미있는 경우).
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)