Nur Legendenelemente anzeigen, die tatsächlich auf der Karte in ArcGIS Desktop angezeigt werden?


14

Kann die Legende in ArcGIS Desktop nur die auf der Karte angezeigten Unterelemente anzeigen?


Haben Sie versucht, die Legende in Grafiken umzuwandeln? Nach der Konvertierung in Grafiken können Sie die nicht benötigten Elemente in der Legende manuell löschen. Ich hoffe das hilft. Vielen Dank.
Raj

1
@ Raj - Oh nein, ich habe nicht vor, die Karten zu
pflegen

1
Die verknüpfte Frage ist eine weitere Frage, die beantwortet wurde. Stellen Sie also eine neue Frage, die Ihr Problem ausführlich beschreibt.
MathiasWestin

1
Die alte Frage ist mit arcgis 9.3 gekennzeichnet. Sie sollten also in Ordnung sein, eine neue Frage zu stellen und ArcGIS 10 mit Tags zu versehen. Außerdem ist die verknüpfte Frage eine Antwort und Sie stellen eine Frage zur Fehlerbehebung für den Legendenbegrenzer.
Jay Cummins

Die Behandlung von Fragen zur Fehlerbehebung kann einige Zeit in Anspruch nehmen, und Sie sollten versuchen, den Fragenkörper mit neuen Informationen zu strukturieren, damit er leicht zu befolgen ist. Anderenfalls schauen andere Benutzer darauf und gehen zur nächsten Frage über.
Jay Cummins

Antworten:


9

Legendenbegrenzer

Der Legendenbegrenzer funktioniert nur bei Layern, die "eindeutige Wertkategorien" zum Definieren der Symbologie verwenden. Dieser Legendenstil kann auf der Registerkarte Symbologie im Dialogfeld Layer-Eigenschaften festgelegt werden. Der Legendenbegrenzer schränkt die Symbologie von Layern, die mit einer einzelnen Symbolsymbologie eingerichtet wurden, nicht ein.

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


Das kommt dem, was ich brauche, am nächsten. Im Wesentlichen muss ich meine gesamte Symbologie in einen eindeutigen Wert
umwandeln

@ Mapperz - Es gibt einen Fix für ArcGIS 10 hier: forums.arcgis.com/threads/24968-Legend-Limiter-in-Arc-10
Dano

@ Mapperz (oder irgendjemand) - Ich habe die erforderlichen Dateien für Legend Limiter über den oben angegebenen Link heruntergeladen. Beim Versuch zu installieren, erhielt ich eine Fehlermeldung, die ich googelte. Ich habe den Eindruck, dass es keinen Patch gibt, der dieses Add-On mit ArcGIS 10 und Windows 7 kompatibel macht. Sollte ich in diesem Thread eine neue Frage zu diesem Thema stellen? Oder ... ist jemandem ein Patch bekannt, der beide Parameter erfüllt (Arc 10 und Windows 7) /
Dano

3
Führen Sie den Windows-Kompatibilitätsmodus unter Windows 7 aus.
Mapperz

@ Mapperz - kannst du diese Antwort posten, damit ich sie als Antwort auswählen kann? Meine Frage zu diesem Problem ist hier: gis.stackexchange.com/questions/12609/…
Dano

11

Hierfür muss kein zusätzlicher ArcPy geschrieben werden. Verwenden Sie beim Erstellen Ihrer Karten einfach dynamische Legenden (die in ArcGIS 10.1 hinzugefügt wurden).

Mit den Optionen für die Kartenausdehnung können Sie steuern, wie berechtigte Legendenelemente mit der aktuellen Kartenausdehnung interagieren. Wenn das Kontrollkästchen Nur Klassen anzeigen, die in der aktuellen Kartenausdehnung sichtbar sind aktiviert ist, wird eine Legendenelementklasse nur in der Legende angezeigt, wenn sich ein Feature dieser Klasse in der aktuellen Ausdehnung befindet. Wenn sich keine Features dieses Legendenelements in der aktuellen Ausdehnung befinden, wird das gesamte Element aus der Legende entfernt.


4

Klicken Sie in der Kartenansicht mit der rechten Maustaste auf die Legende, um das Eigenschaftenfenster zu öffnen, und klicken Sie dann auf die Registerkarte "Elemente". Wählen Sie unter "Optionen für Kartenausdehnung" die Option "Nur Klassen anzeigen, die in der aktuellen Kartenausdehnung sichtbar sind".

Es wird aktualisiert, wenn Sie sich auf der Karte bewegen oder Klassen innerhalb des Layers ein- und ausschalten.


Dies scheint die gleiche Antwort zu sein wie ein Jahr zuvor .
PolyGeo

Vielen Dank, dass Sie genau wissen, wo sich das Kontrollkästchen versteckt hat!
JMers

1

Ich denke, dieser Code wird helfen:

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.