ArcMapのPython windowを試してみたいと思っていたけれど、どう始めればいいかわからなかったことはありませんか?以下の5つのコードスニペットは、Python windowとarcpy.mapping moduleに慣れるための素晴らしいツールです。MXDファイルのコピーを作成し、どこかに移動してこれらのスニペットを試してみてください。すぐにいくつかのPythonのトリックが地図管理タスクにどれほど役立つかがわかるでしょう。<\/P>
これらのスニペットを使うためにPythonの構文を知っている必要はありません。単にコードをPython windowに入力し、結果を確認してください。<\/P>
スニペット1: レイヤー定義クエリの確認<\/STRONG><\/SPAN><\/P>マップドキュメント内のレイヤーに定義クエリが適用されているかどうかを確認し、もしあればその定義クエリを表示したいとします。各レイヤーのレイヤープロパティダイアログボックスを開くのは面倒です。<\/P> <\/P>解決策:代わりにPython windowを開いて以下のコードを実行してください。すべてのマップレイヤーの名前と定義クエリが「印刷」(つまりPython windowに表示)されます。<\/P><\/P>コード解説<\/STRONG><\/SPAN><\/P>最初の行は、開いているマップドキュメントを参照する変数mxdを作成します。この際CURRENTキーワードが使われています。<\/LI>ListLayers関数はマップドキュメント内のすべてのレイヤーのリストを作成し、forループで各レイヤーを繰り返し処理します。<\/LI>Layer classには多くのプロパティがあり、その中にはレイヤーの定義クエリも含まれます。すべてのレイヤータイプがすべてのプロパティをサポートしているわけではないため、supportsメソッドでどのプロパティがサポートされているかテストしています。<\/LI>最後の行は各レイヤー名とその定義クエリを表示(プリント)します。<\/LI><\/UL> <\/P>スニペット2: 壊れたリンクの修正<\/STRONG><\/SPAN><\/P>ある時点で、マップデータをあるワークスペースから別のワークスペースに移動したことがあるでしょう。その時、赤い感嘆符マークを見たことはありませんか? <\/P><\/P>もしマップレイヤーへのパスが変更された場合、数行のコードで古いワークスペースパスを見つけ、新しいワークスペースパスに一括で置き換えることができます。以下のコードをPython windowで実行してください(古いワークスペースと新しいワークスペースへのパスはご自身で更新してください)。<\/SPAN><\/P><\/SPAN><\/P>コード解説<\/STRONG><\/SPAN><\/P>最初の行は前述と同様に開いているマップドキュメントを参照する変数mxdを作成します。<\/LI>findAndReplaceWorkspacePathsメソッドは古いワークスペース(第1引数)を検索し、新しいワークスペース(第2引数)にすべてのレイヤーとテーブルで更新します。<\/LI>RefreshActiveView関数は目次と地図上で変更内容を見るために使用されます。<\/LI><\/UL> <\/P>スニペット3: 壊れたデータソースがあるレイヤーの特定<\/STRONG><\/SPAN><\/P>赤い感嘆符について言えば、arcpy.mappingを使って壊れたリンクがあるレイヤーを以下のコードで表示することもできます。<\/P>
コード解説<\/STRONG>
スニペット4: レイヤーデータソース一覧取得
マップ内すべてのレイヤーについてデータソースが知りたいけれど、それぞれレイヤープロパティダイアログボックスを開きたくない場合は、以下のコードをPython windowで実行して名前とワークスペースパスを表示してください。
コード解説
この例では各レイヤーについてnameプロパティとworkspacePathプロパティが表示されます。ただしすべてのレイヤーがworkspacePath(例えばWebサービスなど)を持つわけではないのでsupports メソッドが使われています。
スニペット5: PDFドキュメント結合
地図帳を作成している場合や経費報告書や領収書など複数PDFドキュメントを結合したい場合があります。arcpy.mappingとPDFDocument class を使ってPDFドキュメント操作が可能です。以下コードで2つのPDFドキュメントを結合できます。
< /STRONG ></ P >< P >< SPAN >< STRONG >コード解説< / STRONG ></ SPAN ></ P >< UL >< LI >最初に既存PDFドキュメント参照用変数pdf< / SCRIPT > が作成されます。</ LI >< LI >< A href = "http://desktop.arcgis.com/en/arcmap/latest/analyze/arcpy-mapping/pdfdocument-class.htm#M1_GUID-36E69E05-DD9D-4019-8D1D-2664828EF6BB " target = " _blank " rel = " noopener nofollow noreferrer " >appendPages < / A > メソッドで別PDFからページ追加します。</ LI >< LI >< A href = "http://desktop.arcgis.com/en/arcmap/latest/analyze/arcpy-mapping/pdfdocument-class.htm#M1_GUID-36E69E05-DD9D-4019-8D1D-2664828EF6BB " target = " _blank " rel = " noopener nofollow noreferrer " >saveAndClose < / A > メソッドで変更保存・閉じます。</ LI ></ UL >< HR />< P > < / P >< P >< SPAN >< STRONG >もっと学びたいですか?< / STRONG ></ SPAN >< / P >< P >ArcMap Python windowやスタンドアロンPythonスクリプト作成についてもっと学びたい場合は、以下リソースがおすすめです:< / P >< UL >< LI >ArcGISヘルプ: < A title = "ArcGIS help topic for Python arcpy.mapping module " href = " http://desktop.arcgis.com/en/arcmap/latest/analyze/arcpy-mapping/updatingandfixingdatasources.htm " target = " _blank " rel = " noopener nofollow noreferrer " >arcpy.mappingによるデータソース更新と修正< / A ></ LI >< LI >チュートリアル: < A href = " http://desktop.arcgis.com/en/arcmap/latest/analyze/arcpy-mapping/getting-started-with-arcpy-mapping-tutorial.htm " target = " _blank " rel = " noopener nofollow noreferrer " >arcpy.mapping入門< / A ></ LI >< LI >ウェブコース: < A href = " https://www.esri.com/training/catalog/57630437851d31e02a43f210/python-scripting-for-map-automation/ " target = " _blank " rel = " noopener nofollow noreferrer " >Python マップ自動化のためのスクリプティング
この投稿はEsriインストラクター@Brittney Whiteによる寄稿です。
Also, Brittany teaches a great 3-day course.
I never knew about the PDFDocument class. That's pretty handy!
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.