Con ArcGIS Desktop, ¿hay alguna forma de que la leyenda muestre solo los subelementos que se muestran en el mapa?
Con ArcGIS Desktop, ¿hay alguna forma de que la leyenda muestre solo los subelementos que se muestran en el mapa?
Respuestas:
Limitador de leyenda
Legend Limiter solo funciona en capas que usan "categorías de valores únicos" para definir la simbología. Este estilo de leyenda se puede configurar en la pestaña Simbología del cuadro de diálogo Propiedades de capa. Legend Limiter no limitará la simbología de capas configuradas con simbología de un solo símbolo.
No hay necesidad de escribir ningún ArcPy adicional para esto. Simplemente use leyendas dinámicas (que se agregaron en ArcGIS 10.1) cuando está creando sus mapas.
Las Opciones de extensión del mapa le permiten controlar cómo interactúan los elementos de leyenda elegibles con la extensión del mapa actual. Si la casilla de verificación Mostrar solo las clases que están visibles en la extensión del mapa actual está marcada, una clase de elemento de leyenda solo aparecerá en la leyenda si una entidad de esa clase está en la extensión actual. Si no hay características de ese elemento de leyenda en la extensión actual, todo el elemento se eliminará de la leyenda.
En la vista de mapa, haga clic derecho en la Leyenda para abrir la ventana Propiedades, luego haga clic en la pestaña "Elementos". En "Opciones de extensión de mapa", seleccione "Mostrar solo las clases que son visibles en la extensión del mapa actual".
Se actualizará a medida que se mueva por el mapa o active o desactive las clases dentro de la capa.
Creo que este código ayudará:
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