La capa en memoria arcpy.MakeFeatureLayer todavía existe cuando el paso siguiente falla durante la prueba

9

Cuando usé arcgisscripting para crear una capa de salida en memoria con gp.makefeaturelayer, lo ponía en un bloque try / except y eliminaba el objeto gp en la pieza except cuando fallaba makefeaturelayer. Ahora, cuando estoy usando arcpy, parece que necesito cerrar la ventana inactiva y volver a abrir para poder eliminar la capa de salida en memoria.

¿Cómo podría hacer que la capa de salida de mi herramienta makefeaturelayer se elimine en un bloque try / except? Gracias.

Justin
fuente
Una capa de entidades es una representación ligera de una clase de entidad. ¿Hay alguna razón específica por la que deba eliminarse?
blah238
cuando estoy creando una capa de características en memoria y luego el siguiente paso falla ... Realizo un ajuste y vuelvo a ejecutar el script en inactivo, pero luego aparece una "capa de características", así que tengo que cerrar inactivo y reiniciar ... Toma tiempo extra.
Justin
Make Feature Layer no crea ningún dato, solo una vista de algunos datos existentes. ¿Quizás esté creando una clase de entidad en memoria? Si es así, usaría la sugerencia de Dan para sobrescribir la clase de entidad en memoria. También sería una buena idea eliminar la clase de entidad en memoria cuando ya no la necesite, porque continuará ocupando memoria hasta que la aplicación salga.
blah238
Consulte Trabajar con capas y vistas de tabla en la ayuda para obtener una mejor explicación de qué es una capa de entidades.
blah238

Respuestas:

8

Incluso

arcpy.env.overwriteOutput = True

dentro de su script sobrescribirá cualquier versión anterior de un archivo sin tener que eliminar las versiones "malas".

Andy
fuente
2
debería serarcpy.env.overwriteOutput = True
Josh Werts
7

Eliminar la capa de entidades en el bloque de código excepto no funcionará. Si está en el bloque de código excepto, la capa de entidades no se pudo crear.

Recomiendo agregar finalmente un bloque de código que se ejecutará si el bloque try es exitoso o no. Si hace esto, debe asegurarse de que la capa de entidades existe antes de poder eliminarla.

try:
    arcpy.MakeFeatureLayer_management(inFeatureClass, "outFeatureLayer", {whereClause})
except:
    print arcpy.GetMessages()
finally:
    if arcpy.Exists("outFeatureLayer"):
        arcpy.Delete_management("outFeatureLayer")
Roy
fuente