¿Existe alguna herramienta o script en ArcMap (que actualmente utiliza 10.5.1 basic) para identificar las clases de características vacías sin borrarlas? Tengo que mantener todas las clases de características en la geodatabase, incluso si están vacías, pero me gustaría saber cuáles tienen realmente datos sin pasar por todas las clases de características. Hay hasta 522 clases de características por geodatabase, con más de 100 bases de datos.
Respuestas
¿Demasiados anuncios?Puede ejecutar el código siguiente en el Ventana de Python en ArcMap . Primero tendrás que copiar la ruta al directorio que contiene todas tus geodatabases e insertarla en el script en la ubicación identificada. Es decir, sustituya "ruta \Goes\Here " con tu camino.
import os, arcpy
# Copy the path to the directory containing your geodatabases and insert path
# in between the single quotes below, like "GDBs = r'D:\GIS Data\GDBs'"
GDBs = r'path\Goes\Here'
L = []
GDBList = []
for paths, directories, files in os.walk(GDBs):
for dir in directories:
L.append(os.path.join(paths, dir))
for i in L:
if i.endswith('.gdb'):
GDBList.append(i)
print GDBList
for GDB in GDBList:
arcpy.env.workspace = GDB
datasets = arcpy.ListDatasets()
FCs = []
for fc in arcpy.ListFeatureClasses():
result = arcpy.GetCount_management(fc)
print str(GDB) + ',' + str(fc) + ',' + str(result)
for ds in datasets:
for fc in arcpy.ListFeatureClasses(feature_dataset=ds):
result = arcpy.GetCount_management(fc)
print str(GDB) + ',' + str(fc) + ',' + str(result)
Esto creará una lista separada por comas que contendrá el nombre de la geodatabase, el nombre de la clase de características y el número de características dentro de las clases de características. Esta lista puede copiarse desde la ventana Python de ArcMap y pegarse en una hoja de cálculo. Esto no alterará los datos dentro de las geodatabases de ninguna manera.
Puede utilizar GetCount_management para identificar si hay clases de características con cero registros.
Ejemplo de uso:
# 1. Look for geodatabases in your environment to loop through
# http://pro.arcgis.com/en/pro-app/arcpy/functions/listworkspaces.htm
# 2. Loop through the geodatabases and identify feature classes
# http://pro.arcgis.com/en/pro-app/arcpy/functions/listworkspaces.htm
# (Note: may need to handle feature classes within feature datasets)
# http://pro.arcgis.com/en/pro-app/arcpy/functions/listdatasets.htm
# 3. Identify the empty feature classes
for fc in fcs:
numRows = int(arcpy.GetCount_management(fc).getOutput(0))
# http://pro.arcgis.com/en/pro-app/tool-reference/data-management/get-count.htm
if numRows == 0:
print('{} has {} records'.format(fc, numRows))