Использование динамического текста для отображения титров слоев

9

Я ищу способ обновить «титры слоев» в динамическом текстовом поле. Я нашел способы использования кредитов карты или фрейм данных кредитов здесь , но не могу показаться способом получить информацию , полученную из слоя.

Кажется, я просто создаю пустую строку каждый раз. Кто-нибудь делал это или нашел обходной путь? Похоже, очень полезный способ обновить кредиты карты практически без ресурсов.

Свойства производного слоя

Slevy
источник
Это невозможно сделать динамически, поскольку все встроенные динамические тексты основаны на документе или фрейме данных. Однако это определенно возможно, если вы хотите запустить скрипт для заполнения текстового поля при каждом создании карты. Или даже заполнить кредиты карты из всех слоев слоев. Если это то, что вам нужно, я могу предоставить немного arcpy кода для этого.
Фезтер

Ответы:

17

Как упоминалось в моем комментарии выше, нет способа сделать это с помощью динамического текста. Тем не менее, вы можете написать скрипт для этого и прикрепить его к кнопке добавления Python или запустить, когда вы сохраняете MXD или что-то еще. Вам нужно будет создать текстовый элемент для хранения кредитов и назвать его примерно так: «КРЕДИТЫ» следующим образом:

введите описание изображения здесь

Основной код будет выглядеть примерно так:

mxd = arcpy.mapping.MapDocument("current")
credit_text = ""
for layer in arcpy.mapping.ListLayers(mxd):
    credit_text += (layer.credits + "\n") # separate each line with a carriage return
for el in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
    if el.name == "CREDITS":
        el.text = credit_text
Фезтер
источник
2
+1 Вот как бы я это сделал - ответил бы примерно с таким же кодом.
Midavalo