ArcGIS 10 で スクリプト言語であるPython の機能が拡張され、マッピング操作(mapping モジュール)をサポートするようになりました。ArcMap の機能の [マップのエクスポート] 機能と [タイム スライダ] ウィンドウを使用して手動でエクスポートすることもできますが、ArcGIS 10 の Pythonコードを使用すれば、時系列表現を持つマップを一度に PDF にエクスポートすることができます。
以下のマップを表紙つきPDFに出力します。(1ヶ月間の気温などのデータを1日ごとに表示)
・マップの時系列表現の詳細はこちらをご覧ください。
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が簡単に作成できます。ぜひ皆さんご活用ください。
参考ヘルプ:※一部英語のままですのでご了承ください。
・DataFrameTime(mapping モジュール)
・PDFDocument(mapping モジュール)
・ExportToPDF(mapping モジュール)
・時系列マップの印刷とエクスポート
[注意事項]
本 Python コードは、サンプルとして提供しておりますのでサポート対象外となります。従って、サンプルプログラムに関するご質問はお受けできません。
また、本サンプルを使用して生じたいかなる障害についても、弊社では責任を負いかねますことを予めご了承願います。
■関連リンク
・Python コード例(その1):表紙つきPDFを作成する方法
・Python コード例(その3):フィールド演算を使用して昇順で ID を割り当てる方法
・Python コード例(その4):ArcPy で Geometry オブジェクトを使用する方法
・Python コード例(その5):ModelBuilder で Python の “If 文” を使用する
