Python コード例(その2):時系列マップをPDF に出力する方法

ArcGIS 10 で スクリプト言語であるPython の機能が拡張され、マッピング操作(mapping モジュール)をサポートするようになりました。ArcMap の機能の [マップのエクスポート] 機能と [タイム スライダ] ウィンドウを使用して手動でエクスポートすることもできますが、ArcGIS 10 の Pythonコードを使用すれば、時系列表現を持つマップを一度に PDF にエクスポートすることができます。
以下のマップを表紙つきPDFに出力します。(1ヶ月間の気温などのデータを1日ごとに表示)

Python2_2

・マップの時系列表現の詳細はこちらをご覧ください。

Pythonウィンドウでの記述
現在のマップの開始時間から終了時間まで時間ステップごとに、1枚のPDFに出力する例

import arcpy,os
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
df.time.currentTime = df.time.startTime
interval = datetime.timedelta(days=1)
pdfPath =r"C:ProjectTimeMapBook.pdf"
if os.path.exists(pdfPath):
 os.remove(pdfPath)
 pdfDoc = arcpy.mapping.PDFDocumentCreate(pdfPath)
 while df.time.currentTime <= df.time.endTime:
  fileName = str(df.time.currentTime).split(" ")[0] + ".pdf"
  PDFName = r"C:Project" + os.sep + fileName
  arcpy.mapping.ExportToPDF(mxd, PDFName)
  pdfDoc.appendPages(PDFName)
  df.time.currentTime = df.time.currentTime + interval
  if os.path.exists(PDFName):
   os.remove(PDFName)
   del mxd
   pdfDoc.saveAndClose()
   del pdfDoc

Pythonスクリプトでの記述

# -*- coding: cp932 -*-

#マップをPDFに出力する
import arcpy,os

#マップの指定
mxd = arcpy.mapping.MapDocument(r"C:ProjectMap.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]

#時間の定義
df.time.currentTime = df.time.startTime

#出力PDFファイルの定義
pdfPath =r"C:ProjectTimeMapBook.pdf"

if os.path.exists(pdfPath):
 os.remove(pdfPath)

#マップをPDFにエクスポート
pdfDoc = arcpy.mapping.PDFDocumentCreate(pdfPath)
while df.time.currentTime <= df.time.endTime:
 fileName = str(df.time.currentTime).split(" ")[0] + ".pdf"
 PDFName = r"C:Project" + os.sep + fileName
 arcpy.mapping.ExportToPDF(mxd, PDFName)
 pdfDoc.appendPages(PDFName)
 df.time.currentTime = df.time.currentTime + df.time.timeStepInterval
 if os.path.exists(PDFName):
  os.remove(PDFName)
  del mxd

#出力ファイルを保存して閉じる
pdfDoc.saveAndClose()
del pdfDoc

上記コードを使用して以下のようなPDFが簡単に作成できます。ぜひ皆さんご活用ください。

Python22_2

参考ヘルプ:※一部英語のままですのでご了承ください。
DataFrameTime(mapping モジュール)
PDFDocument(mapping モジュール)
ExportToPDF(mapping モジュール)
時系列マップの印刷とエクスポート

[注意事項]
本 Python コードは、サンプルとして提供しておりますのでサポート対象外となります。従って、サンプルプログラムに関するご質問はお受けできません。
また、本サンプルを使用して生じたいかなる障害についても、弊社では責任を負いかねますことを予めご了承願います。

■関連リンク
Python コード例(その1):表紙つきPDFを作成する方法
Python コード例(その3):フィールド演算を使用して昇順で ID を割り当てる方法
Python コード例(その4):ArcPy で Geometry オブジェクトを使用する方法
Python コード例(その5):ModelBuilder で Python の “If 文” を使用する