5 votos

Python se bloquea al crear muchas clases de entidad en múltiples conjuntos de datos de características

Estoy tratando de llenar una Geodatabase con la rotonda de 60 conjuntos de datos con un nuevo Featureclass para cada conjunto de datos. Para ello, escribí un python-independiente-script que se repite a través de estos conjuntos de datos y crea una nueva Featureclass con el "CreateFeatureclass_management"-Herramienta y hacer algunas cosas con este Featureclass después.

Esto funciona para el primer conjunto de datos, pero cuando mi script llega a este comando para el siguiente conjunto de datos, el procesamiento de mi script es interrumpido. No entiendo de Rastreo, en lugar de un Windows-mensaje de Error aparece, diciendo algo. como "pythonw.exe registró un error y tiene que ser cancelado" (tal vez la redacción es un poco diferente, ya que he traducido del alemán).

Así, este Problema siempre real ocurre para el segundo Featureclass que debe ser generado. Si puedo extraer el primer conjunto de datos con la correcta generado Featureclass de mi Geodatabase y, a iniciar la secuencia de comandos de nuevo, de nuevo el Featureclass será añadido al primer conjunto de datos (el primero, segundo), pero no a la siguiente. Así que no es una cuestión de mis Datos. También tengo la duda de si es algo que en mi scriptcode sí, desde que me escribió una muy simple Testscript después, que es capaz de crear 4 Featureclasses en UN conjunto de datos, pero no es capaz de crear Featureclasses en más de un conjunto de datos.

Yo realmente no veo ninguna razón para que mi script no crear estos Featureclasses. Si la demanda es, definitivamente puedo publicar algunas scriptcode. De todos modos, me temo que tiene algo que ver con mi caché o algo así.

Aquí es el código de mi testsript: ( Que en realidad se rompe en el primer AddField_management en lugar de mi CreateFeatureclass_management, después de que he cambiado un poco)

import arcpy, os

Geodatabase = r"D:\GIS\STK\124_NDS\STK_124_NDS.gdb"
arcpy.env.overwriteOutput = True

def CreateFeatureclasses(workspace):
    arcpy.env.workspace = Geodatabase
    listDatasets = arcpy.ListDatasets("", "Feature")
    for dataset in listDatasets:
        datasetPath = workspace + os.sep + dataset
        arcpy.env.workspace = datasetPath

        print "Dataset: " + dataset
        out_name = "BF_Stao_Bodenprofil_P_" + dataset[9:]
        Bohrpunkt_fc = arcpy.CreateFeatureclass_management (datasetPath, out_name, "POINT")
        fcList = arcpy.ListFeatureClasses()
        for fc in fcList:
            if fc[:10] == "Bohrpunkte":
                Punkteliste = []
                zeilen = arcpy.SearchCursor(fc)
                for zeile in zeilen:
                    Bohrkreisgeometrie = zeile.getValue("Shape")
                    Bohrpunkt = Bohrkreisgeometrie.trueCentroid
                    Punkteliste.append(Bohrpunkt)
                del zeilen
                rows = arcpy.InsertCursor(Bohrpunkt_fc)
                for Punkt in Punkteliste:
                    feature = rows.newRow()
                    feature.shape = Punkt
                    rows.insertRow(feature)
                del rows, Punkteliste
                print "Die Punkt-Geometrien fuer die Featureclass 'BF_Stao_Bodenprofil_P'      wurden erstellt."
                Liegenschaftsnummer = dataset[1:8]
                arcpy.AddField_management (Bohrpunkt_fc, "Lgs_Nummer", "TEXT", "", "", 7)
                arcpy.AddField_management (Bohrpunkt_fc, "Profil_ID", "TEXT", "", "", 12)
                arcpy.AddField_management (Bohrpunkt_fc, "Profil_Nr_alt", "TEXT", "", "", 4)
                arcpy.AddField_management (Bohrpunkt_fc, "Profiltyp", "SHORT", 1)
                arcpy.AddField_management (Bohrpunkt_fc, "Standortseinheit", "TEXT")
        del Bohrpunkt_fc        
    del listDatasets

CreateFeatureclasses(Geodatabase)

EDITAR

He tenido algunos intentos para resolver mi Problema:

Primero, hice un Lote de secuencia de Comandos de la herramienta fuera de mi secuencia de Comandos independiente. Como antes, la secuencia de comandos se procesa para mi primer conjunto de datos, pero no para el siguiente. Ahora tengo un "grave error de aplicación" y el guión es interrumpido.

Por lo tanto, mi segundo intento fue para descartar la idea de que el procesamiento de mis Datos en todo el conjunto de datos en un bucle a través de ellos/ el uso de un Lote y en lugar de utilizar una simple secuencia de comandos de la herramienta, donde tengo que configurar el espacio de trabajo de forma individual para cada conjunto de datos. Después de usar la secuencia de comandos para el primer conjunto de datos, he abierto de nuevo, establecer el área de trabajo para el segundo, un empezar de nuevo, y -lo que es una sorpresa - se produce el mismo error de nuevo. Tengo que cerrar ArcCatalog antes de que pueda comenzar de nuevo el script....

Este puede indicar, que hay algunos de bloqueo restantes, después de que el guión está terminado? Puedo eliminar cada uno de referencia antes de que finalice la secuencia de comandos y eliminar temporales featureclasses.

Algún consejo? O alguien más experimentado esto antes?

2voto

Greg Puntos 1756

Yo era capaz de replicar un problema con el script, aunque sin el Windows "este programa deberá ser denunciado" los diálogos. Tomó un poco de detective para llegar a la parte inferior de la misma, pero en una cáscara de nuez out_name = "BF_Stao_Bodenprofil_P_" + dataset[9:] está creando función duplicar los nombres de clase.

FC deben ser únicos en una geodatabase, incluso cuando en función de diferentes conjuntos de datos. Una vez que he cambiado de esa línea, el guión iba a finalizar con éxito. Mi guión de trabajo está aquí.

Los cambios de nota son:

El uso de try: ... except: a informe de Arcgis generado errores de. Sin que Arcgis a menudo acaba de salir con ningún error visible a todos. Para una descripción completa, vea el manejo de Errores con Python. No dejes que la longitud de la página de asustar! Esto es a menudo lo suficientemente bueno:

try:
    print 'About to run CreateFeatureClasses...'
    CreateFeatureclasses(Geodatabase)
except:
    print 'Exception Messages:\n', arcpy.GetMessages()

Este cambio de rendimiento de los poco más de error informativo de abajo, así que por lo menos podría determinar donde se detuvo, aunque no exactamente por qué:

Exception Messages:
Executing: CreateFeatureclass c:\temp\test.gdb\two BF_Stao_Bodenprofil_P_ POINT # DISABLED DISABLED # # 0 0 0
Start Time: Mon Sep 17 15:34:56 2012
ERROR 999999: Error executing function.
Failed to execute (CreateFeatureclass).
Failed at Mon Sep 17 15:34:57 2012 (Elapsed Time: 1.00 seconds)`

Después de que se trataba de una cuestión de aspersión declaraciones como print 'Outname:', out_name para llegar a la parte inferior.

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