¿Muestra solo elementos de leyenda que realmente se muestran en el mapa en ArcGIS Desktop?


14

Con ArcGIS Desktop, ¿hay alguna forma de que la leyenda muestre solo los subelementos que se muestran en el mapa?


¿Intentaste convertir la leyenda en gráficos? Después de convertir a gráficos, puede eliminar manualmente los elementos en la leyenda que no necesita. Espero que eso ayude. Gracias.
Raj

1
@Raj - Oh no, no planeo hacer que mantener los mapas sea doloroso
dassouki el

1
La pregunta vinculada es otra pregunta que ha sido respondida. Entonces, haga una nueva pregunta que describa su problema en detalle.
MathiasWestin

1
La pregunta anterior está etiquetada como arcgis 9.3, por lo que debería aceptar hacer una nueva pregunta y etiquetar ArcGIS 10. Además, la pregunta vinculada es una respuesta y está haciendo una pregunta de solución de problemas para el limitador de leyenda.
Jay Cummins

Además, las preguntas de solución de problemas pueden tomar algo de tiempo para obtener tracción y debe trabajar para tratar de mantener el cuerpo de la pregunta organizado con nueva información para que sea fácil de seguir. O bien, otros usuarios lo buscarán y pasarán a la siguiente pregunta.
Jay Cummins

Respuestas:


9

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.

http://arcscripts.esri.com/details.asp?dbid=16097


Eso es lo más cercano a lo que necesito. En esencia, tengo que convertir toda mi simbología en un valor único
dassouki

@ Mapperz: hay una solución para ArcGIS 10 aquí: forums.arcgis.com/threads/24968-Legend-Limiter-in-Arc-10
Dano

@ Mapperz (o cualquiera): descargué los archivos necesarios para Legend Limiter en el enlace que publiqué anteriormente. Al intentar instalar, recibí un mensaje de error, que busqué en Google. Tengo la impresión de que no existe un parche que haga que este complemento sea compatible tanto con ArcGIS 10 como con Windows 7. En este hilo, ¿debería comenzar una nueva pregunta relacionada con este tema? O ... ¿alguien conoce un parche que cumpla con ambos parámetros (Arc 10 y Windows 7) /
Dano

3
Ejecutar en modo de compatibilidad de Windows en Windows 7.
Mapperz

@ Mapperz: ¿puede publicar esta respuesta para que pueda seleccionarla como respuesta? Mi pregunta sobre este problema está aquí: gis.stackexchange.com/questions/12609/…
Dano

11

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.


4

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.


Esto parece ser lo mismo que otra respuesta publicada un año antes .
PolyGeo

¡Gracias por ser específico sobre dónde se escondía la casilla de verificación!
JMers

1

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.