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 文” を使用する