Usar texto dinámico para mostrar créditos de capa

9

Estoy buscando una manera de actualizar los 'créditos de capa' en un cuadro de texto dinámico. He encontrado formas de usar los créditos de mapa o los créditos de marco de datos aquí, pero no puedo encontrar una manera de obtener la información derivada de una capa.

Parece que siempre produzco una cadena vacía. ¿Alguien ha hecho esto o ha encontrado una solución? Parece una forma extremadamente útil de actualizar créditos de mapas con pocos o ningún recurso.

Propiedades de capa derivada

Slevy
fuente
No hay forma de hacer esto dinámicamente, ya que los textos dinámicos integrados se basan en el documento o el marco de datos. Sin embargo, esto es definitivamente posible si está dispuesto a ejecutar un script para completar un campo de texto cada vez que crea un mapa. O incluso complete los créditos de mapa de todos los créditos de capa. Si esto es lo que buscas, puedo proporcionarte un código arcpy para hacerlo.
Fezter

Respuestas:

17

Como se mencionó en mi comentario anterior, no hay una manera de hacer esto usando texto dinámico. Sin embargo, podría escribir un script para hacer esto y adjuntarlo a un botón de complemento de Python o para ejecutarlo cuando guarde el MXD o algo así. Deberá crear un elemento de texto para contener los créditos y asígnele un nombre similar a "CRÉDITOS" de la siguiente manera:

ingrese la descripción de la imagen aquí

El código básico se vería así:

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
Fezter
fuente
2
+1 Así es como lo haría: habría respondido con el mismo código.
Midavalo