FAQ
ArcPy (ArcMap): マップ エレメントを操作する方法

ナレッジ番号:2954 | 登録日:2023/05/29 | 更新日:2024/06/20

概要

レイアウト ビューでは、マップ エレメント(タイトル、方位記号、縮尺記号など)をデータ フレームとともに操作することができます。ここでは、Python スクリプトを使用して、マップに追加してあるマップ エレメントに対して操作する方法をご紹介します。

マップ エレメントの種類

  • GraphicElement: Microsoft Excel のグラフ・表、Microsoft PowerPoint のスライド
  • LegendElement: 凡例
  • MapsurroundElement: 方位記号、縮尺記号、縮尺テキスト
  • PictureElement: 写真
  • TextElement: ダイナミック テキスト、テキスト

サンプル コード

※以下のサンプル コードを実行する場合は、ArcMap の [Python] ウィンドウをご利用ください。

# 取得したいマップ ドキュメントのフルパスを、MapDocument クラス コンストラクタに設定します。
mxd = arcpy.mapping.MapDocument(r"D:\FAQ\test.mxd")

# データ ビューの場合はレイアウト ビューに切り替えます。
if not mxd.activeView == "PAGE_LAYOUT":
    mxd.activeView = "PAGE_LAYOUT"

# ListLayoutElements 関数を使用して、表示しているすべてのマップ エレメントを取得します。
elementsList =  arcpy.mapping.ListLayoutElements(mxd)
for element in elementsList:
    print element.type + ": " + element.name

# 表示している凡例を取得します。
# ListLayoutElements 関数の第二引数にエレメントのタイプを指定し、第三引数にエレメントの名前を設定します。(ここではデフォルトの名前を設定しています)
legendElement =  arcpy.mapping.ListLayoutElements(mxd, "LEGEND_ELEMENT", "凡例")[0]
# レイヤがマップに追加された際に、凡例にもレイヤが追加されるよう設定します。
legendElement.autoAdd = True
# エレメントのサイズを変更します。
legendElement.elementWidth = 9.0
# エレメントの位置を変更します。
legendElement.elementPositionX = 20.0
legendElement.elementPositionY = 3.0

# 表示している縮尺テキストを取得します。
# ListLayoutElements 関数の第二引数にエレメントのタイプを指定し、第三引数にエレメントの名前を設定します。(ここではデフォルトの名前を設定しています)
mapsurroundElement =  arcpy.mapping.ListLayoutElements(mxd, "MAPSURROUND_ELEMENT", "Scale Text")[0]
# エレメントのサイズを変更します。
mapsurroundElement.elementWidth = 7.0
# エレメントの位置を変更します。
mapsurroundElement.elementPositionX = 21.0
mapsurroundElement.elementPositionY = 11.0

# 表示している縮尺記号を取得します。
# ListLayoutElements 関数の第二引数にエレメントのタイプを指定し、第三引数にエレメントの名前を設定します。(ここではデフォルトの名前を設定しています)
mapsurroundElement =  arcpy.mapping.ListLayoutElements(mxd, "MAPSURROUND_ELEMENT", "North Arrow")[0]
# エレメントのサイズを変更します。
mapsurroundElement.elementWidth = 5.0
# エレメントの位置を DataFrame クラスのプロパティから設定します。
df = arcpy.mapping.ListDataFrames(mxd, mapsurroundElement.parentDataFrameName)[0]
mapsurroundElement.elementPositionX = df.elementPositionX
mapsurroundElement.elementPositionY = df.elementPositionY

# 表示しているテキストを取得します。
# テキスト エレメントはデフォルトで名前が設定されていませんので、処理を行いたいエレメントのインデックス番号を指定します。
textElement =  arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT")[1]
# エレメントの名前を設定します。
textElement.name = "テスト テキスト"
# エレメントのテキストを入力します。
textElement.text = "テスト マップです"
# エレメントの文字サイズを変更します。
textElement.fontSize= 40.0
# エレメントの位置を変更します。
textElement.elementPositionX = 18.0
textElement.elementPositionY = 18.0

# マップを再描画します。
arcpy.RefreshActiveView()

# マップ ドキュメントを保存します。
mxd.save()

免責事項

こちらのサンプルはあくまでもコーディングの見本であり、実行時に発生したエラーの対処方法につきましては、サポート対象外とさせていただきます。また、操作方法やソースコードに関するご質問は別途有償の開発者サポート契約にてご対応させていただきます。なお、コードを実行して生じたいかなる損害についても弊社では責任を負いかねます。

メタデータ

種類

製品