3 votos

Combinar archivos shape en carpetas y subcarpetas con arcpy

Intento fusionar 20 shapefiles para obtener un shapefile que incluya todas las características. Todos los shapefiles se llaman "migrashim", y se extienden en una carpeta grande que se divide en muchas subcarpetas. Mi código es:

import arcpy,os,sys,string,fnmatch
import arcpy.mapping
from arcpy import env

rootPath = 'C:\Project\layers'
pattern = 'migrashim.shp'
counter = 0
for root, dirs, files in os.walk(rootPath):
    for filename in fnmatch.filter(files, pattern):
        print( os.path.join(root, filename))
        arcpy.Merge_management(["migrashim.shp"], r"C:\Project\layers\migrashim_total.shp")
        counter = counter + 1
print counter

y me da un error:

ERROR 000732: Conjuntos de datos de entrada: El conjunto de datos migrashim.shp no existe o no se admite Fallo en la ejecución (Merge).

7voto

Tedy Puntos 46

Así que actualmente está utilizando la entrada del nombre de su archivo de forma, pero sin indicar un directorio. La ruta completa es necesaria para que la fusión funcione. O puedes establecer el espacio de trabajo de tu entorno cada vez que encuentres un archivo. Además, no estás fusionando nada en realidad, ya que sólo tienes una única entrada.

Yo rellenaría una lista con todas las coincidencias encontradas, de modo que puedas utilizarla para realizar una única fusión al final de tu código.

Prueba algo así:

matches = []

for root, dirs, files in os.walk(rootPath):
    for filename in files:
        if filename == "migrashim.shp":
            match = ( os.path.join(root, filename))
            matches.append (match)
            counter = counter + 1

arcpy.Merge_management(matches, r"C:\Project\layers\migrashim_total.shp")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X