ArcPy 入門から一歩先へ ~リファレンスを読んでみよう~

1084
0
09-11-2025 07:35 PM
Labels (1)

ArcPy 入門から一歩先へ ~リファレンスを読んでみよう~

はじめに

ESRIジャパンでは GISコミュニティフォーラムなどの機会に ArcPy 入門者向けセッションを開催しています。そのアンケートで「リファレンスの調べ方を知りたい」というご意見をいただくことがあります。この意見にこたえるために本記事では ArcPy 入門後にリファレンスを読むコツを紹介します。

本記事は ArcPy のリファレンス ページに焦点を当てた記事となります。

ArcPy の基礎を全体的に学習したい方はこちらの教材をご覧ください。基礎から応用まで専門の講師から学びたい方はトレーニングの利用をご検討ください。

 

なぜリファレンスを見る必要があるのか

ArcPy は ArcGIS Pro の操作を Python で実行し、自動化させることができるライブラリーです。ジオプロセシングツールから直接スクリプトを参照できる点、サンプル コードが豊富に提供されている点、トレーニング コースが存在する点などからリファレンスを見ることなくスクリプトを記述できるケースがあります。数のサンプルを組み合わせ、一連の処理の流れを作りたい時、細かく処理やデザインをカスタマイズしたい時、そして ArcGIS Pro からスクリプトを作り出す方法が使えない時には物足りなく感じることがあるかもしれません。そんな時に、リファレンスが読めるとこれらの問題を解決することができ、より自分の意志の通りに処理ができるようになります。

 

画面の構成の説明

次の画像が ArcGIS Pro Python リファレンス、すなわち ArcPy のリファレンスのトップ画面になります。

RyotaAMBO_0-1757564423454.png

 

ArcPy に関する内容はこのページからアクセスできます。ジオプロセシング ツールの場合は Python タブの隣にあるツール リファレンス タブからアクセスできます。

ページ左には「ArcPy 関数」、「ArcPy クラス」のほか機能ごとに分類されたモジュールが表示されています。よく使われるものに注目していくつか紹介します。

データ アクセス モジュール

データにアクセスするためのクラスや関数が分類されています。Describe 関数やカーソルが代表的です。

マッピング モジュール

プロジェクト ファイル(.aprx)、マップ、レイヤーを操作するために使います。マップ作成、エクスポートを自動化する手順でよく使われます。モジュールの中では一番見慣れた方が多いかと思います。チュートリアルではプロジェクト ファイルの取得から作成したマップのエクスポートまでの一連の流れが解説されています。

共有モジュール

ArcPy を使って ArcGIS Pro から ArcGIS Online、もしくは ArcGIS Enterprise にコンテンツをアップロードするために使います。マップやレイヤーだけでなくツールやサービスの公開や共有もできます。

モジュールやジオプロセシング ツール以外にも様々なクラスや関数が提供されています。詳しくは ArcPy クラスArcPy 関数を参照してください。 次のセクションからは、ArcPy のツール、関数、クラスのそれぞれのリファレンス ページの読み方を見ていきましょう。

 

ツール・ クラス・関数のリファレンスの読み方

ツール リファレンスの読み方

ここでは、属性検索ページを一例として見ていきましょう。

ツール リファレンスの場合は以下のような見出しでページが構成されています。

・サマリー

・使用法

・パラメーター

    ・ダイアログ

    ・Python

・環境

・ライセンス情報

・関連トピック

ツールの説明についてはサマリーや使用法から確認できます。ArcPy を使う時はパラメーターの Python を確認します。例えば、今回扱うフィーチャのエクスポートでは以下の図のようになっています。

RyotaAMBO_1-1757564423456.png

 

図の番号順に見ていきましょう。まず 1 番の箇所は使い方の構文です。ツールの場合は基本的に「arcpy.ツールボックスのエイリアス名.ツール名(パラメーター)」の形になっています。

