10 votos

Es allí una manera de mostrar una de las capas de la característica de contar en el TOC?

Estoy usando ArcGIS 10. En ArcMap la tabla de contenidos (TOC), hay una manera de tener el "Nombre de la Capa" mostrar automáticamente un recuento del número total de las características de cada capa?

Yo estaba pensando en la tabla de contenido sería algo como esto:

  • Carreteras (27)
  • Corrientes (100)
  • Las parcelas (12)

He encontrado esta opción para el Valor Único de los renders, pero:

  1. Yo no soy un tipo de ArcObjects, y
  2. Quiero trabajar solo con el Valor Único procesador.

La "Lista de Selección" en la ficha de ordenación de tiene esta capacidad, pero sólo cuando hay características seleccionadas.

7voto

aditya Puntos 111

Como @Paul & @PolyGeo sugerido, creo que tratando de hacer de este un Add-in de Python tiene más sentido, y voy a seguir esa idea más tarde.

En el ínterin, puse el código que va a Agregar/Actualizar la tabla de contenido Nombre de usuario definido por capas en un MXD con función de cuenta. Para mis propósitos, he creado este como un GP herramienta que aceptar cada una de las capas a través de un varios valores de entrada que acepta "Capas" en la herramienta de secuencia de comandos. Que me permite la actualización de múltiples capas "on-demand", sólo la actualización de la función de los recuentos de las capas de interés.

No he venido para arriba con una manera de tener esta se ejecute automáticamente, sin embargo en hacer algunas pruebas de edad MXD, que incluso pueden no ser deseables. Si usted tiene un montón de capas con un montón de características, podría ser un proceso lento.

Inputbox

import arcpy

LayerInput = arcpy.GetParameterAsText(0)

mxd = arcpy.mapping.MapDocument("CURRENT")
for lyr in arcpy.mapping.ListLayers(mxd):

    #Skip over group layers, as they have no values to count
    if lyr.isGroupLayer:
        continue

    #Determine basename of the layer, without the feature count
    name = str(lyr.name)

    #Determine if the layer is in the user-defined list
    if name not in LayerInput:
        continue

    #Determine if the layer name already includes a COUNT
    if "[" in name and "]" in name:
        lpos = name.find("[")
        basename = name[:lpos-1]
    else:
        basename = name
    print "    Updating feature count in TOC name for layer: " + str(basename)
    arcpy.AddMessage("    Updating feature count in TOC name for layer: " + str(basename) )

    # In 10.1, you may be able to use arcpy.da.SearchCursor to increase the speed.
    #http://gis.stackexchange.com/questions/30140/fastest-way-to-count-the-number-of-features-in-a-feature-class
    #fcount = 0
    #cursor = arcpy.SearchCursor(lyr)
    #for row in cursor:
    #    fcount += 1
    #del cursor

    #Get the feature count
    fcount = int(arcpy.GetCount_management(lyr).getOutput(0))

    #Update the lyr.name property
    lyr.name = basename + " [n=" + str(fcount) + "]"
    del fcount

arcpy.RefreshTOC()

#Garbage collection
del mxd

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