Використовуючи ArcGIS Desktop, чи існує можливість легенди відображати лише підпункти, які відображаються на карті?
Використовуючи ArcGIS Desktop, чи існує можливість легенди відображати лише підпункти, які відображаються на карті?
Відповіді:
Обмежувач легенд
Обмежувач легенд працює лише на шарах, які використовують "унікальні категорії значень" для визначення символіки. Цей стиль легенди можна встановити на вкладці "Символогія" діалогового вікна "Властивості шару". Ограничитель легенд не обмежує символіку шарів, встановлених символом єдиного символу.
Для цього не потрібно писати ніяких додаткових ArcPy. Просто використовуйте динамічні легенди (які були додані в ArcGIS 10.1) під час створення ваших карт.
Параметри обсягу карт дозволяють контролювати взаємодію елементів, які відповідають статусу легенди, з поточним масштабом карти. Якщо прапорець Показати лише класи класів, які видимі в поточному масштабі карти , позначення класу елементів легенди з’явиться в легенді, лише якщо функція цього класу знаходиться в поточному масштабі. Якщо жодних функцій цього елементу легенди немає в поточному масштабі, весь елемент буде видалений з легенди.
У вікні карти натисніть правою кнопкою миші Легенда, щоб відкрити вікно Властивості, а потім перейдіть на вкладку «Елементи». У розділі "Параметри обсягу карт" виберіть "Показати лише класи, які видимі в поточному масштабі карти".
Він буде оновлюватися під час переміщення по карті або вмикання / вимикання класів всередині шару.
Я думаю, що цей код допоможе:
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