2 votos

¿Existe algún modo de identificar clases de características vacías en ArcMap sin eliminarlas?

¿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.

3voto

LDomagala Puntos 1360

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.

0voto

evolutionxbox Puntos 133

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))

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