Usando o ArcGIS Desktop, existe uma maneira de a legenda mostrar apenas os subitens que são exibidos no mapa?
Usando o ArcGIS Desktop, existe uma maneira de a legenda mostrar apenas os subitens que são exibidos no mapa?
Respostas:
Limitador de legendas
O limitador de legenda funciona apenas em camadas que usam "categorias de valor exclusivas" para definir a simbologia. Esse estilo de legenda pode ser configurado na guia Simbologia da caixa de diálogo Propriedades da camada. O Legend Limiter não limitará a simbologia das camadas configuradas com a simbologia de símbolo único.
Não há necessidade de escrever nenhum ArcPy adicional para isso. Simplesmente use legendas dinâmicas (que foram adicionadas no ArcGIS 10.1) ao criar seus mapas.
As opções de extensão de mapa permitem controlar como os itens de legenda elegíveis interagem com a extensão atual do mapa. Se a caixa de seleção Mostrar apenas classes visíveis na extensão do mapa atual estiver marcada, uma classe de item de legenda aparecerá na legenda apenas se um recurso dessa classe estiver na extensão atual. Se nenhum recurso desse item de legenda estiver na extensão atual, o item inteiro será removido da legenda.
Na visualização do mapa, clique com o botão direito do mouse na legenda para abrir a janela Propriedades e clique na guia "Itens". Em "Opções de extensão de mapa", selecione "Mostrar apenas classes visíveis na extensão atual do mapa".
Ele será atualizado à medida que você se move pelo mapa ou ativa / desativa as classes dentro da camada.
Eu acho que esse código vai ajudar:
import arcpy
import arcpy.mapping
import os
import sys
from arcpy import env
import string
env.workspace = r"C:\Project"
for mxdname in arcpy.ListFiles("*.mxd"):
print mxdname
mxd = arcpy.mapping.MapDocument(r"C:\Project\\" + mxdname)
legend = arcpy.mapping.ListLayoutElements(mxd,"LEGEND_ELEMENT")[0]
for lyr in legend.listLegendItemLayers():
legend.updateItem(lyr, use_visible_extent = True)
print 'updateItem'
mxd.save()
del mxd