Afficher uniquement les éléments de légende qui sont réellement affichés sur la carte dans ArcGIS Desktop?

14

À l'aide d'ArcGIS Desktop, existe-t-il un moyen pour la légende de n'afficher que les sous-éléments affichés sur la carte?

dassouki
la source
Avez-vous essayé de convertir la légende en graphiques? Après la conversion en graphiques, vous pouvez supprimer manuellement les éléments de la légende dont vous n'avez pas besoin. J'espère que ça aide. Merci.
Raj
1
@Raj - Oh non, je ne prévois pas de faire que le maintien des cartes soit
pénible
1
La question liée est une autre question à laquelle il a été répondu. Posez donc une nouvelle question décrivant votre problème en détail.
MathiasWestin
1
L'ancienne question est étiquetée arcgis 9.3, vous devriez donc pouvoir poser une nouvelle question et baliser pour ArcGIS 10. De plus, la question liée est une réponse et vous posez une question de dépannage pour le limiteur de légende.
Jay Cummins
En outre, le dépannage des questions peut prendre un certain temps pour obtenir une traction et vous devez essayer de garder le corps de la question organisé avec de nouvelles informations afin qu'il soit facile à suivre. Sinon, d'autres utilisateurs l'examineront et passeront à la question suivante.
Jay Cummins

Réponses:

9

Limiteur de légende

Le Limiteur de légende ne fonctionne que sur les couches qui utilisent des "catégories de valeurs uniques" pour définir la symbologie. Ce style de légende peut être configuré dans l'onglet Symbologie de la boîte de dialogue Propriétés de la couche. Legend Limiter ne limitera pas la symbologie des couches configurées avec une symbologie à symbole unique.

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

Mapperz
la source
C'est le plus proche de ce dont j'ai besoin, en substance, je dois convertir toute ma symbologie en valeur unique
dassouki
@ Mapperz - il existe un correctif pour ArcGIS 10 ici: forums.arcgis.com/threads/24968-Legend-Limiter-in-Arc-10
Dano
@ Mapperz (ou n'importe qui) - J'ai téléchargé les fichiers nécessaires pour Legend Limiter sur le lien que j'ai posté ci-dessus. En essayant d'installer, j'ai reçu un message d'erreur, que j'ai googlé. J'ai l'impression qu'il n'existe aucun correctif rendant ce module complémentaire compatible avec ArcGIS 10 et Windows 7. Sur ce sujet, dois-je commencer une nouvelle question liée à ce sujet? Ou .... est-ce que quelqu'un est au courant d'un correctif répondant aux deux paramètres (Arc 10 et Windows 7) /
Dano
3
Exécuter en mode de compatibilité Windows sur Windows 7.
Mapperz
@ Mapperz - pouvez-vous publier cette réponse afin que je puisse la sélectionner comme réponse. Ma question sur ce problème est ici: gis.stackexchange.com/questions/12609/…
Dano
11

Il n'est pas nécessaire d'écrire un ArcPy supplémentaire pour cela. Utilisez simplement des légendes dynamiques (qui ont été ajoutées dans ArcGIS 10.1) lorsque vous créez vos cartes.

Les options de l'étendue de la carte vous permettent de contrôler la façon dont les éléments de légende éligibles interagissent avec l'étendue de la carte actuelle. Si la case Afficher uniquement les classes visibles dans l'étendue de carte actuelle est cochée, une classe d'élément de légende n'apparaîtra dans la légende que si une entité de cette classe se trouve dans l'étendue actuelle. Si aucune entité de cet élément de légende ne se trouve dans l'étendue actuelle, l'élément entier sera supprimé de la légende.

PolyGeo
la source
4

Dans la vue de la carte, cliquez avec le bouton droit sur la légende pour ouvrir la fenêtre Propriétés, puis cliquez sur l'onglet "Éléments". Sous "Options de l'étendue de la carte", sélectionnez "Afficher uniquement les classes qui sont visibles dans l'étendue de la carte actuelle".

Il s'actualisera au fur et à mesure que vous vous déplacerez sur la carte ou basculerez entre les classes on / off dans la couche.

vputinski
la source
Cela semble être la même chose qu'une autre réponse publiée un an plus tôt .
PolyGeo
Merci d'être précis sur l'endroit où la case se cachait!
JMers
1

je pense que ce code aidera:

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
newGIS
la source