データ ドリブン ページがなくなった!? ArcGIS Pro マップ シリーズについて学ぼう!~その 4 Python で連続して画像に出力~

今回は、マップ シリーズ連載記事の第 4 弾です!

第 1 弾第 2 弾の記事では ArcGIS Pro を使用して図郭ごとにマップを画像に出力する方法を紹介しました。今回はプログラミング言語である Python を使ってマップ シリーズの機能を操作して画像を出力する方法を紹介します。

ArcGIS Desktop には Python スクリプトから GIS データを操作するための ArcPy と呼ばれるパッケージ(モジュール、関数、クラスの集まり)が用意されています。ArcGIS Pro では専用の Python ウィンドウを使用して ArcPy で作成したスクリプトを実行できます。

第 1 弾・第 2 弾の記事を参考にマップ シリーズを設定したマップとレイアウトを ArcGIS Pro で開きます。

Python ウィンドウは、[表示] タブの [Python] ボタンをクリックして開けます。

以下のコードを Python ウィンドウに入力して実行すると、所定のフォルダーにマップ シリーズのページ名をファイル名とする PDF ファイルを連続出力できます。

[Python コード]

# arcpy のインポート
import arcpy

# ArcGSI Pro で現在開いているプロジェクトを取得
project = arcpy.mp.ArcGISProject("CURRENT")

# ArcGSI Pro のプロジェクトが持つレイアウトを取得
layout = project.listLayouts()[0]

# マップ シリーズで設定させた各ページにアクセスして PDF ファイルに出力
if layout.mapSeries is not None:
  ms = layout.mapSeries
  if ms.enabled:
    for pageNum in range(1, ms.pageCount + 1):
      ms.currentPageNumber = pageNum
      print("{0}/{1}ページを出力中".format(str(ms.currentPageNumber), str(ms.pageCount)))

      # PDF ファイル名をマップ シリーズのページ名(マップ シリーズ設定時に [名前フィールド] に指定したフィールド名(ここでは SIKUCHOSON))に設定
      layout.exportToPDF(r"C:\Temp\ArcPy\{0}".format(ms.pageRow.SIKUCHOSON) + ".pdf")

※ PDF ファイルの出力先フォルダー(「C:\Temp\ArcPy」)は事前に作成しておいてください。Python ウィンドウで入力したコードの最後にマウス カーソルを合わせて、Enter キーを 2 回押すと処理が開始されます。

紹介したコードでは、図郭ごとに 1 つの PDF ファイルを出力しましたが、1 つの PDF ファイルに図郭ごとのページを挿入し、複数ページの PDF ファイルを作成することもできます。また、ArcPy は通常の Python の実行環境と同様にコマンドラインから実行できるので、定期的にレポートを自動出力することもできます。ArcPy を使った自動処理に興味がある方は、GeoNet 開発ブログで ArcPy の基礎について紹介していますので、あわせてご覧ください。

次回のマップ シリーズ記事第 5 弾では、ArcMap で設定した内容を ArcGIS Pro で利用する方法についてご紹介します!

※ 本記事の内容についてお問合わせ受付や技術サポートはおこなっておりませんので、あらかじめご了承願います。