1 votos

¿Lectura de múltiples carpetas de archivos de geodatabases desde un espacio de trabajo utilizando ArcPy?

Mi código sangrado sin el try/except está abajo. Python no reporta errores pero después de que el script termina de ejecutarse, DefineProjection_management() no muestra la ubicación/puntos correctos en un mapa.

Mi estructura de carpetas y el código están por debajo. ¿Puede alguien sugerir una solución, por favor?

import arcpy
from arcpy import env
import os

# set path where the shapefiles are located
arcpy.env.workspace = "Z:/temp1"
inWorkspace = arcpy.env.workspace
workspaces = arcpy.ListWorkspaces("*", "ALL")

for item in workspaces:
    print item
    env.workspace = item
    fcs = arcpy.ListFeatureClasses()

    for file in fcs:
        print '\t', file

 # set local variables
    for file in fcs:
         inData = file
         coordinateSystem = arcpy.SpatialReference(4283)
         arcpy.DefineProjection_management(inData, coordinateSystem)

enter image description here enter image description here

2voto

Gavin Schulz Puntos 592

La razón por la que no recibes errores es porque no encuentra nada que cambiar. Necesitas buscar espacios de trabajo (gdb) antes de las clases de características. Actualmente está buscando clases de características directamente en la carpeta de su espacio de trabajo y no dentro de los GDBs.

Aunque podría utilizar arcpy.ListWorkspaces() antes de utilizar arcpy.ListFeatureClasses() En su lugar, le recomiendo que utilice arcpy.da.walk() para recorrer todas las clases de características de todas las bases de datos.

Prueba lo siguiente:

import arcpy, os
workspace = r"Z:\temp"

arcpy.env.workspace = workspace
coordinateSystem = arcpy.SpatialReference(4283)
walk = arcpy.da.Walk(workspace, topdown=True, datatype="FeatureClass")

for dirpath, dirnames, filenames in walk:
    for fc in filenames:
        print dirpath, fc
        file = os.path.join(dirpath, fc)
        arcpy.DefineProjection_management(file, coordinateSystem)

(He escrito esto en mi teléfono en el autobús, así que si es necesario por favor corregir cualquier problema de sangría en mi código. Voy a arreglar cuando estoy en un PC en breve)

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