Отображать только элементы легенды, которые фактически отображаются на карте в ArcGIS Desktop?

14

Используя ArcGIS Desktop, есть ли у легенды способ отображать только те подпункты, которые отображаются на карте?

dassouki
источник
Вы пытались преобразовать легенду в графику? После преобразования в графику вы можете вручную удалить ненужные элементы в легенде. Надеюсь, это поможет. Благодарю.
Радж
1
@Raj - О нет, я не планирую делать так, что поддержание карт будет болезненным
dassouki
1
Связанный вопрос - это еще один вопрос, на который дан ответ. Поэтому задайте новый вопрос, подробно описывающий вашу проблему.
MathiasWestin
1
Старый вопрос помечен как Arcgis 9.3, так что вы должны хорошо задать новый вопрос и пометить для ArcGIS 10. Кроме того, связанный вопрос - это ответ, и вы задаете вопрос об устранении неполадок для ограничителя легенды.
Джей Камминс
Кроме того, вопросы по поиску и устранению неисправностей могут занять некоторое время, и вы должны постараться, чтобы тело вопроса было организовано с новой информацией, чтобы за ней было легко следить. Или же другие пользователи посмотрят его и перейдут к следующему вопросу.
Джей Камминс

Ответы:

9

Legend Limiter

Ограничитель легенды работает только со слоями, которые используют «категории уникальных значений» для определения символов. Этот стиль легенды можно настроить на вкладке «Символы» диалогового окна «Свойства слоя». Ограничитель легенды не ограничивает символику слоев, созданных с помощью символики с одним символом.

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

Mapperz
источник
Это самое близкое к тому, что мне нужно. По сути, я должен преобразовать все свои символы в уникальные значения
dassouki
@ Mapperz - здесь есть исправление для ArcGIS 10: forums.arcgis.com/threads/24968-Legend-Limiter-in-Arc-10
Dano
@ Mapperz (или любой другой) - я скачал необходимые файлы для Legend Limiter по ссылке, которую я разместил выше. При попытке установки я получил сообщение об ошибке, которое я погуглил. У меня складывается впечатление, что не существует патча, обеспечивающего совместимость этого дополнения с ArcGIS 10 и Windows 7. В этой теме стоит ли мне начинать новый вопрос, связанный с этой темой? Или .... кто-нибудь знает о патче, отвечающем обоим параметрам (Arc 10 и Windows 7) /
Dano
3
Запуск в режиме совместимости с Windows на Windows 7.
Mapperz
@ Mapperz - можете ли вы опубликовать этот ответ, чтобы я мог выбрать его в качестве ответа. Мой вопрос по этой проблеме находится здесь: gis.stackexchange.com/questions/12609/…
Дано
11

Для этого не нужно писать никаких дополнительных ArcPy. Просто используйте динамические легенды (которые были добавлены в ArcGIS 10.1), когда вы создаете свои карты.

Параметры экстента карты позволяют контролировать взаимодействие элементов легенды с текущим экстентом карты. Если установлен флажок Только показывать классы, видимые в текущем экстенте карты , класс элементов легенды будет отображаться в легенде только в том случае, если элемент этого класса находится в текущем экстенте. Если в текущем экстенте отсутствуют элементы из этого элемента легенды, весь элемент будет удален из легенды.

PolyGeo
источник
4

В представлении карты щелкните правой кнопкой мыши на легенде, чтобы открыть окно свойств, а затем перейдите на вкладку «Элементы». В разделе «Параметры экстента карты» выберите «Показывать только классы, видимые в текущем экстенте карты».

Он будет обновляться по мере перемещения по карте или включения / выключения классов в слое.

vputinski
источник
Спасибо за то, что указали, где скрывается флажок!
JMers
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
newGIS
источник