ダイナミックテキストを使用してレイヤークレジットを表示する


9

「レイヤークレジット」をダイナミックテキストボックスに更新する方法を探しています。ここでマップクレジットまたはデータフレームクレジットの使用方法を見つけましが、レイヤーから派生した情報を取得する方法とは思えません。

毎回空の文字列を生成するようです。誰かがこれをしたか、回避策を見つけましたか?リソースをほとんどまたはまったく使用せずにマップクレジットを更新する非常に便利な方法のようです。

派生レイヤーのプロパティ


組み込みのダイナミックテキストはすべてドキュメントまたはデータフレームに基づいているため、これを動的に行う方法はありません。ただし、マップを作成するたびにスクリプトを実行してテキストフィールドにデータを入力するつもりであれば、これは間違いなく可能です。または、すべてのレイヤークレジットからマップクレジットを入力することもできます。これがあなたの望んでいることなら、私はそうするためにいくつかのarcpyコードを提供できます。
Fezter

回答:


17

上記の私のコメントで述べたように、ダイナミックテキストを使用してこれを行う方法はありません。ただし、これを実行してpythonアドインボタンにアタッチするか、MXDなどを保存するときに実行するスクリプトを作成できます。クレジットを保持するテキスト要素を作成し、「CREDITS」のような名前を付ける必要があります。

ここに画像の説明を入力してください

基本的なコードは次のようになります。

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それが私のやり方です-ほとんど同じコードで答えたでしょう。
ミダバロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.