Czy za pomocą ArcGIS Desktop legenda może wyświetlać tylko podelementy wyświetlane na mapie?
Czy za pomocą ArcGIS Desktop legenda może wyświetlać tylko podelementy wyświetlane na mapie?
Odpowiedzi:
Legend Limiter
Ogranicznik legendy działa tylko na warstwach, które używają „unikalnych kategorii wartości” do zdefiniowania symboliki. Ten styl legendy można ustawić na karcie Symbolika w oknie dialogowym Właściwości warstwy. Legend Limiter nie ograniczy symboliki warstw ustawionych z symboliką z jednym symbolem.
W tym celu nie trzeba pisać żadnych dodatkowych ArcPy. Po prostu korzystaj z dynamicznych legend (które zostały dodane w ArcGIS 10.1) podczas tworzenia map.
Opcje zasięgu mapy pozwalają kontrolować, w jaki sposób kwalifikujące się elementy legendy współdziałają z bieżącym zasięgiem mapy. Jeśli pole wyboru Pokaż tylko klasy widoczne w bieżącym zasięgu mapy jest zaznaczone, klasa elementu legendy pojawi się w legendzie tylko wtedy, gdy obiekt z tej klasy znajduje się w bieżącym zakresie. Jeśli żadne elementy z tego elementu legendy nie znajdują się w bieżącym zakresie, cały element zostanie usunięty z legendy.
W widoku mapy kliknij prawym przyciskiem myszy Legendę, aby otworzyć okno Właściwości, a następnie kliknij kartę „Przedmioty”. W obszarze „Opcje zakresu mapy” wybierz „Pokaż tylko klasy widoczne w bieżącym zasięgu mapy”.
Odświeżą się podczas poruszania się po mapie lub włączania / wyłączania klas w warstwie.
myślę, że ten kod pomoże:
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