Usando texto dinâmico para exibir créditos de camada

9

Estou procurando uma maneira de atualizar os 'créditos de camada' em uma caixa de texto dinâmica. Encontrei maneiras de usar os créditos do mapa ou do quadro de dados aqui, mas não parece uma maneira de obter as informações derivadas de uma camada.

Parece que sempre produzo uma string vazia. Alguém já fez isso ou encontrou uma solução alternativa? Parece uma maneira extremamente útil de atualizar créditos de mapa com pouco ou nenhum recurso.

Propriedades da camada derivada

Slevy
fonte
Não há como fazer isso dinamicamente, pois os textos dinâmicos internos são todos baseados no documento ou no quadro de dados. No entanto, isso é definitivamente possível se você estiver disposto a executar um script para preencher um campo de texto toda vez que fizer um mapa. Ou então, preencha os créditos do mapa de todos os créditos da camada. Se é isso que você procura, eu posso fornecer algum código malicioso para fazer isso.
Fezter

Respostas:

17

Como mencionado no meu comentário acima, não há uma maneira de fazer isso usando texto dinâmico. No entanto, você pode escrever um script para fazer isso e anexá-lo a um botão add-python ou executar quando salvar o MXD ou algo assim. Você precisará criar um elemento de texto para armazenar os créditos e denominar algo como "CRÉDITOS" da seguinte forma:

insira a descrição da imagem aqui

O código básico seria algo como isto:

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
fonte
2
+1 É assim que eu faria - teria respondido com o mesmo código.
Midavalo