ESRIジャパン株式会社 ArcGISブログ

検索

2012年5月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

RSS

« ArcGIS Server のマップ キャッシュ Tips (4) - マップ サービス公開ツール | メイン | Web アプリケーションにおけるイメージの利用:キャッシュ マップ サービスとイメージ サービスのどちらを使用すべき? »

2011年1月14日 (金)

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:\Project\TimeMapBook.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:\Project\Map.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]

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

#出力PDFファイルの定義
pdfPath =r"C:\Project\TimeMapBook.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 コードは、サンプルとして提供しておりますのでサポート対象外となります。従って、サンプルプログラムに関するご質問はお受けできません。
また、本サンプルを使用して生じたいかなる障害についても、弊社では責任を負いかねますことを予めご了承願います。

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/492067/25754086

Python コード例(その2): 時系列マップをPDF に出力する方法 を参照しているブログ: