<\/HEAD>
前回の投稿では、ArcMapでマッピング作業を自動化するための5つのPythonコードスニペットを紹介しました。今回の投稿では、ArcGIS ProのPython windowを使って同じ作業を達成する方法を説明します。<\/P>
ArcGIS Proでは、マッピングモジュールはarcpy.mpと呼ばれています。以下のスニペットを試すには、ArcGIS Proプロジェクトファイル(APRX)のコピーを作成し、テスト用に別の場所に移動してください。Pythonの経験がなくても大丈夫です。単に以下のコードをPython windowに入力して結果を確認してください。<\/P>
いくつかのPythonのコツでマップ管理がどれほど速くなるかすぐにわかるでしょう。<\/P>
- 以下の各スニペットはArcGIS Pro 1.x、既存のプロジェクトファイル、arcpy.mpモジュール、およびPython 3.xで動作します。<\/LI><\/UL>
スニペット1:レイヤー定義クエリの確認<\/STRONG><\/SPAN><\/P><\/P>ArcGIS Proプロジェクト内のレイヤーに定義クエリが適用されているかどうかを確認し、もしあればその定義クエリを表示したいとします。各マップ内の各レイヤーについてレイヤープロパティダイアログボックスを開くのは面倒です。<\/SPAN><\/P><\/P>解決策:代わりにPython windowを開いて以下のコードを実行してください。すべてのレイヤーの名前と定義クエリが「印刷」(つまりPython windowに表示)されます。<\/SPAN><\/P>
<\/P>コード解説<\/STRONG><\/SPAN><\/P>最初の行は、CURRENTキーワードを使ってArcGISProject関数で開いているプロジェクトを参照する変数aprx<\/STRONG><\/span>を作成します。<\/SPAN><\/LI>次の行はlistMapsメソッドを使ってプロジェクト内のMapオブジェクトのPythonリストを返し、それをmaps <\/STRONG><\/span>という変数に格納します。<\/SPAN><\/LI>forループで各マップを繰り返し処理します。<\/SPAN><\/LI>各マップについてlistLayersメソッドでレイヤーリストを作成します。<\/SPAN><\/LI>さらに別のforループでレイヤーリスト内を繰り返します。<\/SPAN><\/LI>Layerクラスには名前や定義クエリなど多くのプロパティがあります。ただしすべてのレイヤータイプがすべてのプロパティに対応しているわけではないため、supportsメソッドでどのプロパティがサポートされているかテストしています。<\/SPAN><\/LI>最後に各マップ名、各レイヤー名、および各レイヤーの定義クエリが印刷(表示)されます。<\/SPAN><\/LI><\/UL>スニペット2:壊れたリンクの修正<\/STRONG><\/SPAN><\/P>ある時点で、マップデータをあるワークスペースから別のワークスペースに移動したことがあるでしょう。その際、赤い感嘆符マークが表示されたことはありませんか?<\/SPAN><\/P>
もしマップレイヤーへのパスが変更された場合でも、数行のコードで古いワークスペースパスを素早く見つけ、新しいワークスペースパスに一括置換できます。以下のコード行をPython windowで実行してください(古いおよび新しいワークスペースへのパスは必ず更新してください)。<\/SPAN>

コード解説<\/STRONG>
- 最初の行は前例と同様に、開いているArcGIS Proプロジェクトを参照する変数aprx<\/STRONG>を作成します。
updateConnectionPropertiesメソッドは、現在の接続情報(最初のパラメータ)を新しい接続情報(2番目のパラメータ)に置き換えます。この操作はプロジェクト内すべてのレイヤーとテーブルに適用されます。
詳細はこちら: データソースの更新と修正
スニペット3:壊れたデータソースがあるレイヤー特定
赤い感嘆符マークについてですが、arcpy.mp を使って壊れたリンクがあるレイヤーだけ出力することもできます。以下のコードをご覧ください。

コード解説
最初の行は上記例と同様に開いているプロジェクト参照用変数aprxを作成します。
最初と同様にlistMapsおよびlistLayersメソッドでプロジェクト内各マップ内レイヤーリストを作成します。
forループで各マップ内各レイヤーへ繰り返し処理し、それぞれ名前とisBrokenプロパティ値を印刷(表示)します。「\n」はマップ名前に改行挿入し、各マップ内レイヤー間区切りとして機能します。
スニペット4:レイヤーデータソース一覧取得
プロジェクト内全レイヤーのデータソース情報が必要だが、それぞれレイヤープロパティダイアログボックスを開きたくない場合は、以下コード行をPython windowで実行して名前とデータソース情報だけ印刷してください。

コード解説
この例も前例同様、プロジェクト変数(aprx)作成後、各マップおよびその中のレイヤーリスト作成から始まります。
ここではmap内各レイヤーごとにnameおよびdataSourceプロパティ値を印刷します。ただしdataSourceプロパティはすべてのレイヤーがサポートしているわけではないためsupportsメソッドで対応可否チェックしています。
スニペット5:PDFドキュメント結合
もしかするとあなたは マップブックを作成する場合や、経費報告書や領収書のように結合する必要があるPDFドキュメントがいくつかある場合があります。arcpy.mpと PDFDocumentクラス を使用してPDFドキュメントを操作できます。以下のコードを実行して、2つのPDFドキュメントを結合します。<\/SPAN><\/P>
<\/P>コードの内訳<\/STRONG><\/SPAN><\/P>最初の行のコードは、既存のPDFドキュメントを参照する変数 pdf<\/STRONG><\/SPAN> を作成します。<\/SPAN><\/LI>appendPagesメソッドは、参照されているPDFの末尾に別のPDFからページを追加するために使用されます。<\/SPAN><\/LI>変更を保存するには、saveAndCloseメソッドが使用されます。<\/SPAN><\/LI><\/UL>もっと学びたいですか?<\/STRONG><\/SPAN><\/P>ArcGIS Pro Pythonウィンドウでの作業やArcMapからArcGIS ProへのPythonスクリプトの移行についてもっと知りたい場合は、以下のリソースをご覧ください:<\/SPAN><\/P>チュートリアル: arcpy.mpの使い始め方<\/A><\/SPAN><\/LI>ArcGISヘルプ: arcpy.mappingからArcGIS Proへの移行<\/A><\/SPAN><\/LI><\/UL>ArcGIS Proの入門をご希望の場合は、これらのコースがおすすめです:<\/SPAN><\/DIV> <\/DIV>
Getting Started with ArcGIS Pro<\/A><\/SPAN><\/LI>ArcGIS Pro:Essential Workflows<\/A><\/SPAN><\/LI>Migrating from ArcMap to ArcGIS Pro<\/A><\/LI><\/UL><\/DIV>
この投稿はEsriインストラクターのBrittney Whiteによって寄稿されました。ワシントンD.C.を拠点とし、Brittneyはお客様がEsriテクノロジーを学び、自身の仕事に応用する手助けをすることに情熱を持っています。<\/SPAN><\/P><\/BODY><\/HTML>