マップ ドキュメントの管理および出力のためのジオプロセシング スクリプト
ジオプロセシング arcpy.mapping モジュールの概要
arcpy.mapping モジュールは、Python スクリプト ライブラリの 1 つであり、これを使用して ArcMap のマップ ドキュメント(*.mxd)およびレイヤ ファイル(*.lyr)を開き、操作することができます。arcpy.mapping を使用するジオプロセシング スクリプトを使用すると、マップ ドキュメントとレイヤを開いたり、コンテンツを検索して変更したりできるだけでなく、変更したドキュメントを印刷、エクスポート、または保存することができます。
arcpy.mapping スクリプトの機能は、ArcMap アプリケーション内で実行される操作によく似ています。次の単純なワークフローを ArcMap で行うとします。
- C:\GIS\TownCenter_2009.mxd にあるマップ ドキュメントを開きます。
- 「GIS Services Division 2009」というレイアウト テキスト エレメントを見つけ、「GIS Services Division 2010」に変更します。
- 更新したマップ レイアウトを PDF にエクスポートします。
arcpy.mapping スクリプトは、これらのステップを次のように表します。
この単純な検索置換スクリプトは、「2009」を「2010」に変更してから、レイアウトを PDF ファイルにエクスポートします。
mxd = arcpy.mapping.MapDocument(r"C:\GIS\TownCenter_2009.mxd") for textElement in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"): if textElement.text == "GIS Services Division 2009": textElement.text = "GIS Services Division 2010" arcpy.mapping.ExportToPDF(mxd, r"C:\GIS\TownCenterUpdate_2010.pdf") del mxd
ジオプロセシング arcpy.mapping モジュールは、ArcMap でのワークフローを自動化する必要があるユーザが使用することを目的としています。これはプログラミングのように見え、強力な Python プログラミング言語によって制御されますが、GIS ソフトウェア開発者ではなくても arcpy.mapping スクリプトを作成できます。arcpy.mapping の目的は面倒な作業を自動化することであり、これにより重要な制作作業や分析作業に集中できます。
arcpy.mapping の目的と典型的なスクリプトのシナリオ
arcpy.mapping モジュールは、マップの管理および出力(印刷およびエクスポート)のワークフローを自動化するために開発されました。これにより提供される機能は、既存のマップ レイヤおよびレイアウト エレメントを変更することを主な目的としており、完全なマップ コンパイル システムとして設計されているわけではありません。マップ ドキュメントを新規作成し、マップ レイヤおよびレイアウトを作成するためには、対話形式の高度にビジュアルな ArcMap 環境が推奨されるシステムです。しかし、arcpy.mapping のレイアウト エレメント変更機能を正しく使用すると、最終的な製品としてのマップをすばやく作成できます。これらのワークフローを効果的に実行するには、arcpy.mapping スクリプトによって使用される構成要素を準備するためのマップの作成を慎重に行い、arcpy.mapping と ArcMap が正しく一緒に使用されることで、自動化されたマップ生成システムが実際に提供されるようにする必要があります。
arcpy.mapping の機能を理解する最も簡単な方法は、それが対応する主なシナリオを理解することです。arcpy.mapping スクリプトはさまざまなシナリオに対応しますが、以下にその主なものをいくつか示します。
- 特定のデータ ソースを参照するレイヤのあるマップのリストの作成。
- マップ ドキュメントのすべてのレイヤのデータ ソース リンクを更新または修復する。
- レイヤ、データ ソース、レイヤ タイプなどのドキュメントに含まれている情報に関するレポートを作成する。
- 一連のマップ ドキュメントを他のユーザに配布するために以前のバージョンの ArcGIS に保存する。
- マップ ドキュメントのコンテンツを開き、分析して、それに基づいてドキュメントのメタデータ(キーワード、サマリなど)を更新するこれで、ArcGIS 検索ユーティリティおよび ArcGIS.com でマップ ドキュメントのメタデータを検出したり、それにインデックスを付けたりすることができるようになります。
- マップをエクスポートするコマンドを使用して地理データを一度にまとめて作成する(マップ内のフィーチャのリストによって制御される一連の GeoTIFF 画像など)
- さまざまな PDF 地図帳を作成する
- タイトル ページ、複数のマップ ページ、および表形式レポートや連絡先リストなどの補足コンテンツを提供する任意の数の追加ページを含んでいる主題地図帳
- データ ドリブン ページをベースとするリファレンス地図帳
(詳細については「ArcGIS での地図帳の作成」を参照)
ジオプロセシング、arcpy.mapping、および ArcMap アプリケーションの拡張
arcpy.mapping モジュールは、ジオプロセシング フレームワークの一部です。したがって、arcpy.mapping スクリプトでは ArcGIS で使用できるジオプロセシング ツールを利用できます。また、arcpy.mapping を使用して作成したスクリプトをジオプロセシング スクリプト ツールにして、ArcToolbox および ModelBuilder で使用することもできます。
ジオプロセシング フレームワークの一部として、arcpy.mapping は、ArcMap アプリケーションをカスタマイズするためのフレームワークではなく、バッチ処理ツールとして使用されることを目的としています。arcpy.mapping を使用すると、独自のマップ処理システムを作成できるため、これは ArcMap を新しいツールで拡張する方法の 1 つと考えることができます。ただし、ジオプロセシングでは ArcMap のユーザ インタフェースを完全にカスタマイズすることができないため、arcpy.mapping を使用してすべての ArcMap オブジェクトおよび機能にアクセスすることはできません。
ArcObjects SDK を使用すると、すべてのオブジェクトおよび機能にアクセスできます。ArcObjects SDK とジオプロセシングは相補的な関係にあります。一般に、ArcObjects は ArcGIS を新しい振舞いで拡張するために使用され、ジオプロセシングはタスクを自動化するために使用されます。ArcObjects は、新しいユーザ インタフェースの追加、フィーチャクラスへのカスタム ロジックの追加、特殊なカートグラフィック レンダラの作成などに使用します。ジオプロセシングは、適切に動作しているフレームワークの範囲内でタスクを自動化するために使用されます。
スクリプトの使用と展開
arcpy.mapping を使用するスクリプトは、他のジオプロセシング スクリプトと同様に展開して実行できます。スクリプトを実行する方法は、それをいつ、どのように実行するかに応じて選択します。
- 地図帳をエクスポートするためのスクリプトは、スクリプト ツールとして効果的に動作することがあります。含めるマップ ドキュメントと出力ファイルをエクスポートする場所を定義する入力を取得するスクリプトを作成できます。ツールボックスのユーザ インタフェースが、入力を対話形式で定義できる操作性の高いユーザ インタフェースを提供します。
- マップを毎朝特定の時間に印刷するスクリプトは、Windows のタスクとして実行できる可能性があります。
- 無効なデータ ソース リンクを一覧表示するスクリプトは、ArcMap の Python ウィンドウから実行できます。このウィンドウでは、スクリプトから印刷されたメッセージを簡単に確認して、次に行うべき操作を決定することができます。
arcpy.mapping のすべてのクラスと機能については、次のトピックをご参照ください。