マップ ブックにタイトルと概観図ページを追加する

ArcGIS には、マップ ブックを印刷形式または Adobe PDF 形式で作成するために必要なすべてのツールがあります。マップ ブックとは、一緒に印刷またはエクスポートされるページのコレクションのことです。ページの多くにマップが含まれていますが、その他のページは、テキスト、表形式の情報、目次、タイトル ページ、またはその他のコンテンツで構成されていることがあります。

より内容の充実したマップ ブックには、タイトル ページとマップ インデックス(または概観図)ページが含まれています。これは、ArcMap のデータ ドリブン ページと arcpy.mapping Python スクリプトを組み合わせて使用することで作成できます。単一のマップ ドキュメント(単一レイアウト)のデータ ドリブン ページを使用してマップ ブックのマップ ページを作成し、別のマップ ドキュメントを使用してマップ インデックス ページを作成します。また、別のマップ ドキュメントを使用してタイトル ページを作成したり、他のソフトウェアを使用してタイトル ページの PDF ドキュメントを作成することもできます。これらすべての要素を単一のマップ ブックに統合するには、arcpy.mapping を使用します。

マップ ブックのタイトル ページの例

上の例は、ミシガン州アレナク郡の地形マップ ブックを示しています。このマップ ブックには、タイトル ページと概観図ページが含まれています。このドキュメントは、データ ドリブン ページと arcpy.mapping Python スクリプトを使用して作成できます。

詳細については、「データ ドリブン ページの作成」をご参照ください。

この例には、次の前提が含まれています。

ヒントヒント:

ArcMap を使用して、タイトルと概観図のページを作成できます。各ページの内容を編集し、それぞれを別の PDF ファイルにエクスポートします。

マップ ブックにはページ番号が表示されるため、データ ドリブン ページの開始ページ番号には、必ずその前にある最終的なマップ ブックの全ページを含めた番号を設定する必要があります。この例の場合、マップ ページの前に 2 ページあるので、マップ ページは ページ 3 から開始します。[データ ドリブン ページの設定] ダイアログ ボックスの [開始ページ番号] の値が「3」になっていることを確認します。

[データ ドリブン ページの設定] の [開始ページ番号] の設定例

ページ番号を表示する場合には、正しいテキスト エレメントを使用していることも確認します。[総ページ数付きページ番号] は使用しないでください。この総ページ数は、データ ドリブン ページのみの合計数だからです。タイトル ページやレポート ページなどの、最終的なマップ ブックに含めるその他のページは含まれません。その代わりに、[ページ番号] を使用してこの動的テキストに静的テキストを組み合わせて、「Page <dyn type="page" property="number"/> of 26」のようにページの合計数を示します。

マップ ドキュメントと PDF ファイルの用意ができたら、以下のコードを実行して、最終的なマップ ブックの PDF を作成します。Python ウィンドウまたはスタンドアロンの Python アプリケーションで、このコードを実行することができます。

このトピックのコードは、上記のマップ ブックの例に適用されるものですが、ここに示した手順やヒントを、独自のマップ ブックに適用することもできます。

このスクリプトでは、マップ ブックをエクスポートして、タイトルや概観図を追加した PDF を作成することができます。

import arcpy, os

# Create an output directory variable
#
outDir = r"C:\temp\MBExample\final_output"  

# Create a new, empty pdf document in the specified output directory
#
finalpdf_filename = outDir + r"\FinalMB.pdf"
if os.path.exists(finalpdf_filename):
  os.remove(finalpdf_filename)
finalPdf = arcpy.mapping.PDFDocumentCreate(finalpdf_filename) 

# Add the title page to the pdf
#
finalPdf.appendPages(r"C:\temp\MBExample\ancillary_pages\TitlePage.pdf")

# Add the index map to the pdf
#
finalPdf.appendPages(r"C:\temp\MBExample\maps\IndexMap.pdf")

# Export the Data Driven Pages to a temporary pdf and then add it to the
# final pdf. Alternately, if your Data Driven Pages have already been
# exported, simply append that document to the final pdf.
#
mxdPath = r"C:\temp\MBExample\maps\ArenacDDP.mxd"
tempMap = arcpy.mapping.MapDocument(mxdPath)
tempDDP = tempMap.dataDrivenPages
temp_filename = r"C:\temp\MBExample\temp_pdfs\tempDDP.pdf"
if os.path.exists(temp_filename):
  os.remove(temp_filename)
tempDDP.exportToPDF(temp_filename, "ALL")
finalPdf.appendPages(temp_filename)

# Update the properties of the final pdf
#
finalPdf.updateDocProperties(pdf_open_view="USE_THUMBS",
                             pdf_layout="SINGLE_PAGE")

# Save your result
#
finalPdf.saveAndClose()

# Delete variables
#
del finalPdf, tempMap, tempDDP

コードの最初の行は、必要なモジュールをインポートし、最終的なマップ ブックの PDF が保存される、出力場所の変数を作成します。そして、指定された出力場所のフォルダに、新しい空の PDF ドキュメントを作成します。この PDF が、このスクリプトの最終的な出力となります。

ヒントヒント:

Python などのプログラミング言語は、円記号(\)をエスケープ文字として扱います。たとえば、\n は改行を表し、\t はタブを表します。パスを指定する際には、スラッシュ(/)を円記号の代わりに使用できます。1 つではなく 2 つの円記号を使用すれば、構文エラーを避けることができます。また、円記号を含む文字列が正しく解釈されるように、文字列の前に文字 r を置くことによって、文字列リテラルを使用することもできます。

詳細については、arcpy.mapping の「PDFDocument クラス」をご参照ください。

コードの次の行は、最終的な PDF にタイトル ページと概観図のページを追加します。この例は、タイトルと概観図のページに使用できる、既存の PDF ドキュメントがあることを前提としています。

次のステップは、マップ ページの追加です。[データ ドリブン ぺージ] を有効にしたマップ ドキュメントが存在する必要があります。この例では、このドキュメントは ArenacDDP.mxd になります。

詳細については、arcpy.mapping の「MapDocument クラス」と「DataDrivenPages クラス」をご参照ください。

最後に、コードによってプロパティが更新され、最終的な PDF を閉じます。

関連トピック

5/10/2014