Existe uma maneira de mostrar uma contagem de recursos de camadas no sumário?

10

Estou usando o ArcGIS 10. No sumário do ArcMap (TOC), existe uma maneira de o "Nome da camada" mostrar automaticamente uma contagem do número total de recursos em cada camada?

Eu estava pensando que o sumário seria algo assim:

  • Estradas (27)
  • Córregos (100)
  • Pacotes (12)

Eu encontrei essa opção para renderizações de valor único , mas:

  1. Eu não sou um cara do ArcObjects e
  2. Quero trabalhar apenas com o renderizador de valor único .

A guia "Listar por seleção" possui esse recurso, mas apenas quando há recursos selecionados.

RyanKDalton
fonte
Você está procurando fazer isso para uma única camada do seu mapa (cujo nome é seu) ou aplicá-la a todas as camadas do seu mapa por padrão?
CHenderson
Todas as camadas no sumário, de preferência por padrão, e preferencialmente atualizadas quando a contagem de uma camada é alterada (por exemplo, quando um recurso é adicionado ou excluído).
RyanKDalton
2
Você provavelmente poderia fazer isso com um suplemento Python que ouça o início / fim de uma sessão de edição.
Paul
1
Eu acho que pode ser possível no ArcGIS 10.1 e 10.2 (mas não 10.0) usando um suplemento Python (extensão) que executa GetCount em cada camada e atualiza a propriedade name de cada camada para incluir esse número entre colchetes a cada atualização. Se você encontrar / enviar uma idéia do ArcGIS para ter essa opção OOTB no ArcGIS Professional, eu votaria nela.
PolyGeo
2
Eu fiz isso usando um script no mxd, então eu pop o código na janela python e o executo para obter uma impressão de cada camada com a contagem de recursos. Como o @PolyGeo diz, isso pode ser incorporado a um suplemento do Python, se você quiser que isso aconteça automaticamente (em 10.1, como mencionado).
Cindy Jayakumar

Respostas:

7

Como o @Paul e o @PolyGeo sugeriram, acho que tentar fazer deste um suplemento Python faz mais sentido e continuarei com essa ideia mais tarde.

Enquanto isso, montei o código que adiciona / atualiza o nome do sumário das camadas definidas pelo usuário em um MXD com contagem de recursos. Para meus propósitos, eu apenas criei isso como uma ferramenta GP que aceitaria camadas individuais por meio de uma entrada de vários valores que aceita "Camadas" na ferramenta de script. Isso me permite atualizar várias camadas "sob demanda", apenas atualizando as contagens de recursos dessas camadas de interesse.

Eu não criei uma maneira de executar isso automaticamente, no entanto, ao fazer alguns testes de MXDs antigos, isso pode até não ser desejável. Se você tem muitas camadas com muitos recursos, pode ser um processo lento.

Caixa de entrada

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
RyanKDalton
fonte
GetCount será mais rápido que um cursor. O que fez você tirar a conclusão oposta?
precisa saber é o seguinte
Meu teste inicial de pequenos shapefiles mostrou que era mais rápido. no entanto, depois de testar em camadas maiores de RDBMS, você está correto, GetCount foi mais rápido. Atualizei o código acima.
precisa saber é o seguinte
Pequena ferramenta legal, você deve compartilhar isso na galeria de códigos ESRI?
precisa saber é o seguinte