5 votos

arcpy.env.overwriteOutput () no funciona con arcpy.FeatureClassToShapefile_conversion ()?

He creado un modelo simple para transferir varias clases de entidad a un shapefile. Con el modelo exporté un script .py que me gustaría ejecutar con mi administrador de tareas para actualizar cualquier cambio cada día. El script que se ejecuta sin sobrescribir:

 # Import arcpy module
import arcpy

# Local variables:
adverse = "F:\\Atco_gis\\temp_shapefiles\\LP_Layers_Temp.gdb\\adverse"
comments = "F:\\Atco_gis\\temp_shapefiles\\LP_Layers_Temp.gdb\\comments"
desig_crossing = "F:\\Atco_gis\\temp_shapefiles\\LP_Layers_Temp.gdb\\desig_crossing"
Temp_LP_Layers = "F:\\Atco_gis\\temp_shapefiles\\Temp_LP_Layers"
Temp_LP_Layers__2_ = Temp_LP_Layers

# Process: Feature Class To Shapefile (multiple)
arcpy.FeatureClassToShapefile_conversion("F:\\Atco_gis\\temp_shapefiles\\LP_Layers_Temp.gdb\\adverse;F:\\Atco_gis\\temp_shapefiles\\LP_Layers_Temp.gdb\\comments;F:\\Atco_gis\\temp_shapefiles\\LP_Layers_Temp.gdb\\desig_crossing", Temp_LP_Layers)
 

He estado leyendo eso:

 arcpy.env.overwriteOutput = True
 

Debería resolver el problema, pero me deja una nueva salida con _1 o _2 dependiendo de cuántas veces se haya ejecutado el script.

¿Alguna sugerencia?

2voto

UnkwnTech Puntos 21942

La Clase de entidad A Shapefile es una herramienta de secuencia de Comandos de Python Herramienta y se puede ver su punto de origen, localización de la misma en la Ventana de Búsqueda y haga clic para seleccione Editar en el menú contextual.

Es este código, en particular, una función denominada ConversionUtils.GenerateOutputName que parece ser la generación de los nombres con _1, _2, etc (dependiendo de cómo muchas veces la secuencia de comandos se ha ejecutado) que se anexa a ellos.

Este comportamiento se menciona en la Clase de entidad A Shapefile de Ayudar y eso es lo que omite la configuración de arcpy.env.overwriteOutput:

Si el shapefile de salida ya existe en la Carpeta de Salida, número de se añade al final para hacer el shapefile nombre único (por ejemplo, rivers_1.shp).

Yo no recomendaría tratar de cambiar el origen de esta herramienta, y creo que usted encontrará que es muy difícil tratar de copiar el código fuente y modificarlo para crear una nueva herramienta.

En lugar de eso yo recomiendo hacer como @Aaron sugirió en un comentario y escribir algo de código, para insertar antes de ejecutar arcpy.FeatureClassToShapefile_conversion(), que elimina las copias existentes de cualquier shapefiles antes de crearlos.

Que el código podría implicar el uso de la arcpy.Exists() y arcpy.Delete_management() funciones, junto con algunos de manipulación de cadenas de la ruta de acceso a su salida de los shapefiles.

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