マップ ブックにタイトルと概観図ページを追加する
ArcGIS には、地図帳を印刷形式または Adobe PDF 形式で作成するために必要なすべてのツールがあります。地図帳とは、一緒に印刷またはエクスポートされるページのコレクションのことです。ページの多くにマップが含まれていますが、その他のページはテキスト、表形式の情報、目次などのコンテンツのみで構成されていたり、タイトル ページであったりします。
より内容の充実した地図帳には、タイトル ページと概観図ページが含まれています。これは、ArcMap のデータ ドリブン ページと単純な arcpy.mapping Python スクリプトを組み合わせて使用することで作成できます。
上の例は、ミシガン州アレナク郡の地形地図帳を示しています。この地図帳には、タイトル ページと概観図ページが含まれています。このドキュメントは、データ ドリブン ページと arcpy.mapping Python スクリプトを使用して作成できます。
詳細については、「データ ドリブン ページの作成」をご参照ください。
この例には、次の前提が含まれています。
- [データ ドリブン ぺージ] を有効にした既存のマップ ドキュメントがある。
このコード例を、「ArcGIS を使ったマップ ブックの作成」で示されている、シンプル リファレンス シリーズ マップ ブックの例に使用します。
このマップ ブックは、次のヘルプ トピックで説明する手順に従って、再作成することができます。 - マップ ブックのタイトル ページとして、既存の PDF ファイルが存在する。
- 概観図ページを含む、既存の PDF ファイルが存在する。
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 を閉じます。