次に 2 番の箇所は各パラメーターの名前と説明です。1 番のパラメーターに「{}」がついているものは「(オプション)」と書かれています。これは必要であれば入力するパラメーターに追加します。必要なければ追加する必要がないので省略することで書く量を減らすことができ、スクリプトがよりシンプルになります。

最後に 3 番の箇所はデータ タイプです。どのような種類のデータが必要かを示しています。スクリプトの途中で変数のデータ タイプを探す時は type 関数を使うことができます。

ツールを実行すると戻り値として Result オブジェクトが返ってきます。Result オブジェクトからツールの操作に関する情報を取得することができます。出力やメッセージなどの操作に関する情報を取得したり、別のパラメーターに使うこともできます。

 

コラム -余計なパラメーターを減らす-

例えば、次のようにジオプロセシング ツールの属性検索を実行し、結果を Python ウィンドウに送信したとします。

RyotaAMBO_2-1757564423457.png

 

次の画像がツールを実行後 Python ウィンドウに送信したものになります。

RyotaAMBO_3-1757564423459.png

 

今回使用している属性検索は必須パラメーターが in_layer_or_view のみです。オプションのパラメーターについては where_clause以外は全て None やデフォルト値を選択しています。None やデフォルト値を使用する場合は書かなくても動作に影響はありません。次の図のように不要なパラメーターを省略するとよりすっきりした見た目になります。

RyotaAMBO_4-1757564423459.png

 

サンプル コード

Python タブを開くと、パラメーターの下にコードのサンプルが表示されます。主に Python ウィンドウで実行するためのスクリプトとスタンドアロン スクリプトがあります。前者は不必要なパラメーターが削られているスクリプトであるため、シンプルなコードを作成する手掛かりにも使えます。

クラス・ 関数のリファレンスの読み方

クラスの場合は以下のような見出しでページが構成されています。

・サマリー

・説明

・プロパティ

・方法の概要

・方法

    ・構文

    ・戻り値

・コードのサンプル

関数の場合は以下のようになります。

・サマリー

・説明

・構文

    ・戻り値

・コードのサンプル

前述のツールの場合でも紹介していますが、「{}」がついているものは任意となるのでパラメーターやメソッドを入力する時に自分で調整します。

ここでは最もよく目にするクラスの 1 つである ArcGISProject クラスを見てみましょう。

冒頭からサマリーや説明が書かれていますが、その次にプロパティが現れます。このセクションでは各クラスに含まれるプロパティ、その説明とデータ タイプが書かれています。プロパティが別のクラスになる場合はリンクから辿ることもできます。

RyotaAMBO_5-1757564423461.png

 

その次はクラスに含まれるメソッドの説明が現れます。メソッドについてはまず、「方法の概要」セクションで各メソッドの名前と短い概要が列挙され、その次の「方法」セクションで個別に詳しくメソッドの説明が書かれています。

RyotaAMBO_6-1757564423462.pngRyotaAMBO_7-1757564423463.png

 

サンプル コードはクラスや関数により数が異なります。例えば、ArcGISProject クラスでは 8 つのサンプル コードがあります。

 

リファレンスを見たい場面 -Python に送信機能が使えないとき-

ここまで ArcPy リファレンスの構成についてツールと「クラス・関数」に分けて確認しました。ArcPy でスクリプトを作成する際にはリファレンスを見ながら書いていくと思いますが、ArcGIS Pro を使用する場合はツールの履歴画面から「Python ウィンドウに送信」や「ノートブックに送信」を使用してスクリプトの一部を作る方もいると思います。

RyotaAMBO_8-1757564423464.png

 

この手法はツールのみが対象で、ツールにないシンボル設定やエクスポートなどのコマンドはリファレンスを参照し自作する必要があります。例えば ArcPy を利用して ArcGIS Pro 上のフィーチャ レイヤーを ArcGIS Online にフィーチャ サービスとして公開する流れは一部の過程のみツールが対応しているのでリファレンスを見ながらスクリプトを自作する必要があります。次の章ではコマンドの一例としてシンボル変更のスクリプトを見ていきます。

 

リファレンスを見ながら短いスクリプトを作成してみよう

