Para verificar la existencia de los datos en una secuencia de comandos, utilice la función Exists.
Exists(dataset) | Comprueba la existencia de las clases, tablas, datasets, shapefiles, espacios de trabajo, capas y otros archivos en el espacio de trabajo actual al momento de la ejecución. La función devuelve un Booleano que indica si el elemento existe. |
Al comprobar la existencia de datos geográficos, utilice la función Exists, puesto que reconoce rutas de catálogo. Una ruta de catálogo es un nombre de ruta que solo reconoce ArcGIS. Por ejemplo: D:\Data\Final\Infrastructure.gdb\EastValley\powerlines hace referencia a la clase de entidad powerlines que se encuentra en el dataset de entidad EastValley de la geodatabase de archivos Infrastructure. Ésta no es una ruta del sistema válida en lo que concierne al sistema operativo Windows, dado que Infrastructure.gdb (una carpeta) no contiene un archivo denominado Infrastructure. En pocas palabras, Windows no tiene conocimiento de datasets de entidades o clases de entidades, y por tanto no se pueden utilizar las funciones de existencia de Python como os.path.exists. Por supuesto, en todo ArcGIS se conoce como manejarse con las rutas de catálogo. También se pueden utilizar rutas UNC (Universal Naming Convention).
import arcpy
arcpy.env.workspace = "d:/St_Johns/data.gdb"
fc = "roads"
# Clip a roads feature class if it exists
#
if arcpy.Exists(fc):
arcpy.Clip_analysis(fc, "urban_area", "urban_roads")
Sugerencia:
La función Exists respeta el espacio de trabajo de geoprocesamiento y permite especificar únicamente el nombre base.
Si los datos residen en una geodatabase corporativa, el nombre debe ser completo. import arcpy
arcpy.env.workspace = "Database Connections/Bluestar.sde"
fc = "ORASPATIAL.Rivers"
# Confirm that the feature class exists
#
if arcpy.Exists(fc):
print("Verified {} exists".format(fc))
En las secuencias de comando, el comportamiento predeterminado de todas las herramientas es no sobrescribir cualquier salida que ya exista. Este comportamiento se puede modificar definiendo la propiedad overwriteOutput como True (arcpy.env.overwriteOutput = True). Si se intenta sobrescribir cuando overwriteOutput es False, la herramienta fallará.