今回はレイヤーの見た目を変更したいと思います。色分けをするレンダラーと色を設定するシンボルを使って変更を行います。

# lyrs はレイヤーのリスト、lyr は一つ一つのレイヤーのオブジェクト
for lyr in lyrs:
    if lyr.name == "放置車両":
        sym = lyr.symbology
        sym.updateRenderer("GraduatedColorsRenderer") # 等級色
        sym.renderer.classificationField = "total"  #分類するフィールド名
        sym.renderer.classificationMethod = "Quantile" # 等量分類
        sym.renderer.breakCount = 5 # クラス
        lyr.symbology = sym

まず、レンダラーにアクセスします。Layer クラスsymbology プロパティを取得し、レンダラーにアクセスできるようにします。

sym = lyr.symbology

今回はシンボルの変更を行うので、symbology クラスにある updateRenderer メソッドを実行するのですが、ここでリファレンスを見てみましょう。今回は必須のパラメーターが 1 つで、決められた文字列の中から選択して入力します。今回は等級色とするので「GraduatedColorsRenderer」を入力します。五つのパラメーターの項目は図の下にあるリストを参照してください。

sym.updateRenderer("GraduatedColorsRenderer")

RyotaAMBO_9-1757564423465.png

  • GraduatedColorsRenderer→等級色
  • GraduatedSymbolsRenderer→等級シンボル
  • SimpleRenderer→単一シンボル
  • UnClassedColorRenderer→ストレッチ
  • UniqueValueRenderer→個別値

次に、レンダラーの中身を指定するために symbology クラスの renderer プロパティにアクセスします。

RyotaAMBO_10-1757564423467.png

sym.renderer

ここで 、updateRenderer で指定した GraduatedColorsRenderer オブジェクトを見つけられます。次は GraduatedColorsRenderer クラスのリファレンスを見てみましょう。設定できるプロパティの数が多数ありますが、ここでは色分けに使うフィールド、分類の方法、分類の数を指定したいとしましょう。この 3 つを指定するために必要なプロパティ「classificationField」、「classificationMethod」、「classBreaks」を設定します。「classificationField」は等量分類で分類したいため Quantile を指定します。分類方法に関してはデータの分類方法を参照ください。

sym.renderer.classificationField = "total"
sym.renderer.classificationMethod = "Quantile"
sym.renderer.breakCount = 5

最後に Layer クラスの symbology プロパティに、設定を行った symbology オブジェクトを割り当てます。

lyr.symbology = sym

このようにメソッドやプロパティを設定してシンボルを変更する一連の流れを示すスクリプトを作ることができました。ここでは「GraduatedColorsRenderer」を指定し、レンダラーを利用したシンボル変更を行いましたが、「SimpleRenderer」を指定し、symbol プロパティを利用して単一のシンボルを設定するやり方にアレンジすることもできます。

RyotaAMBO_11-1757564423469.png

for lyr in lyrs:
    if lyr.name == "<レイヤー名>":
        sym = lyr.symbology
        sym.updateRenderer("SimpleRenderer")
        sym.renderer.symbol.applySymbolFromGallery("バス ターミナル")
        sym.renderer.symbol.color = {"RGB" : [243,32,41,100]}
        sym.renderer.symbol.outlineColor = {"RGB" : [0,0,0,100]}
        sym.renderer.symbol.size = 21
        lyr.symbology = sym

上のようなシンボルをスクリプト上で作成したい場合には、symbol のリファレンスを確認しながら作成する必要があります。

 

さいごに

本記事では ArcPy のリファレンスの調べ方としてリファレンス ページの構造や見方について解説しました。サンプル コードを自分の環境用にカスタマイズする時や、新たにスクリプトを作成する時に役立つ可能性があります。この記事によって少しでも ArcPy への敷居が下がれば幸いです。

ArcPy 入門ハンズオン

ArcPyを全体通して学びたい方はこちらをご覧ください

ArcPy のブログ記事はこちら

Labels (1)
Version history
Last update:
‎10-01-2025 10:45 PM
Updated by:
Contributors